chrome-dev-tools-patches/terminate-patch.txt
changeset 314 dfd37533036c
equal deleted inserted replaced
313:25282116ebcf 314:dfd37533036c
       
     1 diff -r 42f09aa2b24a org.chromium.debug.core/src/org/chromium/debug/core/model/DebugTargetImpl.java
       
     2 --- a/org.chromium.debug.core/src/org/chromium/debug/core/model/DebugTargetImpl.java	Mon Apr 19 15:00:57 2010 -0700
       
     3 +++ b/org.chromium.debug.core/src/org/chromium/debug/core/model/DebugTargetImpl.java	Wed Apr 21 09:29:57 2010 -0700
       
     4 @@ -187,7 +187,17 @@
       
     5    }
       
     6  
       
     7    public void terminate() throws DebugException {
       
     8 -    disconnect();
       
     9 +    if (workspaceBridgeFactory.canCloseTab()) {
       
    10 +      closeTab();
       
    11 +    } else {
       
    12 +      disconnect();
       
    13 +    }
       
    14 +  }
       
    15 +
       
    16 +  private void closeTab() {
       
    17 +    if (!vmEmbedder.getJavascriptVm().close()) {
       
    18 +      ChromiumDebugPlugin.logWarning(Messages.DebugTargetImpl_BadResultWhileDisconnecting);
       
    19 +    }
       
    20    }
       
    21  
       
    22    public boolean canResume() {
       
    23 diff -r 42f09aa2b24a org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java
       
    24 --- a/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java	Mon Apr 19 15:00:57 2010 -0700
       
    25 +++ b/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java	Wed Apr 21 09:29:57 2010 -0700
       
    26 @@ -56,6 +56,10 @@
       
    27      public JsLabelProvider getLabelProvider() {
       
    28        return LABEL_PROVIDER;
       
    29      }
       
    30 +
       
    31 +    public boolean canCloseTab() {
       
    32 +      return false;
       
    33 +    }
       
    34    }
       
    35  
       
    36    private final IProject debugProject;
       
    37 diff -r 42f09aa2b24a org.chromium.debug.core/src/org/chromium/debug/core/model/WorkspaceBridge.java
       
    38 --- a/org.chromium.debug.core/src/org/chromium/debug/core/model/WorkspaceBridge.java	Mon Apr 19 15:00:57 2010 -0700
       
    39 +++ b/org.chromium.debug.core/src/org/chromium/debug/core/model/WorkspaceBridge.java	Wed Apr 21 09:29:57 2010 -0700
       
    40 @@ -46,6 +46,11 @@
       
    41       * User may cache value of this method.
       
    42       */
       
    43      JsLabelProvider getLabelProvider();
       
    44 +
       
    45 +    /**
       
    46 +     * Returns <code>true</code> if debugger is allowed to close tab. 
       
    47 +     */
       
    48 +    boolean canCloseTab();
       
    49    }
       
    50  
       
    51    /**
       
    52 @@ -100,6 +105,7 @@
       
    53      void breakpointsHit(Collection<? extends Breakpoint> breakpointsHit);
       
    54    }
       
    55  
       
    56 +  
       
    57    /**
       
    58     * Label provider for several debug elements. This object should be stateless.
       
    59     */
       
    60 diff -r 42f09aa2b24a org.chromium.sdk/src/logging.properties
       
    61 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
    62 +++ b/org.chromium.sdk/src/logging.properties	Wed Apr 21 09:29:57 2010 -0700
       
    63 @@ -0,0 +1,2 @@
       
    64 +.level=WARNING
       
    65 +
       
    66 diff -r 42f09aa2b24a org.chromium.sdk/src/org/chromium/sdk/JavascriptVm.java
       
    67 --- a/org.chromium.sdk/src/org/chromium/sdk/JavascriptVm.java	Mon Apr 19 15:00:57 2010 -0700
       
    68 +++ b/org.chromium.sdk/src/org/chromium/sdk/JavascriptVm.java	Wed Apr 21 09:29:57 2010 -0700
       
    69 @@ -58,6 +58,13 @@
       
    70    boolean detach();
       
    71  
       
    72    /**
       
    73 +   * Closes associated tab
       
    74 +   *
       
    75 +   * @return whether the operation succeeded
       
    76 +   */
       
    77 +  boolean close();
       
    78 +
       
    79 +  /**
       
    80     * @return whether the tab is currently attached
       
    81     */
       
    82    boolean isAttached();
       
    83 diff -r 42f09aa2b24a org.chromium.sdk/src/org/chromium/sdk/internal/BrowserTabImpl.java
       
    84 --- a/org.chromium.sdk/src/org/chromium/sdk/internal/BrowserTabImpl.java	Mon Apr 19 15:00:57 2010 -0700
       
    85 +++ b/org.chromium.sdk/src/org/chromium/sdk/internal/BrowserTabImpl.java	Wed Apr 21 09:29:57 2010 -0700
       
    86 @@ -107,6 +107,11 @@
       
    87      return Result.OK == result;
       
    88    }
       
    89  
       
    90 +  public boolean close() {
       
    91 +      Result result = devToolSessionManager.closeTab();
       
    92 +      return Result.OK == result;
       
    93 +  }
       
    94 +
       
    95    public boolean isAttached() {
       
    96      return devToolSessionManager.isAttachedForUi();
       
    97    }
       
    98 diff -r 42f09aa2b24a org.chromium.sdk/src/org/chromium/sdk/internal/StandaloneVmImpl.java
       
    99 --- a/org.chromium.sdk/src/org/chromium/sdk/internal/StandaloneVmImpl.java	Mon Apr 19 15:00:57 2010 -0700
       
   100 +++ b/org.chromium.sdk/src/org/chromium/sdk/internal/StandaloneVmImpl.java	Wed Apr 21 09:29:57 2010 -0700
       
   101 @@ -149,6 +149,10 @@
       
   102      connection.close();
       
   103      return true;
       
   104    }
       
   105 +  
       
   106 +  public boolean close() {
       
   107 +    return detach();
       
   108 +  }
       
   109  
       
   110    public boolean isAttached() {
       
   111      return connectionState == ConnectionState.CONNECTED;
       
   112 diff -r 42f09aa2b24a org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/ChromeDevToolSessionManager.java
       
   113 --- a/org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/ChromeDevToolSessionManager.java	Mon Apr 19 15:00:57 2010 -0700
       
   114 +++ b/org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/ChromeDevToolSessionManager.java	Wed Apr 21 09:29:57 2010 -0700
       
   115 @@ -161,6 +161,7 @@
       
   116            processAttach(json);
       
   117            break;
       
   118          case DETACH:
       
   119 +        case TERMINATE:
       
   120            processDetach(json);
       
   121            break;
       
   122          case DEBUGGER_COMMAND:
       
   123 @@ -172,6 +173,9 @@
       
   124          case CLOSED:
       
   125            processClosed(json);
       
   126            break;
       
   127 +        default:
       
   128 +          System.out.println(message.getContent());
       
   129 +          return;
       
   130        }
       
   131        return;
       
   132      }
       
   133 @@ -264,6 +268,30 @@
       
   134      return result;
       
   135    }
       
   136  
       
   137 +  /**
       
   138 +   * Closes associated browser tab.
       
   139 +   * @return terminate request result
       
   140 +   */
       
   141 +  public Result closeTab() {
       
   142 +      if (attachState.get() != AttachState.NORMAL) {
       
   143 +          toolHandler.onDebuggerDetached();
       
   144 +          return Result.ILLEGAL_TAB_STATE;
       
   145 +      }
       
   146 +      
       
   147 +      String command = V8DebuggerToolMessageFactory.terminate();
       
   148 +      Result result;
       
   149 +      try {
       
   150 +          result = sendSimpleCommandSync(detachCallback, command);
       
   151 +      } catch (AttachmentFailureException e) {
       
   152 +          result = null;
       
   153 +      } finally {
       
   154 +          // Make sure line is cut
       
   155 +          cutTheLineMyself();
       
   156 +      }
       
   157 +      
       
   158 +      return result;
       
   159 +  }
       
   160 +
       
   161    private Result sendSimpleCommandSync(AtomicReference<ResultAwareCallback> callbackReference,
       
   162        String command) throws AttachmentFailureException {
       
   163      final Semaphore sem = new Semaphore(0);
       
   164 @@ -448,6 +476,10 @@
       
   165        return createDebuggerMessage(DebuggerToolCommand.DETACH, null);
       
   166      }
       
   167  
       
   168 +    static String terminate() {
       
   169 +        return createDebuggerMessage(DebuggerToolCommand.TERMINATE, null);
       
   170 +    }
       
   171 +
       
   172      public static String debuggerCommand(String json) {
       
   173        return createDebuggerMessage(DebuggerToolCommand.DEBUGGER_COMMAND, json);
       
   174      }
       
   175 diff -r 42f09aa2b24a org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/DebuggerToolCommand.java
       
   176 --- a/org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/DebuggerToolCommand.java	Mon Apr 19 15:00:57 2010 -0700
       
   177 +++ b/org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/DebuggerToolCommand.java	Wed Apr 21 09:29:57 2010 -0700
       
   178 @@ -13,6 +13,8 @@
       
   179  public enum DebuggerToolCommand {
       
   180    ATTACH("attach"),
       
   181    DETACH("detach"),
       
   182 +  TERMINATE("terminate"),
       
   183 +  DISPATCH("dispatch"),
       
   184    DEBUGGER_COMMAND("debugger_command"),
       
   185    EVALUATE_JAVASCRIPT("evaluate_javascript"),
       
   186  
       
   187 diff -r 42f09aa2b24a org.symbian.tools.wrttools.debug.core/my.txt
       
   188 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   189 +++ b/org.symbian.tools.wrttools.debug.core/my.txt	Wed Apr 21 09:29:57 2010 -0700
       
   190 @@ -0,0 +1,8 @@
       
   191 +This is a patch to close tab on debugger request. I also have a patch for Chrome
       
   192 +Developer Tools that I will submit later.
       
   193 +
       
   194 +Is there any documentation on Chrome APIs? I really doubt I used correct one to 
       
   195 +close the tab.
       
   196 +
       
   197 +This is my first attempt to submit patch to Chromium so I would be greateful for
       
   198 +any feedback.
       
   199 \ No newline at end of file
       
   200 diff -r 42f09aa2b24a org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/ChromeDebugUtils.java
       
   201 --- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/ChromeDebugUtils.java	Mon Apr 19 15:00:57 2010 -0700
       
   202 +++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/ChromeDebugUtils.java	Wed Apr 21 09:29:57 2010 -0700
       
   203 @@ -30,10 +30,25 @@
       
   204  			if (chromeExecutable.isFile()) {
       
   205  				return chromeExecutable.getAbsolutePath();
       
   206  			}
       
   207 +			chromeExecutable = new File(file, getChromiumExecutable());
       
   208 +			if (chromeExecutable.isFile()) {
       
   209 +				return chromeExecutable.getAbsolutePath();
       
   210 +			}
       
   211  		}
       
   212  		return null;
       
   213  	}
       
   214  
       
   215 +	private static String getChromiumExecutable() {
       
   216 +		// Add more ifs as we add support for new platforms
       
   217 +		if (CoreUtil.isMac()) {
       
   218 +			return "Chromium.app/Contents/MacOS/Chromium";
       
   219 +		} else if (CoreUtil.isLinux()) {
       
   220 +			return "chromium";
       
   221 +		} else {
       
   222 +			return "chromium.exe";
       
   223 +		}
       
   224 +	}
       
   225 +
       
   226  	private static String getExecutable() {
       
   227  		// Add more ifs as we add support for new platforms
       
   228  		if (CoreUtil.isMac()) {
       
   229 diff -r 42f09aa2b24a org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ChromeInstancesManager.java
       
   230 --- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ChromeInstancesManager.java	Mon Apr 19 15:00:57 2010 -0700
       
   231 +++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ChromeInstancesManager.java	Wed Apr 21 09:29:57 2010 -0700
       
   232 @@ -44,7 +44,8 @@
       
   233              "--disable-extenions", // Use standard UI, should also improve speed and stability
       
   234              "--disable-plugins", // Run faster!
       
   235              "--activate-on-launch", // Bring to front on Mac
       
   236 -            "--always-enable-dev-tools", "--no-default-browser-check", // Our users don't need this nagging
       
   237 +            "--exit-on-no-windows", // Bring to front on Mac
       
   238 +            "--no-default-browser-check", // Our users don't need this nagging
       
   239              "--no-first-run", // We don't care
       
   240              "--app=%s" // Here we will have widget URI as --app argument
       
   241      };
       
   242 diff -r 42f09aa2b24a org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/WRTProjectWorkspaceBridge.java
       
   243 --- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/WRTProjectWorkspaceBridge.java	Mon Apr 19 15:00:57 2010 -0700
       
   244 +++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/WRTProjectWorkspaceBridge.java	Wed Apr 21 09:29:57 2010 -0700
       
   245 @@ -49,6 +49,10 @@
       
   246  			return new WrtLabelProvider();
       
   247  		}
       
   248  
       
   249 +		public boolean canCloseTab() {
       
   250 +			return true;
       
   251 +		}
       
   252 +
       
   253  	}
       
   254  
       
   255  //	public final static String DEBUG_MODEL_ID = VProjectWorkspaceBridge.DEBUG_MODEL_ID;
       
   256 diff -r 42f09aa2b24a org.symbian.tools.wrttools.product/launch/WRT IDE Product (Mac OS X).launch
       
   257 --- a/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Mac OS X).launch	Mon Apr 19 15:00:57 2010 -0700
       
   258 +++ b/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Mac OS X).launch	Wed Apr 21 09:29:57 2010 -0700
       
   259 @@ -1,4 +1,4 @@
       
   260 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
       
   261 +<?xml version="1.0" encoding="UTF-8"?>
       
   262  <launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
       
   263  <booleanAttribute key="append.args" value="true"/>
       
   264  <booleanAttribute key="askclear" value="true"/>