Provide option to disable Mac OS 10.7 application resume when using
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Dec 2011 23:47:00 +0000 (23:47 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Dec 2011 23:47:00 +0000 (23:47 +0000)
{debug, run}-{safari, minibrowser, test-runner, test-webkit-api}, and run-webkit-app
https://bugs.webkit.org/show_bug.cgi?id=66902

Reviewed by David Kilzer.

Add an optional command line argument --no-saved-state to disable
application resume (state restoration) for the session on Mac OS 10.7.

For instance, when debugging an issue in Safari it is useful to be able
to temporarily disable application resume. Currently you can disable
application resume when launching Safari from within Xcode. We should
expose a similar option in our command line tools.

* Scripts/debug-minibrowser: Call printHelpAndExitForRunAndDebugWebKitAppIfNeeded()
to print a help message and exit() if the command line argument --help was given.
* Scripts/debug-safari: Ditto.
* Scripts/debug-test-runner: Ditto.
* Scripts/run-minibrowser: Ditto.
* Scripts/run-safari: Ditto.
* Scripts/run-test-runner: Ditto.
* Scripts/run-test-webkit-api: Ditto.
* Scripts/run-webkit-app: Ditto.
* Scripts/webkitdirs.pm:
(printHelpAndExitForRunAndDebugWebKitAppIfNeeded): Added.
(argumentsForRunAndDebugMacWebKitApp): Added.
(runMacWebKitApp): If the --no-saved-state command line argument was given then
disable application resume for the session.
(execMacWebKitAppForDebugging): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@103640 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/debug-minibrowser
Tools/Scripts/debug-safari
Tools/Scripts/debug-test-runner
Tools/Scripts/run-minibrowser
Tools/Scripts/run-safari
Tools/Scripts/run-test-runner
Tools/Scripts/run-test-webkit-api
Tools/Scripts/run-webkit-app
Tools/Scripts/webkitdirs.pm

index 7a307ce..9953a7a 100644 (file)
@@ -1,3 +1,35 @@
+2011-12-23  Daniel Bates  <dbates@webkit.org>
+
+        Provide option to disable Mac OS 10.7 application resume when using
+        {debug, run}-{safari, minibrowser, test-runner, test-webkit-api}, and run-webkit-app
+        https://bugs.webkit.org/show_bug.cgi?id=66902
+
+        Reviewed by David Kilzer.
+
+        Add an optional command line argument --no-saved-state to disable
+        application resume (state restoration) for the session on Mac OS 10.7.
+
+        For instance, when debugging an issue in Safari it is useful to be able
+        to temporarily disable application resume. Currently you can disable
+        application resume when launching Safari from within Xcode. We should
+        expose a similar option in our command line tools.
+
+        * Scripts/debug-minibrowser: Call printHelpAndExitForRunAndDebugWebKitAppIfNeeded()
+        to print a help message and exit() if the command line argument --help was given.
+        * Scripts/debug-safari: Ditto.
+        * Scripts/debug-test-runner: Ditto.
+        * Scripts/run-minibrowser: Ditto.
+        * Scripts/run-safari: Ditto.
+        * Scripts/run-test-runner: Ditto.
+        * Scripts/run-test-webkit-api: Ditto.
+        * Scripts/run-webkit-app: Ditto.
+        * Scripts/webkitdirs.pm:
+        (printHelpAndExitForRunAndDebugWebKitAppIfNeeded): Added.
+        (argumentsForRunAndDebugMacWebKitApp): Added.
+        (runMacWebKitApp): If the --no-saved-state command line argument was given then
+        disable application resume for the session.
+        (execMacWebKitAppForDebugging): Ditto.
+
 2011-12-23  Dmitry Lomov  <dslomov@google.com>
 
         [WebWorkers][Chromium] Remove remains of cross-process dedicated worker implementation.
index 06685b4..93ead91 100755 (executable)
@@ -33,6 +33,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 exit exitStatus(debugMiniBrowser());
index bb2f59f..66532ae 100755 (executable)
@@ -33,6 +33,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 exit exitStatus(debugSafari());
index 5a9b7f9..d78a24c 100755 (executable)
@@ -30,6 +30,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 exit exitStatus(debugWebKitTestRunner());
index c2fd412..c841651 100755 (executable)
@@ -33,6 +33,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 exit exitStatus(runMiniBrowser());
index d850a4a..8688a93 100755 (executable)
@@ -33,6 +33,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 # Check to see that all the frameworks are built.
index 98fa3b6..b474eb5 100755 (executable)
@@ -30,6 +30,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 exit exitStatus(runWebKitTestRunner());
index dfd85d5..71ff42d 100755 (executable)
@@ -33,6 +33,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 exit exitStatus(runTestWebKitAPI());
index 17a624b..d0c17f5 100755 (executable)
@@ -33,6 +33,8 @@ use FindBin;
 use lib $FindBin::Bin;
 use webkitdirs;
 
+printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
+
 setConfiguration();
 
 die "Did not specify an application to open (e.g. run-webkit-app AppName).\n" unless length($ARGV[0]) > 0;
index 1ec1955..c3775f6 100755 (executable)
@@ -57,6 +57,7 @@ BEGIN {
        &currentSVNRevision
        &debugSafari
        &passedConfiguration
+       &printHelpAndExitForRunAndDebugWebKitAppIfNeeded
        &productDir
        &runMacWebKitApp
        &safariPath
@@ -2251,6 +2252,24 @@ sub setPathForRunningWebKitApp
     }
 }
 
+sub printHelpAndExitForRunAndDebugWebKitAppIfNeeded()
+{
+    return unless checkForArgumentAndRemoveFromARGV("--help");
+    print STDERR <<EOF;
+Usage: @{[basename($0)]} [options] [args ...]
+  --help                Show this help message
+  --no-saved-state      Disable application resume for the session on Mac OS 10.7
+EOF
+    exit(1);
+}
+
+sub argumentsForRunAndDebugMacWebKitApp()
+{
+    my @args = @ARGV;
+    push @args, ("-ApplePersistenceIgnoreState", "YES") if isLion() && checkForArgumentAndRemoveFromArrayRef("--no-saved-state", \@args);
+    return @args;
+}
+
 sub runMacWebKitApp($;$)
 {
     my ($appPath, $useOpenCommand) = @_;
@@ -2259,12 +2278,12 @@ sub runMacWebKitApp($;$)
     $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
     $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
     if (defined($useOpenCommand) && $useOpenCommand == USE_OPEN_COMMAND) {
-        return system("open", "-W", "-a", $appPath, "--args", @ARGV);
+        return system("open", "-W", "-a", $appPath, "--args", argumentsForRunAndDebugMacWebKitApp());
     }
     if (architecture()) {
-        return system "arch", "-" . architecture(), $appPath, @ARGV;
+        return system "arch", "-" . architecture(), $appPath, argumentsForRunAndDebugMacWebKitApp();
     }
-    return system { $appPath } $appPath, @ARGV;
+    return system { $appPath } $appPath, argumentsForRunAndDebugMacWebKitApp();
 }
 
 sub execMacWebKitAppForDebugging($)
@@ -2279,7 +2298,7 @@ sub execMacWebKitAppForDebugging($)
     $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
     $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
     my @architectureFlags = ("-arch", architecture());
-    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath, @ARGV or die;
+    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath, argumentsForRunAndDebugMacWebKitApp() or die;
 }
 
 sub debugSafari