<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[208304] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/208304">208304</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2016-11-02 14:51:36 -0700 (Wed, 02 Nov 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Web Inspector: Include DebuggerAgent in Workers - see, pause, and step through scripts
https://bugs.webkit.org/show_bug.cgi?id=164136
<rdar://problem/29028462>
Reviewed by Brian Burg.
Source/WebCore:
Tests: inspector/worker/debugger-pause.html
inspector/worker/debugger-scripts.html
* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* inspector/InspectorAllInOne.cpp:
New file.
* inspector/PageDebuggerAgent.h:
* inspector/WorkerDebuggerAgent.cpp: Added.
(WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::~WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::breakpointActionLog):
(WebCore::WorkerDebuggerAgent::injectedScriptForEval):
* inspector/WorkerDebuggerAgent.h: Added.
DebuggerAgent customizations for Workers.
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
Add the new agent.
* inspector/WorkerScriptDebugServer.cpp:
(WebCore::WorkerScriptDebugServer::runEventLoopWhilePaused):
Implement the nested run loop for Workers.
Source/WebInspectorUI:
By implementing DebuggerAgent, Workers will inform the frontend about
Scripts that evaluate in the Worker's VM and the Worker VM can pause
and send the pausing CallFrames to the frontend. This means that
WebInspector.Script and WebInspector.CallFrame will need to be made
target aware. This also means that each Target will have its own
set of debugger data, such as the list of scripts and pause data
like the pause reason / call frames. Previously all this data was
managed by DebuggerManager.
With this change we split that data out of DebuggerManager to be
per-target DebuggerData. DebuggerManager keeps `activeCallFrame`
but the list of scripts and pause data have moved into `DebuggerData`
which is per-target, accessed through DebuggerManager's new
dataForTarget(target) method.
Finally we make a few changes to the UserInterface to make Workers
and their scripts, appear grouped together. The Resources sidebar
previously had a single top level item for the Main Frame, which
has all its resources as its children (potentially grouped into
folders). With this change, each Worker gets its own top level
item as well, and the Worker's subresources (imported scripts)
become its children.
We also now associate a single mainResource with Targets. In the
case of Workers, we assume and assert that this is a Script. If
this were to ever change we would need to adjust the assumptions.
* UserInterface/Main.html:
* UserInterface/Test.html:
New files.
* UserInterface/Base/Main.js:
* UserInterface/Test/Test.js:
Add WebInspector.assumingMainTarget to fill in all the places where
we assume the main target right now, but would need to handle non-main
targets as other agents are implemented in workers. For example profile
data that assumes the main target right now could be worker targets
when we implement ScriptProfiler / Heap agents.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.WorkerConnection):
* UserInterface/Protocol/Target.js:
(WebInspector.Target):
(WebInspector.Target.prototype.get DebuggerAgent):
(WebInspector.Target.prototype.get mainResource):
(WebInspector.Target.prototype.set mainResource):
(WebInspector.WorkerTarget.prototype.initialize):
(WebInspector.WorkerTarget):
Include DebuggerAgent in Targets.
Include a mainResource for Worker Targets.
* UserInterface/Protocol/DebuggerObserver.js:
(WebInspector.DebuggerObserver.prototype.scriptParsed):
(WebInspector.DebuggerObserver.prototype.breakpointResolved):
(WebInspector.DebuggerObserver.prototype.paused):
(WebInspector.DebuggerObserver.prototype.resumed):
Pass the target on to managers when necessary.
* UserInterface/Models/DebuggerData.js: Added.
(WebInspector.DebuggerData):
(WebInspector.DebuggerData.prototype.get target):
(WebInspector.DebuggerData.prototype.get callFrames):
(WebInspector.DebuggerData.prototype.get pauseReason):
(WebInspector.DebuggerData.prototype.get pauseData):
(WebInspector.DebuggerData.prototype.get scripts):
(WebInspector.DebuggerData.prototype.scriptForIdentifier):
(WebInspector.DebuggerData.prototype.scriptsForURL):
(WebInspector.DebuggerData.prototype.reset):
(WebInspector.DebuggerData.prototype.addScript):
(WebInspector.DebuggerData.prototype.pause):
(WebInspector.DebuggerData.prototype.unpause):
Extract per-target data from DebuggerManager. This includes the list
of scripts evaluated in a Target, and any pause data for this target
such as the pause reason and call frames.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.dataForTarget):
(WebInspector.DebuggerManager.prototype.get pauseReason): Deleted.
(WebInspector.DebuggerManager.prototype.get pauseData): Deleted.
(WebInspector.DebuggerManager.prototype.get callFrames): Deleted.
(WebInspector.DebuggerManager.prototype.reset):
New way to access per-target debugger data.
(WebInspector.DebuggerManager.prototype.initializeTarget):
When a new Target is created, synchronize frontend state with the target.
Things like the list of breakpoints and global breakpoint states.
(WebInspector.DebuggerManager.prototype.scriptForIdentifier):
(WebInspector.DebuggerManager.prototype.scriptsForURL):
Convenience accessors for scripts must now provide a Target.
(WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
This is a convenience accessors for a list of all scripts across all targets
so this handles getting the list across all targets.
(WebInspector.DebuggerManager.prototype.pause):
(WebInspector.DebuggerManager.prototype.resume):
(WebInspector.DebuggerManager.prototype.stepOver):
(WebInspector.DebuggerManager.prototype.stepInto):
(WebInspector.DebuggerManager.prototype.stepOut):
(WebInspector.DebuggerManager.prototype.continueToLocation):
Stepping commands affect the current target with the active call frame.
Eventually we will change Pause and Resume behavior to affect all targets.
(WebInspector.DebuggerManager.prototype.addBreakpoint):
(WebInspector.DebuggerManager.prototype.breakpointResolved):
(WebInspector.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
(WebInspector.DebuggerManager.prototype._setBreakpoint):
(WebInspector.DebuggerManager.prototype._removeBreakpoint):
Breakpoints should be set on all targets, but we need a way
to set them on a specific target, when initializing an
individual target when we want to inform that single target
of all of the breakpoints.
(WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WebInspector.DebuggerManager.prototype._updateBreakOnExceptionsState):
Changing global breakpoint state should inform all targets.
(WebInspector.DebuggerManager.prototype.scriptDidParse):
Associate Scripts with a Target. Identify the main resource of a
Worker Target and set it as soon as we can.
(WebInspector.DebuggerManager.prototype.debuggerDidPause):
(WebInspector.DebuggerManager.prototype.debuggerDidResume):
(WebInspector.DebuggerManager.prototype._sourceCodeLocationFromPayload):
(WebInspector.DebuggerManager.prototype._scopeChainFromPayload):
(WebInspector.DebuggerManager.prototype._scopeChainNodeFromPayload):
(WebInspector.DebuggerManager.prototype._mainResourceDidChange):
(WebInspector.DebuggerManager.prototype._didResumeInternal):
Pausing and resuming now happens per-target, so associate
created model objects (CallFrame, ScopeChain objects) and any
other necessary data with the target.
* UserInterface/Models/Breakpoint.js:
(WebInspector.Breakpoint):
(WebInspector.Breakpoint.prototype.get target):
(WebInspector.Breakpoint.prototype.get info):
* UserInterface/Models/CallFrame.js:
(WebInspector.CallFrame):
(WebInspector.CallFrame.prototype.get target):
(WebInspector.CallFrame.fromDebuggerPayload):
(WebInspector.CallFrame.fromPayload):
* UserInterface/Models/ConsoleMessage.js:
(WebInspector.ConsoleMessage):
* UserInterface/Models/Script.js:
(WebInspector.Script):
(WebInspector.Script.prototype.get target):
(WebInspector.Script.prototype.isMainResource):
(WebInspector.Script.prototype.requestContentFromBackend):
(WebInspector.Script.prototype._resolveResource):
* UserInterface/Models/StackTrace.js:
(WebInspector.StackTrace.fromPayload):
(WebInspector.StackTrace.fromString):
* UserInterface/Models/ProbeManager.js:
(WebInspector.ProbeManager.prototype.didSampleProbe):
* UserInterface/Models/Probe.js:
(WebInspector.ProbeSample):
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._appendLocationLink):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
Associate model objects with a specific target where necessary.
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
* UserInterface/Controllers/RuntimeManager.js:
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.prototype.findFunctionSourceCodeLocation):
Use target specific DebuggerAgent where necessary.
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
* UserInterface/Controllers/TimelineManager.js:
(WebInspector.TimelineManager.prototype._callFramesFromPayload):
* UserInterface/Models/ScriptTimelineRecord.js:
(WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
* UserInterface/Views/EventListenerSectionGroup.js:
(WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
(WebInspector.EventListenerSectionGroup):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.node.shortestGCRootPath.):
(WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populateWindowPreview):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
* UserInterface/Views/ProfileDataGridNode.js:
(WebInspector.ProfileDataGridNode.prototype.iconClassName):
(WebInspector.ProfileDataGridNode.prototype.filterableDataForColumn):
(WebInspector.ProfileDataGridNode.prototype._displayContent):
Use assumed main target and audit these when the Worker gets more Agents.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype._initiatorSourceCodeLocationFromPayload):
This will always be the main target because only the main target
has access to the DOM.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.get target):
(WebInspector.SourceCodeTextEditor.prototype.customPerformSearch):
(WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
(WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression.populate):
(WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression):
(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction):
Update target specific actions to use the proper target's agents.
* UserInterface/Views/TargetTreeElement.js: Added.
(WebInspector.TargetTreeElement):
(WebInspector.TargetTreeElement.prototype.get target):
(WebInspector.TargetTreeElement.prototype.onexpand):
(WebInspector.TargetTreeElement.prototype.oncollapse):
Add a new tree element for a Target. We currently assume that the
main resource for a Target will be a Script right now, as is the
case for Web Workers. This simply remembers its expanded or
collapsed state and has a better icon.
* UserInterface/Views/ResourceIcons.css:
(body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon):
(body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon):
* UserInterface/Images/WorkerScript.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png.
* UserInterface/Images/WorkerScript@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png.
* UserInterface/Images/WorkerScriptLarge.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png.
* UserInterface/Images/WorkerScriptLarge@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png.
Improve icon for a Worker's main resource script.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
(WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
(WebInspector.ResourceSidebarPanel.prototype._addScriptForNonMainTarget):
(WebInspector.ResourceSidebarPanel.prototype._addTargetWithMainResource):
(WebInspector.ResourceSidebarPanel.prototype._targetRemoved):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts):
(WebInspector.SearchSidebarPanel.prototype._searchTreeElementForScript):
* UserInterface/Views/OpenResourceDialog.js:
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline.createTreeElement):
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline):
(WebInspector.OpenResourceDialog.prototype.didDismissDialog):
(WebInspector.OpenResourceDialog.prototype.didPresentDialog):
(WebInspector.OpenResourceDialog.prototype._addResourcesForFrame):
(WebInspector.OpenResourceDialog.prototype._addScriptsForTarget):
(WebInspector.OpenResourceDialog.prototype._scriptAdded):
(WebInspector.OpenResourceDialog):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
Include scripts from non-main targets in sidebars.
LayoutTests:
* inspector/worker/debugger-pause-expected.txt: Added.
* inspector/worker/debugger-pause.html: Added.
* inspector/worker/debugger-scripts-expected.txt: Added.
* inspector/worker/debugger-scripts.html: Added.
* inspector/worker/resources/worker-debugger-pause.js: Added.
* inspector/worker/resources/worker-import-1.js: Added.
* inspector/worker/resources/worker-scripts.js: Added.
New tests for Debugger features in a Worker.
* inspector/debugger/break-on-exception-throw-in-promise.html:
* inspector/debugger/break-on-exception.html:
* inspector/debugger/break-on-uncaught-exception.html:
* inspector/debugger/evaluateOnCallFrame-CommandLineAPI.html:
* inspector/debugger/pause-reason.html:
* inspector/debugger/paused-scopes.html:
* inspector/debugger/resources/log-pause-location.js:
* inspector/debugger/stepping/stepInto.html:
* inspector/debugger/stepping/stepOut.html:
* inspector/debugger/stepping/stepOver.html:
* inspector/debugger/stepping/stepping-through-autoContinue-breakpoint.html:
* inspector/debugger/tail-deleted-frames-from-vm-entry.html:
* inspector/debugger/tail-deleted-frames-this-value.html:
* inspector/debugger/tail-deleted-frames.html:
* inspector/debugger/tail-recursion.html:
Most debugger data moved from DebuggerManager into DebuggerData for a target.
Update tests that access such data like pauseReason / pauseData / callFrames.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggerbreakonexceptionthrowinpromisehtml">trunk/LayoutTests/inspector/debugger/break-on-exception-throw-in-promise.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggerbreakonexceptionhtml">trunk/LayoutTests/inspector/debugger/break-on-exception.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggerbreakonuncaughtexceptionhtml">trunk/LayoutTests/inspector/debugger/break-on-uncaught-exception.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggerevaluateOnCallFrameCommandLineAPIhtml">trunk/LayoutTests/inspector/debugger/evaluateOnCallFrame-CommandLineAPI.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggerpausereasonhtml">trunk/LayoutTests/inspector/debugger/pause-reason.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggerpausedscopeshtml">trunk/LayoutTests/inspector/debugger/paused-scopes.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggerresourceslogpauselocationjs">trunk/LayoutTests/inspector/debugger/resources/log-pause-location.js</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggersteppingstepIntohtml">trunk/LayoutTests/inspector/debugger/stepping/stepInto.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggersteppingstepOuthtml">trunk/LayoutTests/inspector/debugger/stepping/stepOut.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggersteppingstepOverhtml">trunk/LayoutTests/inspector/debugger/stepping/stepOver.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggersteppingsteppingthroughautoContinuebreakpointhtml">trunk/LayoutTests/inspector/debugger/stepping/stepping-through-autoContinue-breakpoint.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggertaildeletedframesfromvmentryhtml">trunk/LayoutTests/inspector/debugger/tail-deleted-frames-from-vm-entry.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggertaildeletedframesthisvaluehtml">trunk/LayoutTests/inspector/debugger/tail-deleted-frames-this-value.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggertaildeletedframeshtml">trunk/LayoutTests/inspector/debugger/tail-deleted-frames.html</a></li>
<li><a href="#trunkLayoutTestsinspectordebuggertailrecursionhtml">trunk/LayoutTests/inspector/debugger/tail-recursion.html</a></li>
<li><a href="#trunkLayoutTestsinspectormodelremoteobjectweakcollectionhtml">trunk/LayoutTests/inspector/model/remote-object-weak-collection.html</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerconsolebasicexpectedtxt">trunk/LayoutTests/inspector/worker/console-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerconsolebasichtml">trunk/LayoutTests/inspector/worker/console-basic.html</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerGlobalScopeCustomcpp">trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorAllInOnecpp">trunk/Source/WebCore/inspector/InspectorAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageDebuggerAgenth">trunk/Source/WebCore/inspector/PageDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerInspectorControllercpp">trunk/Source/WebCore/inspector/WorkerInspectorController.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerScriptDebugServercpp">trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseMainjs">trunk/Source/WebInspectorUI/UserInterface/Base/Main.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersDebuggerManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersFrameResourceManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersJavaScriptRuntimeCompletionProviderjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersProbeManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/ProbeManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersRuntimeManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/RuntimeManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersTimelineManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceMainhtml">trunk/Source/WebInspectorUI/UserInterface/Main.html</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsBreakpointjs">trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsCallFramejs">trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsConsoleMessagejs">trunk/Source/WebInspectorUI/UserInterface/Models/ConsoleMessage.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsProbejs">trunk/Source/WebInspectorUI/UserInterface/Models/Probe.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsScriptjs">trunk/Source/WebInspectorUI/UserInterface/Models/Script.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsScriptTimelineRecordjs">trunk/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsStackTracejs">trunk/Source/WebInspectorUI/UserInterface/Models/StackTrace.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceProtocolConnectionjs">trunk/Source/WebInspectorUI/UserInterface/Protocol/Connection.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceProtocolDebuggerObserverjs">trunk/Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceProtocolRemoteObjectjs">trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceProtocolTargetjs">trunk/Source/WebInspectorUI/UserInterface/Protocol/Target.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceTestTestjs">trunk/Source/WebInspectorUI/UserInterface/Test/Test.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceTesthtml">trunk/Source/WebInspectorUI/UserInterface/Test.html</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsConsoleMessageViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsEventListenerSectionGroupjs">trunk/Source/WebInspectorUI/UserInterface/Views/EventListenerSectionGroup.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsHeapSnapshotInstanceDataGridNodejs">trunk/Source/WebInspectorUI/UserInterface/Views/HeapSnapshotInstanceDataGridNode.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeBaseTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsOpenResourceDialogjs">trunk/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsProfileDataGridNodejs">trunk/Source/WebInspectorUI/UserInterface/Views/ProfileDataGridNode.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsResourceIconscss">trunk/Source/WebInspectorUI/UserInterface/Views/ResourceIcons.css</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsResourceSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsScriptTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTreeElement.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsSearchSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/SearchSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsSourceCodeTextEditorjs">trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsinspectorworkerdebuggerpauseexpectedtxt">trunk/LayoutTests/inspector/worker/debugger-pause-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerdebuggerpausehtml">trunk/LayoutTests/inspector/worker/debugger-pause.html</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerdebuggerscriptsexpectedtxt">trunk/LayoutTests/inspector/worker/debugger-scripts-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerdebuggerscriptshtml">trunk/LayoutTests/inspector/worker/debugger-scripts.html</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerresourcesworkerdebuggerpausejs">trunk/LayoutTests/inspector/worker/resources/worker-debugger-pause.js</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerresourcesworkerimport1js">trunk/LayoutTests/inspector/worker/resources/worker-import-1.js</a></li>
<li><a href="#trunkLayoutTestsinspectorworkerresourcesworkerscriptsjs">trunk/LayoutTests/inspector/worker/resources/worker-scripts.js</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerDebuggerAgentcpp">trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerDebuggerAgenth">trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerScriptpng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript.png</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerScript2xpng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript@2x.png</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerScriptLargepng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge.png</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerScriptLarge2xpng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge@2x.png</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsDebuggerDatajs">trunk/Source/WebInspectorUI/UserInterface/Models/DebuggerData.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsTargetTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/TargetTreeElement.js</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentpng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocument2xpng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentLargepng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentLarge2xpng">trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/ChangeLog        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2016-11-02 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Include DebuggerAgent in Workers - see, pause, and step through scripts
+ https://bugs.webkit.org/show_bug.cgi?id=164136
+ <rdar://problem/29028462>
+
+ Reviewed by Brian Burg.
+
+ * inspector/worker/debugger-pause-expected.txt: Added.
+ * inspector/worker/debugger-pause.html: Added.
+ * inspector/worker/debugger-scripts-expected.txt: Added.
+ * inspector/worker/debugger-scripts.html: Added.
+ * inspector/worker/resources/worker-debugger-pause.js: Added.
+ * inspector/worker/resources/worker-import-1.js: Added.
+ * inspector/worker/resources/worker-scripts.js: Added.
+ New tests for Debugger features in a Worker.
+
+ * inspector/debugger/break-on-exception-throw-in-promise.html:
+ * inspector/debugger/break-on-exception.html:
+ * inspector/debugger/break-on-uncaught-exception.html:
+ * inspector/debugger/evaluateOnCallFrame-CommandLineAPI.html:
+ * inspector/debugger/pause-reason.html:
+ * inspector/debugger/paused-scopes.html:
+ * inspector/debugger/resources/log-pause-location.js:
+ * inspector/debugger/stepping/stepInto.html:
+ * inspector/debugger/stepping/stepOut.html:
+ * inspector/debugger/stepping/stepOver.html:
+ * inspector/debugger/stepping/stepping-through-autoContinue-breakpoint.html:
+ * inspector/debugger/tail-deleted-frames-from-vm-entry.html:
+ * inspector/debugger/tail-deleted-frames-this-value.html:
+ * inspector/debugger/tail-deleted-frames.html:
+ * inspector/debugger/tail-recursion.html:
+ Most debugger data moved from DebuggerManager into DebuggerData for a target.
+ Update tests that access such data like pauseReason / pauseData / callFrames.
+
</ins><span class="cx"> 2016-11-02 Ryosuke Niwa <rniwa@webkit.org>
</span><span class="cx">
</span><span class="cx"> Load stylesheets in link elements inside a connected shadow tree
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggerbreakonexceptionthrowinpromisehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/break-on-exception-throw-in-promise.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/break-on-exception-throw-in-promise.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/break-on-exception-throw-in-promise.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -18,7 +18,8 @@
</span><span class="cx"> test: (resolve, reject) => {
</span><span class="cx"> InspectorTest.evaluateInPage(expression);
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.expectThat(WebInspector.debuggerManager.pauseReason === "exception", "Should pause for exception.");
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ InspectorTest.expectThat(targetData.pauseReason === "exception", "Should pause for exception.");
</ins><span class="cx"> let callFrame = WebInspector.debuggerManager.activeCallFrame;
</span><span class="cx"> let name = callFrame.functionName || "<anonymous>";
</span><span class="cx"> let location = callFrame.sourceCodeLocation;
</span><span class="lines">@@ -77,9 +78,11 @@
</span><span class="cx">
</span><span class="cx"> phase++;
</span><span class="cx">
</span><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+
</ins><span class="cx"> // Pause at throw inside then.
</span><span class="cx"> if (phase === 1) {
</span><del>- InspectorTest.expectThat(WebInspector.debuggerManager.pauseReason === "exception", "Should pause for exception.");
</del><ins>+ InspectorTest.expectThat(targetData.pauseReason === "exception", "Should pause for exception.");
</ins><span class="cx"> logPauseLocation();
</span><span class="cx"> WebInspector.debuggerManager.resume();
</span><span class="cx"> return;
</span><span class="lines">@@ -87,7 +90,7 @@
</span><span class="cx">
</span><span class="cx"> // Pause at re-throw inside catch.
</span><span class="cx"> if (phase === 2) {
</span><del>- InspectorTest.expectThat(WebInspector.debuggerManager.pauseReason === "exception", "Should pause for exception.");
</del><ins>+ InspectorTest.expectThat(targetData.pauseReason === "exception", "Should pause for exception.");
</ins><span class="cx"> logPauseLocation();
</span><span class="cx"> WebInspector.debuggerManager.resume().then(() => {
</span><span class="cx"> WebInspector.debuggerManager.removeEventListener(WebInspector.DebuggerManager.Event.CallFramesDidChange, listener);
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggerbreakonexceptionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/break-on-exception.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/break-on-exception.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/break-on-exception.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -18,7 +18,8 @@
</span><span class="cx"> test: (resolve, reject) => {
</span><span class="cx"> InspectorTest.evaluateInPage(expression);
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.expectThat(WebInspector.debuggerManager.pauseReason === "exception", "Should pause for exception.");
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ InspectorTest.expectThat(targetData.pauseReason === "exception", "Should pause for exception.");
</ins><span class="cx"> let callFrame = WebInspector.debuggerManager.activeCallFrame;
</span><span class="cx"> let name = callFrame.functionName || "<anonymous>";
</span><span class="cx"> let location = callFrame.sourceCodeLocation;
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggerbreakonuncaughtexceptionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/break-on-uncaught-exception.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/break-on-uncaught-exception.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/break-on-uncaught-exception.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -18,7 +18,8 @@
</span><span class="cx"> test: (resolve, reject) => {
</span><span class="cx"> InspectorTest.evaluateInPage(expression);
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.expectThat(WebInspector.debuggerManager.pauseReason === "exception", "Should pause for exception.");
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ InspectorTest.expectThat(targetData.pauseReason === "exception", "Should pause for exception.");
</ins><span class="cx"> let callFrame = WebInspector.debuggerManager.activeCallFrame;
</span><span class="cx"> let name = callFrame.functionName || "<anonymous>";
</span><span class="cx"> let location = callFrame.sourceCodeLocation;
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggerevaluateOnCallFrameCommandLineAPIhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/evaluateOnCallFrame-CommandLineAPI.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/evaluateOnCallFrame-CommandLineAPI.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/evaluateOnCallFrame-CommandLineAPI.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -61,12 +61,14 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function testEvaluateOnNonStrictCallFrame(expression, callback) {
</span><del>- let callFrame = WebInspector.debuggerManager.callFrames[1]; // foo
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ let callFrame = targetData.callFrames[1]; // foo
</ins><span class="cx"> testEvaluateOnCallFrame(callFrame, expression, callback);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function testEvaluateOnNonStrictCallFrameThrows(expression, callback) {
</span><del>- let callFrame = WebInspector.debuggerManager.callFrames[1]; // foo
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ let callFrame = targetData.callFrames[1]; // foo
</ins><span class="cx"> testEvaluateOnCallFrameThrows(callFrame, expression, callback);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -76,8 +78,9 @@
</span><span class="cx"> name: "ValidateCallFrames",
</span><span class="cx"> description: "Test6 evaluate can access CommandLineAPI methods.",
</span><span class="cx"> test: (resolve, reject) => {
</span><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
</ins><span class="cx"> InspectorTest.expectThat(WebInspector.debuggerManager.activeCallFrame.functionName === "bar", "Strict call frame is `bar`.");
</span><del>- InspectorTest.expectThat(WebInspector.debuggerManager.callFrames[1].functionName === "foo", "Non-strict call frame is `foo`.");
</del><ins>+ InspectorTest.expectThat(targetData.callFrames[1].functionName === "foo", "Non-strict call frame is `foo`.");
</ins><span class="cx">
</span><span class="cx"> testEvaluateOnStrictCallFrame("a", (x) => { InspectorTest.expectThat(x === 6, "`a` should be 5 in `bar`."); });
</span><span class="cx"> testEvaluateOnStrictCallFrame("b", (x) => { InspectorTest.expectThat(x === 123, "`b` should be 123 in `bar`."); });
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggerpausereasonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/pause-reason.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/pause-reason.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/pause-reason.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -62,10 +62,11 @@
</span><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Paused, function(event) {
</span><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
</ins><span class="cx"> InspectorTest.log("PAUSE #" + (++pauses));
</span><del>- InspectorTest.log(" REASON: " + WebInspector.debuggerManager.pauseReason);
- if (WebInspector.debuggerManager.pauseData)
- InspectorTest.log(" DATA: " + JSON.stringify(sanitizePauseData(WebInspector.debuggerManager.pauseData)));
</del><ins>+ InspectorTest.log(" REASON: " + targetData.pauseReason);
+ if (targetData.pauseData)
+ InspectorTest.log(" DATA: " + JSON.stringify(sanitizePauseData(targetData.pauseData)));
</ins><span class="cx"> else
</span><span class="cx"> InspectorTest.log(" NO DATA");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggerpausedscopeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/paused-scopes.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/paused-scopes.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/paused-scopes.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -72,7 +72,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function dumpCallFrames() {
</span><del>- let callFrames = WebInspector.debuggerManager.callFrames;
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ let callFrames = targetData.callFrames;
</ins><span class="cx"> let chain = Promise.resolve();
</span><span class="cx"> for (let callFrame of callFrames)
</span><span class="cx"> chain = chain.then(() => dumpCallFrame(callFrame));
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggerresourceslogpauselocationjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/resources/log-pause-location.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/resources/log-pause-location.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/resources/log-pause-location.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> InspectorTest.log(`EXPRESSION: ${expression}`);
</span><span class="cx"> InspectorTest.log(`STEPS: ${steps.join(", ")}`);
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.pauseReason})`);
</del><ins>+ InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target).pauseReason})`);
</ins><span class="cx"> });
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Resumed, (event) => {
</span><span class="cx"> InspectorTest.log("RESUMED");
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggersteppingstepIntohtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/stepping/stepInto.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/stepping/stepInto.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/stepping/stepInto.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> test(resolve, reject) {
</span><span class="cx"> InspectorTest.evaluateInPage(expression);
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.pauseReason})`);
</del><ins>+ InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target).pauseReason})`);
</ins><span class="cx"> });
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Resumed, (event) => {
</span><span class="cx"> InspectorTest.log("RESUMED");
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggersteppingstepOuthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/stepping/stepOut.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/stepping/stepOut.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/stepping/stepOut.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> test(resolve, reject) {
</span><span class="cx"> InspectorTest.evaluateInPage(expression);
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.pauseReason})`);
</del><ins>+ InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target).pauseReason})`);
</ins><span class="cx"> });
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Resumed, (event) => {
</span><span class="cx"> InspectorTest.log("RESUMED");
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggersteppingstepOverhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/stepping/stepOver.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/stepping/stepOver.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/stepping/stepOver.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> test(resolve, reject) {
</span><span class="cx"> InspectorTest.evaluateInPage(expression);
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.pauseReason})`);
</del><ins>+ InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target).pauseReason})`);
</ins><span class="cx"> });
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Resumed, (event) => {
</span><span class="cx"> InspectorTest.log("RESUMED");
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggersteppingsteppingthroughautoContinuebreakpointhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/stepping/stepping-through-autoContinue-breakpoint.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/stepping/stepping-through-autoContinue-breakpoint.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/stepping/stepping-through-autoContinue-breakpoint.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> // Step through the breakpoint.
</span><span class="cx"> InspectorTest.evaluateInPage("setTimeout(entry)");
</span><span class="cx"> WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
</span><del>- InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.pauseReason})`);
</del><ins>+ InspectorTest.log(`PAUSED (${WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target).pauseReason})`);
</ins><span class="cx"> });
</span><span class="cx"> WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.CallFramesDidChange, (event) => {
</span><span class="cx"> if (!WebInspector.debuggerManager.activeCallFrame)
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggertaildeletedframesfromvmentryhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/tail-deleted-frames-from-vm-entry.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/tail-deleted-frames-from-vm-entry.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/tail-deleted-frames-from-vm-entry.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -46,10 +46,13 @@
</span><span class="cx"> expectedFrames.push({functionName: 'bar', scope: ['i', i], isTailDeleted: i > 0 ? true : false});
</span><span class="cx"> expectedFrames.push({functionName: 'timeout', scope: ['foo', 25], isTailDeleted: true});
</span><span class="cx">
</span><del>- InspectorTest.assert(WebInspector.debuggerManager.callFrames.length >= expectedFrames.length);
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ let callFrames = targetData.callFrames;
</ins><span class="cx">
</span><ins>+ InspectorTest.assert(callFrames.length >= expectedFrames.length);
+
</ins><span class="cx"> for (let i = 0; i < expectedFrames.length; i++) {
</span><del>- let callFrame = WebInspector.debuggerManager.callFrames[i];
</del><ins>+ let callFrame = callFrames[i];
</ins><span class="cx"> let expectedFrame = expectedFrames[i];
</span><span class="cx"> InspectorTest.log("Expected frame: " + JSON.stringify(expectedFrame));
</span><span class="cx"> InspectorTest.expectThat(callFrame.functionName === expectedFrame.functionName, `Function name: ${callFrame.functionName} is correct.`);
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggertaildeletedframesthisvaluehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/tail-deleted-frames-this-value.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/tail-deleted-frames-this-value.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/tail-deleted-frames-this-value.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -39,10 +39,13 @@
</span><span class="cx"> {functionName: 'c', thisValue: ['cThis', 0], isTailDeleted: true}
</span><span class="cx"> ];
</span><span class="cx">
</span><del>- InspectorTest.assert(WebInspector.debuggerManager.callFrames.length >= expectedFrames.length);
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ let callFrames = targetData.callFrames;
</ins><span class="cx">
</span><ins>+ InspectorTest.assert(callFrames.length >= expectedFrames.length);
+
</ins><span class="cx"> for (let i = 0; i < expectedFrames.length; i++) {
</span><del>- let callFrame = WebInspector.debuggerManager.callFrames[i];
</del><ins>+ let callFrame = callFrames[i];
</ins><span class="cx"> let expectedFrame = expectedFrames[i];
</span><span class="cx"> InspectorTest.log("Expected frame: " + JSON.stringify(expectedFrame));
</span><span class="cx"> InspectorTest.assert(callFrame.functionName === expectedFrame.functionName);
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggertaildeletedframeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/tail-deleted-frames.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/tail-deleted-frames.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/tail-deleted-frames.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -47,10 +47,13 @@
</span><span class="cx"> {functionName: 'c', scope: ['z', 60], isTailDeleted: true}
</span><span class="cx"> ];
</span><span class="cx">
</span><del>- InspectorTest.assert(WebInspector.debuggerManager.callFrames.length >= expectedFrames.length);
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ let callFrames = targetData.callFrames;
</ins><span class="cx">
</span><ins>+ InspectorTest.assert(callFrames.length >= expectedFrames.length);
+
</ins><span class="cx"> for (let i = 0; i < expectedFrames.length; i++) {
</span><del>- let callFrame = WebInspector.debuggerManager.callFrames[i];
</del><ins>+ let callFrame = callFrames[i];
</ins><span class="cx"> let expectedFrame = expectedFrames[i];
</span><span class="cx"> InspectorTest.log("Expected frame: " + JSON.stringify(expectedFrame));
</span><span class="cx"> InspectorTest.assert(callFrame.functionName === expectedFrame.functionName);
</span></span></pre></div>
<a id="trunkLayoutTestsinspectordebuggertailrecursionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/debugger/tail-recursion.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/debugger/tail-recursion.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/debugger/tail-recursion.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -47,9 +47,12 @@
</span><span class="cx"> InspectorTest.log("Going to look at the top " + numFramesToInspect + " frames.");
</span><span class="cx"> InspectorTest.log("------------------------------------");
</span><span class="cx">
</span><del>- InspectorTest.assert(WebInspector.debuggerManager.callFrames.length > numFramesToInspect); // We just look at top 50. This isn't a precise number. But it gets at the gist of the debugging experience.
</del><ins>+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.debuggerManager.activeCallFrame.target);
+ let callFrames = targetData.callFrames;
+
+ InspectorTest.assert(callFrames.length > numFramesToInspect); // We just look at top 50. This isn't a precise number. But it gets at the gist of the debugging experience.
</ins><span class="cx"> for (let i = 0; i < numFramesToInspect; i++) {
</span><del>- let callFrame = WebInspector.debuggerManager.callFrames[i];
</del><ins>+ let callFrame = callFrames[i];
</ins><span class="cx"> InspectorTest.assert(callFrame.functionName === "recurse");
</span><span class="cx"> let topScope = callFrame.scopeChain[0];
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsinspectormodelremoteobjectweakcollectionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/model/remote-object-weak-collection.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/model/remote-object-weak-collection.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/model/remote-object-weak-collection.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -59,8 +59,8 @@
</span><span class="cx"> InspectorTest.assert(remoteObject instanceof WebInspector.RemoteObject);
</span><span class="cx"> remoteObject.getCollectionEntries(0, 100, function(entries) {
</span><span class="cx"> InspectorTest.log("ENTRIES:");
</span><del>- entries.sort(function(a, b) { return a.value.value - b.value.value; });
- for (var entry of entries)
</del><ins>+ entries.sort((a, b) => a.value.value - b.value.value);
+ for (let entry of entries)
</ins><span class="cx"> InspectorTest.assert(entry instanceof WebInspector.CollectionEntry);
</span><span class="cx"> InspectorTest.log(JSON.stringify(entries, remoteObjectJSONFilter, " "));
</span><span class="cx"> remoteObject.releaseWeakCollectionEntries();
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerconsolebasicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/worker/console-basic-expected.txt (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/console-basic-expected.txt        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/worker/console-basic-expected.txt        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -12,6 +12,7 @@
</span><span class="cx"> "_url": "inspector/worker/resources/worker-console.js",
</span><span class="cx"> "_line": 4,
</span><span class="cx"> "_column": 20,
</span><ins>+ "_sourceCodeLocation": "<filtered>",
</ins><span class="cx"> "_repeatCount": 1,
</span><span class="cx"> "_parameters": [
</span><span class="cx"> {
</span><span class="lines">@@ -71,7 +72,7 @@
</span><span class="cx"> "_url": "inspector/worker/resources/worker-console.js",
</span><span class="cx"> "_line": 7,
</span><span class="cx"> "_column": 21,
</span><del>- "_sourceCodeLocation": null,
</del><ins>+ "_sourceCodeLocation": "<filtered>",
</ins><span class="cx"> "_repeatCount": 1,
</span><span class="cx"> "_parameters": [
</span><span class="cx"> {
</span><span class="lines">@@ -93,7 +94,7 @@
</span><span class="cx"> "_url": "inspector/worker/resources/worker-console.js",
</span><span class="cx"> "_line": 10,
</span><span class="cx"> "_column": 22,
</span><del>- "_sourceCodeLocation": null,
</del><ins>+ "_sourceCodeLocation": "<filtered>",
</ins><span class="cx"> "_repeatCount": 1,
</span><span class="cx"> "_parameters": [
</span><span class="cx"> {
</span><span class="lines">@@ -115,7 +116,7 @@
</span><span class="cx"> "_url": "inspector/worker/resources/worker-console.js",
</span><span class="cx"> "_line": 14,
</span><span class="cx"> "_column": 23,
</span><del>- "_sourceCodeLocation": null,
</del><ins>+ "_sourceCodeLocation": "<filtered>",
</ins><span class="cx"> "_repeatCount": 1,
</span><span class="cx"> "_parameters": [
</span><span class="cx"> {
</span><span class="lines">@@ -137,6 +138,7 @@
</span><span class="cx"> "_url": "inspector/worker/resources/worker-console.js",
</span><span class="cx"> "_line": 18,
</span><span class="cx"> "_column": 24,
</span><ins>+ "_sourceCodeLocation": "<filtered>",
</ins><span class="cx"> "_repeatCount": 1,
</span><span class="cx"> "_stackTrace": "<filtered>",
</span><span class="cx"> "_request": null
</span><span class="lines">@@ -151,6 +153,7 @@
</span><span class="cx"> "_url": "inspector/worker/resources/worker-console.js",
</span><span class="cx"> "_line": 21,
</span><span class="cx"> "_column": 22,
</span><ins>+ "_sourceCodeLocation": "<filtered>",
</ins><span class="cx"> "_repeatCount": 1,
</span><span class="cx"> "_stackTrace": "<filtered>",
</span><span class="cx"> "_request": null
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerconsolebasichtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/worker/console-basic.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/console-basic.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/LayoutTests/inspector/worker/console-basic.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -15,10 +15,10 @@
</span><span class="cx"> return url.replace(/^.*?LayoutTests\//, "");
</span><span class="cx"> }
</span><span class="cx">
</span><del>- function remoteObjectJSONFilter(key, value) {
</del><ins>+ function consoleMessageJSONFilter(key, value) {
</ins><span class="cx"> if (key === "_target" || key === "_hasChildren" || key === "_listeners")
</span><span class="cx"> return undefined;
</span><del>- if (key === "_objectId" || key === "_stackTrace")
</del><ins>+ if (key === "_objectId" || key === "_stackTrace" || key === "_sourceCodeLocation")
</ins><span class="cx"> return "<filtered>";
</span><span class="cx"> if (key === "_url")
</span><span class="cx"> return sanitizeURL(value);
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> validate(message);
</span><span class="cx"> if (preprocess)
</span><span class="cx"> preprocess(message);
</span><del>- InspectorTest.log(JSON.stringify(message, remoteObjectJSONFilter, " "));
</del><ins>+ InspectorTest.log(JSON.stringify(message, consoleMessageJSONFilter, " "));
</ins><span class="cx"> resolve();
</span><span class="cx"> }).catch(reject);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerdebuggerpauseexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector/worker/debugger-pause-expected.txt (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/debugger-pause-expected.txt         (rev 0)
+++ trunk/LayoutTests/inspector/worker/debugger-pause-expected.txt        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+CONSOLE MESSAGE: line 14: TypeError: undefined is not an object (evaluating '[].x.x')
+Ensure we can pause in Workers.
+
+
+== Running test suite: Worker.Debugger.Pause
+-- Running test case: Worker.Debugger.Pause.DebuggerStatement
+PASS: Paused
+PASS: Should be paused in a Worker CallFrame.
+PASS: Pause reason should be a debugger statement.
+PAUSE AT triggerDebuggerStatement:3:5
+ 0 function triggerDebuggerStatement() {
+ 1 let before = 1;
+ -> 2 |debugger;
+ 3 let after = 2;
+ 4 }
+ 5
+
+
+-- Running test case: Worker.Debugger.Pause.Breakpoint
+PASS: Paused
+PASS: Should be paused in a Worker CallFrame.
+PASS: Pause reason should be a breakpoint.
+PAUSE AT triggerBreakpoint:9:5
+ 5
+ 6 function triggerBreakpoint() {
+ 7 let alpha = 1;
+ -> 8 |let beta = 2; // BREAKPOINT
+ 9 let gamma = 3;
+ 10 }
+ 11
+
+
+-- Running test case: Worker.Debugger.Pause.Exception
+PASS: Paused
+PASS: Should be paused in a Worker CallFrame.
+PASS: Pause reason should be an exception.
+PAUSE AT triggerException:14:9
+ 10 }
+ 11
+ 12 function triggerException() {
+ -> 13 [].x|.x;
+ 14 }
+ 15
+ 16 function triggerAssertion() {
+
+Uncaught exception in test page: TypeError: undefined is not an object (evaluating '[].x.x') [worker-debugger-pause.js:14]
+
+-- Running test case: Worker.Debugger.Pause.Assert
+PASS: Paused
+PASS: Should be paused in a Worker CallFrame.
+PASS: Pause reason should be an exception.
+PAUSE AT triggerAssertion:18:19
+ 14 }
+ 15
+ 16 function triggerAssertion() {
+ -> 17 console.assert|(false, "Assertion");
+ 18 }
+ 19
+ 20 onmessage = function(event) {
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerdebuggerpausehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector/worker/debugger-pause.html (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/debugger-pause.html         (rev 0)
+++ trunk/LayoutTests/inspector/worker/debugger-pause.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
+<script src="../debugger/resources/log-pause-location.js"></script>
+<script>
+TestPage.allowUncaughtExceptions = true;
+TestPage.needToSanitizeUncaughtExceptionURLs = true;
+
+let worker = new Worker("resources/worker-debugger-pause.js");
+
+function test()
+{
+ let workerTarget = Array.from(WebInspector.targets).find((target) => target.type === WebInspector.Target.Type.Worker);
+ let workerDebuggerData = WebInspector.debuggerManager.dataForTarget(workerTarget);
+ if (!workerTarget) {
+ InspectorTest.fail("Missing Worker Target");
+ InspectorTest.completeTest();
+ return;
+ }
+
+ WebInspector.debuggerManager.allUncaughtExceptionsBreakpoint.disabled = false;
+ WebInspector.debuggerManager.assertionsBreakpoint.disabled = false;
+
+
+ let suite = InspectorTest.createAsyncSuite("Worker.Debugger.Pause");
+
+ suite.addTestCase({
+ name: "Worker.Debugger.Pause.DebuggerStatement",
+ description: "Worker should pause on debugger statement.",
+ test(resolve, reject) {
+ InspectorTest.evaluateInPage(`worker.postMessage("triggerDebuggerStatement")`);
+ WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
+ InspectorTest.pass("Paused");
+ InspectorTest.expectEqual(WebInspector.debuggerManager.activeCallFrame.target, workerTarget, "Should be paused in a Worker CallFrame.");
+ InspectorTest.expectEqual(workerDebuggerData.pauseReason, WebInspector.DebuggerManager.PauseReason.DebuggerStatement, "Pause reason should be a debugger statement.");
+ logPauseLocation();
+ WebInspector.debuggerManager.resume().then(resolve, reject);
+ });
+ }
+ });
+
+ suite.addTestCase({
+ name: "Worker.Debugger.Pause.Breakpoint",
+ description: "Worker should pause on breakpoint.",
+ test(resolve, reject) {
+ let location = workerTarget.mainResource.createSourceCodeLocation(8, 0);
+ let breakpoint = new WebInspector.Breakpoint(location);
+ WebInspector.debuggerManager.addBreakpoint(breakpoint);
+ InspectorTest.evaluateInPage(`worker.postMessage("triggerBreakpoint")`);
+ WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
+ InspectorTest.pass("Paused");
+ InspectorTest.expectEqual(WebInspector.debuggerManager.activeCallFrame.target, workerTarget, "Should be paused in a Worker CallFrame.");
+ InspectorTest.expectEqual(workerDebuggerData.pauseReason, WebInspector.DebuggerManager.PauseReason.Breakpoint, "Pause reason should be a breakpoint.");
+ logPauseLocation();
+ WebInspector.debuggerManager.resume().then(resolve, reject);
+ });
+ }
+ });
+
+ suite.addTestCase({
+ name: "Worker.Debugger.Pause.Exception",
+ description: "Worker should pause on exception.",
+ test(resolve, reject) {
+ InspectorTest.evaluateInPage(`worker.postMessage("triggerException")`);
+ WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
+ InspectorTest.pass("Paused");
+ InspectorTest.expectEqual(WebInspector.debuggerManager.activeCallFrame.target, workerTarget, "Should be paused in a Worker CallFrame.");
+ InspectorTest.expectEqual(workerDebuggerData.pauseReason, WebInspector.DebuggerManager.PauseReason.Exception, "Pause reason should be an exception.");
+ logPauseLocation();
+ WebInspector.debuggerManager.resume().then(resolve, reject);
+ });
+ }
+ });
+
+ suite.addTestCase({
+ name: "Worker.Debugger.Pause.Assert",
+ description: "Worker should pause on assert.",
+ test(resolve, reject) {
+ InspectorTest.evaluateInPage(`worker.postMessage("triggerAssertion")`);
+ WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.Paused, (event) => {
+ InspectorTest.pass("Paused");
+ InspectorTest.expectEqual(WebInspector.debuggerManager.activeCallFrame.target, workerTarget, "Should be paused in a Worker CallFrame.");
+ InspectorTest.expectEqual(workerDebuggerData.pauseReason, WebInspector.DebuggerManager.PauseReason.Assertion, "Pause reason should be an exception.");
+ logPauseLocation();
+ WebInspector.debuggerManager.resume().then(resolve, reject);
+ });
+ }
+ });
+
+ window.loadLinesFromSourceCode(workerTarget.mainResource).then(() => {
+ suite.runTestCasesAndFinish();
+ });
+}
+</script>
+</head>
+<body onload="runTest()">
+<p>Ensure we can pause in Workers.</p>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerdebuggerscriptsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector/worker/debugger-scripts-expected.txt (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/debugger-scripts-expected.txt         (rev 0)
+++ trunk/LayoutTests/inspector/worker/debugger-scripts-expected.txt        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+Ensure we can associate scripts with Workers and get their contents.
+
+
+== Running test suite: Worker.Debugger.Script
+-- Running test case: Worker.Debugger.Script.MainResource
+PASS: Worker target's main resource should be a Script.
+PASS: Worker target's main resource should be owned by a Worker target.
+PASS: Worker DebuggerData should include script.
+PASS: Worker DebuggerData should include script by identifier.
+PASS: Worker DebuggerData should include script by URL.
+PASS: Main DebuggerData should not include the script.
+PASS: Worker target's main resource should have content.
+
+-- Running test case: Worker.Debugger.Script.ImportedScript
+PASS: ScriptAdded - inspector/worker/resources/worker-import-1.js
+PASS: Script should be owned by a Worker target.
+PASS: Worker DebuggerData should include script.
+PASS: Worker DebuggerData should include script by identifier.
+PASS: Worker DebuggerData should include script by URL.
+PASS: Main DebuggerData should not include the script.
+PASS: Imported script content should have 'workerImport1'.
+
+-- Running test case: Worker.Debugger.Script.NamedEval
+PASS: ScriptAdded - worker-eval.js
+PASS: Script should be owned by a Worker target.
+PASS: Worker DebuggerData should include script.
+PASS: Worker DebuggerData should include script by identifier.
+PASS: Main DebuggerData should not include the script.
+PASS: Eval script content should have 'workerEval'.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerdebuggerscriptshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector/worker/debugger-scripts.html (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/debugger-scripts.html         (rev 0)
+++ trunk/LayoutTests/inspector/worker/debugger-scripts.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
+<script>
+let worker = new Worker("resources/worker-scripts.js");
+
+function test()
+{
+ function sanitizeURL(url) {
+ return url.replace(/^.*?LayoutTests\//, "");
+ }
+
+ let mainTarget = WebInspector.mainTarget;
+ let workerTarget = Array.from(WebInspector.targets).find((target) => target.type === WebInspector.Target.Type.Worker);
+ let mainDebuggerData = WebInspector.debuggerManager.dataForTarget(mainTarget);
+ let workerDebuggerData = WebInspector.debuggerManager.dataForTarget(workerTarget);
+ if (!workerTarget) {
+ InspectorTest.fail("Missing Worker Target");
+ InspectorTest.completeTest();
+ return;
+ }
+
+ let suite = InspectorTest.createAsyncSuite("Worker.Debugger.Script");
+
+ suite.addTestCase({
+ name: "Worker.Debugger.Script.MainResource",
+ description: "Worker main resource should be a script tied to the Worker.",
+ test(resolve, reject) {
+ let script = workerTarget.mainResource;
+ InspectorTest.expectThat(script instanceof WebInspector.Script, "Worker target's main resource should be a Script.");
+ InspectorTest.expectEqual(script.target, workerTarget, "Worker target's main resource should be owned by a Worker target.");
+ InspectorTest.expectThat(workerDebuggerData.scripts.includes(script), "Worker DebuggerData should include script.");
+ InspectorTest.expectThat(workerDebuggerData.scriptForIdentifier(script.id), "Worker DebuggerData should include script by identifier.");
+ InspectorTest.expectEqual(workerDebuggerData.scriptsForURL(script.url).length, 1, "Worker DebuggerData should include script by URL.");
+ InspectorTest.expectThat(!mainDebuggerData.scripts.includes(script), "Main DebuggerData should not include the script.");
+ script.requestContent()
+ .then(({content}) => {
+ InspectorTest.expectGreaterThan(content.length, 100, "Worker target's main resource should have content.");
+ resolve();
+ }).catch(reject);
+ }
+ });
+
+ suite.addTestCase({
+ name: "Worker.Debugger.Script.ImportedScript",
+ description: "Worker should be told of all scripts, like imported scripts.",
+ test(resolve, reject) {
+ InspectorTest.evaluateInPage(`worker.postMessage("triggerImportScripts")`);
+ let listener = WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, (event) => {
+ let script = event.data.script;
+ if (!/worker-import-1\.js$/.test(script.url))
+ return;
+
+ InspectorTest.pass(`ScriptAdded - ${sanitizeURL(script.url)}`);
+ InspectorTest.expectEqual(script.target, workerTarget, "Script should be owned by a Worker target.");
+ InspectorTest.expectThat(workerDebuggerData.scripts.includes(script), "Worker DebuggerData should include script.");
+ InspectorTest.expectThat(workerDebuggerData.scriptForIdentifier(script.id), "Worker DebuggerData should include script by identifier.");
+ InspectorTest.expectEqual(workerDebuggerData.scriptsForURL(script.url).length, 1, "Worker DebuggerData should include script by URL.");
+ InspectorTest.expectThat(!mainDebuggerData.scripts.includes(script), "Main DebuggerData should not include the script.");
+ script.requestContent()
+ .then(({content}) => {
+ InspectorTest.expectThat(content.includes("workerImport1"), "Imported script content should have 'workerImport1'.");
+ WebInspector.debuggerManager.removeEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, listener);
+ resolve();
+ }).catch(reject);
+ });
+ }
+ });
+
+ suite.addTestCase({
+ name: "Worker.Debugger.Script.NamedEval",
+ description: "Worker should be told of all scripts, like named evaluations.",
+ test(resolve, reject) {
+ InspectorTest.evaluateInPage(`worker.postMessage("triggerEvalScript")`);
+ let listener = WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, (event) => {
+ let script = event.data.script;
+ if (!/worker-eval\.js$/.test(script.sourceURL))
+ return;
+
+ InspectorTest.pass(`ScriptAdded - ${script.sourceURL}`);
+ InspectorTest.expectEqual(script.target, workerTarget, "Script should be owned by a Worker target.");
+ InspectorTest.expectThat(workerDebuggerData.scripts.includes(script), "Worker DebuggerData should include script.");
+ InspectorTest.expectThat(workerDebuggerData.scriptForIdentifier(script.id), "Worker DebuggerData should include script by identifier.");
+ InspectorTest.expectThat(!mainDebuggerData.scripts.includes(script), "Main DebuggerData should not include the script.");
+ script.requestContent()
+ .then(({content}) => {
+ InspectorTest.expectThat(content.includes("workerEval"), "Eval script content should have 'workerEval'.");
+ WebInspector.debuggerManager.removeEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, listener);
+ resolve();
+ }).catch(reject);
+ });
+ }
+ });
+
+ suite.runTestCasesAndFinish();
+}
+</script>
+</head>
+<body onload="runTest()">
+<p>Ensure we can associate scripts with Workers and get their contents.</p>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerresourcesworkerdebuggerpausejs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector/worker/resources/worker-debugger-pause.js (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/resources/worker-debugger-pause.js         (rev 0)
+++ trunk/LayoutTests/inspector/worker/resources/worker-debugger-pause.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+function triggerDebuggerStatement() {
+ let before = 1;
+ debugger;
+ let after = 2;
+}
+
+function triggerBreakpoint() {
+ let alpha = 1;
+ let beta = 2; // BREAKPOINT
+ let gamma = 3;
+}
+
+function triggerException() {
+ [].x.x;
+}
+
+function triggerAssertion() {
+ console.assert(false, "Assertion");
+}
+
+onmessage = function(event) {
+ if (event.data === "triggerDebuggerStatement")
+ triggerDebuggerStatement();
+ else if (event.data === "triggerBreakpoint")
+ triggerBreakpoint();
+ else if (event.data === "triggerException")
+ triggerException();
+ else if (event.data === "triggerAssertion")
+ triggerAssertion();
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerresourcesworkerimport1js"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector/worker/resources/worker-import-1.js (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/resources/worker-import-1.js         (rev 0)
+++ trunk/LayoutTests/inspector/worker/resources/worker-import-1.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+function workerImport1() {
+ console.log("workerImport1");
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorworkerresourcesworkerscriptsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector/worker/resources/worker-scripts.js (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/worker/resources/worker-scripts.js         (rev 0)
+++ trunk/LayoutTests/inspector/worker/resources/worker-scripts.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+function triggerImportScripts() {
+ importScripts("worker-import-1.js");
+}
+
+function triggerEvalScript() {
+ eval("function workerEval() { }\n//# sourceURL=worker-eval.js");
+}
+
+onmessage = function(event) {
+ if (event.data === "triggerImportScripts")
+ triggerImportScripts();
+ else if (event.data === "triggerEvalScript")
+ triggerEvalScript();
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1903,6 +1903,7 @@
</span><span class="cx"> inspector/WebInjectedScriptHost.cpp
</span><span class="cx"> inspector/WebInjectedScriptManager.cpp
</span><span class="cx"> inspector/WorkerConsoleAgent.cpp
</span><ins>+ inspector/WorkerDebuggerAgent.cpp
</ins><span class="cx"> inspector/WorkerInspectorController.cpp
</span><span class="cx"> inspector/WorkerRuntimeAgent.cpp
</span><span class="cx"> inspector/WorkerScriptDebugServer.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/ChangeLog        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1,3 +1,36 @@
</span><ins>+2016-11-02 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Include DebuggerAgent in Workers - see, pause, and step through scripts
+ https://bugs.webkit.org/show_bug.cgi?id=164136
+ <rdar://problem/29028462>
+
+ Reviewed by Brian Burg.
+
+ Tests: inspector/worker/debugger-pause.html
+ inspector/worker/debugger-scripts.html
+
+ * CMakeLists.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * inspector/InspectorAllInOne.cpp:
+ New file.
+
+ * inspector/PageDebuggerAgent.h:
+ * inspector/WorkerDebuggerAgent.cpp: Added.
+ (WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
+ (WebCore::WorkerDebuggerAgent::~WorkerDebuggerAgent):
+ (WebCore::WorkerDebuggerAgent::breakpointActionLog):
+ (WebCore::WorkerDebuggerAgent::injectedScriptForEval):
+ * inspector/WorkerDebuggerAgent.h: Added.
+ DebuggerAgent customizations for Workers.
+
+ * inspector/WorkerInspectorController.cpp:
+ (WebCore::WorkerInspectorController::WorkerInspectorController):
+ Add the new agent.
+
+ * inspector/WorkerScriptDebugServer.cpp:
+ (WebCore::WorkerScriptDebugServer::runEventLoopWhilePaused):
+ Implement the nested run loop for Workers.
+
</ins><span class="cx"> 2016-11-02 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Add Battery Status to features.json, marked as "Removed".
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -3898,6 +3898,8 @@
</span><span class="cx">                 A516E8B8136E04DB0076C3C0 /* LocalizedDateCache.mm in Sources */ = {isa = PBXBuildFile; fileRef = A516E8B5136E04DB0076C3C0 /* LocalizedDateCache.mm */; };
</span><span class="cx">                 A52A68611DBB0F630083373F /* WorkerConsoleAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A52A685F1DBB0F5B0083373F /* WorkerConsoleAgent.cpp */; };
</span><span class="cx">                 A52A68621DBB0F630083373F /* WorkerConsoleAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = A52A68601DBB0F5B0083373F /* WorkerConsoleAgent.h */; };
</span><ins>+                A52A68651DBD4B5D0083373F /* WorkerDebuggerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A52A68631DBD4B580083373F /* WorkerDebuggerAgent.cpp */; };
+                A52A68661DBD4B5D0083373F /* WorkerDebuggerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = A52A68641DBD4B580083373F /* WorkerDebuggerAgent.h */; };
</ins><span class="cx">                 A5416FE518810EF80009FC5F /* YouTubeEmbedShadowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5416FE318810EF80009FC5F /* YouTubeEmbedShadowElement.cpp */; };
</span><span class="cx">                 A5416FE618810EF80009FC5F /* YouTubeEmbedShadowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A5416FE418810EF80009FC5F /* YouTubeEmbedShadowElement.h */; };
</span><span class="cx">                 A54A0C5D1DB6D9C00017A90B /* InspectorWorkerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A54A0C5B1DB6D9B10017A90B /* InspectorWorkerAgent.cpp */; };
</span><span class="lines">@@ -11420,6 +11422,8 @@
</span><span class="cx">                 A518225517E2A0D400A9BA1D /* InspectorOverlayPage.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = InspectorOverlayPage.js; sourceTree = "<group>"; };
</span><span class="cx">                 A52A685F1DBB0F5B0083373F /* WorkerConsoleAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerConsoleAgent.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 A52A68601DBB0F5B0083373F /* WorkerConsoleAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerConsoleAgent.h; sourceTree = "<group>"; };
</span><ins>+                A52A68631DBD4B580083373F /* WorkerDebuggerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerDebuggerAgent.cpp; sourceTree = "<group>"; };
+                A52A68641DBD4B580083373F /* WorkerDebuggerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerDebuggerAgent.h; sourceTree = "<group>"; };
</ins><span class="cx">                 A5416FE318810EF80009FC5F /* YouTubeEmbedShadowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = YouTubeEmbedShadowElement.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 A5416FE418810EF80009FC5F /* YouTubeEmbedShadowElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YouTubeEmbedShadowElement.h; sourceTree = "<group>"; };
</span><span class="cx">                 A54A0C5B1DB6D9B10017A90B /* InspectorWorkerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorWorkerAgent.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -15937,6 +15941,8 @@
</span><span class="cx">                                 A584FE2E1864CB8400843B10 /* WebInjectedScriptManager.h */,
</span><span class="cx">                                 A52A685F1DBB0F5B0083373F /* WorkerConsoleAgent.cpp */,
</span><span class="cx">                                 A52A68601DBB0F5B0083373F /* WorkerConsoleAgent.h */,
</span><ins>+                                A52A68631DBD4B580083373F /* WorkerDebuggerAgent.cpp */,
+                                A52A68641DBD4B580083373F /* WorkerDebuggerAgent.h */,
</ins><span class="cx">                                 A54A0C5F1DB7F8B70017A90B /* WorkerInspectorController.cpp */,
</span><span class="cx">                                 A54A0C601DB7F8B70017A90B /* WorkerInspectorController.h */,
</span><span class="cx">                                 A57FD7191DB94236006AE24B /* WorkerRuntimeAgent.cpp */,
</span><span class="lines">@@ -27914,6 +27920,7 @@
</span><span class="cx">                                 2E4346460F546A8200B0F1BA /* Worker.h in Headers */,
</span><span class="cx">                                 A52A68621DBB0F630083373F /* WorkerConsoleAgent.h in Headers */,
</span><span class="cx">                                 A55639D11C6F09E300806D8E /* WorkerConsoleClient.h in Headers */,
</span><ins>+                                A52A68661DBD4B5D0083373F /* WorkerDebuggerAgent.h in Headers */,
</ins><span class="cx">                                 A3E2643114748991005A8588 /* WorkerEventQueue.h in Headers */,
</span><span class="cx">                                 2E4346490F546A8200B0F1BA /* WorkerGlobalScope.h in Headers */,
</span><span class="cx">                                 5185FCB41BB4C4E80012898F /* WorkerGlobalScopeIndexedDatabase.h in Headers */,
</span><span class="lines">@@ -31373,6 +31380,7 @@
</span><span class="cx">                                 2E4346450F546A8200B0F1BA /* Worker.cpp in Sources */,
</span><span class="cx">                                 A52A68611DBB0F630083373F /* WorkerConsoleAgent.cpp in Sources */,
</span><span class="cx">                                 A55639D21C6F09E700806D8E /* WorkerConsoleClient.cpp in Sources */,
</span><ins>+                                A52A68651DBD4B5D0083373F /* WorkerDebuggerAgent.cpp in Sources */,
</ins><span class="cx">                                 A3E2643014748991005A8588 /* WorkerEventQueue.cpp in Sources */,
</span><span class="cx">                                 2E4346480F546A8200B0F1BA /* WorkerGlobalScope.cpp in Sources */,
</span><span class="cx">                                 418C395A1C8DD6990051C8A3 /* WorkerGlobalScopeFetch.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerGlobalScopeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -24,28 +24,11 @@
</span><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #include "config.h"
</span><del>-
</del><span class="cx"> #include "JSWorkerGlobalScope.h"
</span><span class="cx">
</span><del>-#include "ExceptionCode.h"
-#include "JSDOMBinding.h"
-#include "JSDOMGlobalObject.h"
-#include "JSEventListener.h"
-#include "JSEventSource.h"
-#include "JSMessageChannel.h"
-#include "JSMessagePort.h"
-#include "JSWorkerLocation.h"
-#include "JSWorkerNavigator.h"
-#include "JSXMLHttpRequest.h"
</del><span class="cx"> #include "ScheduledAction.h"
</span><span class="cx"> #include "WorkerGlobalScope.h"
</span><del>-#include "WorkerLocation.h"
-#include "WorkerNavigator.h"
</del><span class="cx">
</span><del>-#if ENABLE(WEB_SOCKETS)
-#include "JSWebSocket.h"
-#endif
-
</del><span class="cx"> using namespace JSC;
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorAllInOne.cpp (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorAllInOne.cpp        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/inspector/InspectorAllInOne.cpp        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx"> #include "WebInjectedScriptHost.cpp"
</span><span class="cx"> #include "WebInjectedScriptManager.cpp"
</span><span class="cx"> #include "WorkerConsoleAgent.cpp"
</span><ins>+#include "WorkerDebuggerAgent.cpp"
</ins><span class="cx"> #include "WorkerInspectorController.cpp"
</span><span class="cx"> #include "WorkerRuntimeAgent.cpp"
</span><span class="cx"> #include "WorkerScriptDebugServer.cpp"
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageDebuggerAgent.h (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageDebuggerAgent.h        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/inspector/PageDebuggerAgent.h        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> void muteConsole() override;
</span><span class="cx"> void unmuteConsole() override;
</span><span class="cx">
</span><del>- void breakpointActionLog(JSC::ExecState&, const String&) final;
</del><ins>+ void breakpointActionLog(JSC::ExecState&, const String&) override;
</ins><span class="cx">
</span><span class="cx"> Inspector::InjectedScript injectedScriptForEval(ErrorString&, const int* executionContextId) override;
</span><span class="cx"> void setOverlayMessage(ErrorString&, const String*) final;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerDebuggerAgentcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp         (rev 0)
+++ trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WorkerDebuggerAgent.h"
+
+#include "ScriptState.h"
+#include "WorkerGlobalScope.h"
+#include <inspector/ConsoleMessage.h>
+#include <inspector/InjectedScript.h>
+#include <inspector/InjectedScriptManager.h>
+#include <inspector/ScriptCallStack.h>
+#include <inspector/ScriptCallStackFactory.h>
+
+using namespace JSC;
+using namespace Inspector;
+
+namespace WebCore {
+
+WorkerDebuggerAgent::WorkerDebuggerAgent(WorkerAgentContext& context)
+ : WebDebuggerAgent(context)
+ , m_workerGlobalScope(context.workerGlobalScope)
+{
+}
+
+WorkerDebuggerAgent::~WorkerDebuggerAgent()
+{
+}
+
+void WorkerDebuggerAgent::breakpointActionLog(ExecState& state, const String& message)
+{
+ m_workerGlobalScope.addConsoleMessage(std::make_unique<ConsoleMessage>(MessageSource::JS, MessageType::Log, MessageLevel::Log, message, createScriptCallStack(&state, ScriptCallStack::maxCallStackSizeToCapture)));
+}
+
+InjectedScript WorkerDebuggerAgent::injectedScriptForEval(ErrorString& errorString, const int* executionContextId)
+{
+ if (executionContextId) {
+ errorString = ASCIILiteral("Execution context id is not supported for workers as there is only one execution context.");
+ return InjectedScript();
+ }
+
+ JSC::ExecState* scriptState = execStateFromWorkerGlobalScope(&m_workerGlobalScope);
+ return injectedScriptManager().injectedScriptFor(scriptState);
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerDebuggerAgenthfromrev208303trunkSourceWebInspectorUIUserInterfaceViewsScriptTreeElementjs"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h (from rev 208303, trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTreeElement.js) (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h         (rev 0)
+++ trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "WebDebuggerAgent.h"
+
+namespace WebCore {
+
+class WorkerGlobalScope;
+
+class WorkerDebuggerAgent final : public WebDebuggerAgent {
+ WTF_MAKE_NONCOPYABLE(WorkerDebuggerAgent);
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ WorkerDebuggerAgent(WorkerAgentContext&);
+ ~WorkerDebuggerAgent();
+
+private:
+ // We don't need to mute console for workers.
+ void muteConsole() override { }
+ void unmuteConsole() override { }
+
+ void breakpointActionLog(JSC::ExecState&, const String&) override;
+ Inspector::InjectedScript injectedScriptForEval(ErrorString&, const int* executionContextId) override;
+
+ WorkerGlobalScope& m_workerGlobalScope;
+};
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerInspectorController.cpp (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerInspectorController.cpp        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/inspector/WorkerInspectorController.cpp        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include "WebInjectedScriptHost.h"
</span><span class="cx"> #include "WebInjectedScriptManager.h"
</span><span class="cx"> #include "WorkerConsoleAgent.h"
</span><ins>+#include "WorkerDebuggerAgent.h"
</ins><span class="cx"> #include "WorkerGlobalScope.h"
</span><span class="cx"> #include "WorkerRuntimeAgent.h"
</span><span class="cx"> #include "WorkerThread.h"
</span><span class="lines">@@ -73,14 +74,13 @@
</span><span class="cx"> workerGlobalScope,
</span><span class="cx"> };
</span><span class="cx">
</span><del>- auto runtimeAgent = std::make_unique<WorkerRuntimeAgent>(workerContext);
- m_agents.append(WTFMove(runtimeAgent));
</del><ins>+ m_agents.append(std::make_unique<WorkerRuntimeAgent>(workerContext));
+ m_agents.append(std::make_unique<WorkerDebuggerAgent>(workerContext));
</ins><span class="cx">
</span><span class="cx"> auto consoleAgent = std::make_unique<WorkerConsoleAgent>(workerContext, nullptr);
</span><span class="cx"> m_instrumentingAgents->setWebConsoleAgent(consoleAgent.get());
</span><span class="cx"> m_agents.append(WTFMove(consoleAgent));
</span><span class="cx">
</span><del>- // FIXME: DebuggerAgent
</del><span class="cx"> // FIXME: HeapAgent
</span><span class="cx">
</span><span class="cx"> if (CommandLineAPIHost* commandLineAPIHost = m_injectedScriptManager->commandLineAPIHost()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerScriptDebugServercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -72,7 +72,10 @@
</span><span class="cx"> {
</span><span class="cx"> TimerBase::fireTimersInNestedEventLoop();
</span><span class="cx">
</span><del>- // FIXME: Implement Worker Debugger Run Loop.
</del><ins>+ MessageQueueWaitResult result;
+ do {
+ result = m_workerGlobalScope.thread().runLoop().runInMode(&m_workerGlobalScope, WorkerRunLoop::debuggerMode());
+ } while (result != MessageQueueTerminated && !m_doneProcessingDebuggerEvents);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WorkerScriptDebugServer::reportException(JSC::ExecState* exec, JSC::Exception* exception) const
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/ChangeLog        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1,3 +1,261 @@
</span><ins>+2016-11-02 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Include DebuggerAgent in Workers - see, pause, and step through scripts
+ https://bugs.webkit.org/show_bug.cgi?id=164136
+ <rdar://problem/29028462>
+
+ Reviewed by Brian Burg.
+
+ By implementing DebuggerAgent, Workers will inform the frontend about
+ Scripts that evaluate in the Worker's VM and the Worker VM can pause
+ and send the pausing CallFrames to the frontend. This means that
+ WebInspector.Script and WebInspector.CallFrame will need to be made
+ target aware. This also means that each Target will have its own
+ set of debugger data, such as the list of scripts and pause data
+ like the pause reason / call frames. Previously all this data was
+ managed by DebuggerManager.
+
+ With this change we split that data out of DebuggerManager to be
+ per-target DebuggerData. DebuggerManager keeps `activeCallFrame`
+ but the list of scripts and pause data have moved into `DebuggerData`
+ which is per-target, accessed through DebuggerManager's new
+ dataForTarget(target) method.
+
+ Finally we make a few changes to the UserInterface to make Workers
+ and their scripts, appear grouped together. The Resources sidebar
+ previously had a single top level item for the Main Frame, which
+ has all its resources as its children (potentially grouped into
+ folders). With this change, each Worker gets its own top level
+ item as well, and the Worker's subresources (imported scripts)
+ become its children.
+
+ We also now associate a single mainResource with Targets. In the
+ case of Workers, we assume and assert that this is a Script. If
+ this were to ever change we would need to adjust the assumptions.
+
+ * UserInterface/Main.html:
+ * UserInterface/Test.html:
+ New files.
+
+ * UserInterface/Base/Main.js:
+ * UserInterface/Test/Test.js:
+ Add WebInspector.assumingMainTarget to fill in all the places where
+ we assume the main target right now, but would need to handle non-main
+ targets as other agents are implemented in workers. For example profile
+ data that assumes the main target right now could be worker targets
+ when we implement ScriptProfiler / Heap agents.
+
+ * UserInterface/Protocol/Connection.js:
+ (InspectorBackend.WorkerConnection):
+ * UserInterface/Protocol/Target.js:
+ (WebInspector.Target):
+ (WebInspector.Target.prototype.get DebuggerAgent):
+ (WebInspector.Target.prototype.get mainResource):
+ (WebInspector.Target.prototype.set mainResource):
+ (WebInspector.WorkerTarget.prototype.initialize):
+ (WebInspector.WorkerTarget):
+ Include DebuggerAgent in Targets.
+ Include a mainResource for Worker Targets.
+
+ * UserInterface/Protocol/DebuggerObserver.js:
+ (WebInspector.DebuggerObserver.prototype.scriptParsed):
+ (WebInspector.DebuggerObserver.prototype.breakpointResolved):
+ (WebInspector.DebuggerObserver.prototype.paused):
+ (WebInspector.DebuggerObserver.prototype.resumed):
+ Pass the target on to managers when necessary.
+
+ * UserInterface/Models/DebuggerData.js: Added.
+ (WebInspector.DebuggerData):
+ (WebInspector.DebuggerData.prototype.get target):
+ (WebInspector.DebuggerData.prototype.get callFrames):
+ (WebInspector.DebuggerData.prototype.get pauseReason):
+ (WebInspector.DebuggerData.prototype.get pauseData):
+ (WebInspector.DebuggerData.prototype.get scripts):
+ (WebInspector.DebuggerData.prototype.scriptForIdentifier):
+ (WebInspector.DebuggerData.prototype.scriptsForURL):
+ (WebInspector.DebuggerData.prototype.reset):
+ (WebInspector.DebuggerData.prototype.addScript):
+ (WebInspector.DebuggerData.prototype.pause):
+ (WebInspector.DebuggerData.prototype.unpause):
+ Extract per-target data from DebuggerManager. This includes the list
+ of scripts evaluated in a Target, and any pause data for this target
+ such as the pause reason and call frames.
+
+ * UserInterface/Controllers/DebuggerManager.js:
+ (WebInspector.DebuggerManager.prototype.dataForTarget):
+ (WebInspector.DebuggerManager.prototype.get pauseReason): Deleted.
+ (WebInspector.DebuggerManager.prototype.get pauseData): Deleted.
+ (WebInspector.DebuggerManager.prototype.get callFrames): Deleted.
+ (WebInspector.DebuggerManager.prototype.reset):
+ New way to access per-target debugger data.
+
+ (WebInspector.DebuggerManager.prototype.initializeTarget):
+ When a new Target is created, synchronize frontend state with the target.
+ Things like the list of breakpoints and global breakpoint states.
+
+ (WebInspector.DebuggerManager.prototype.scriptForIdentifier):
+ (WebInspector.DebuggerManager.prototype.scriptsForURL):
+ Convenience accessors for scripts must now provide a Target.
+
+ (WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
+ This is a convenience accessors for a list of all scripts across all targets
+ so this handles getting the list across all targets.
+
+ (WebInspector.DebuggerManager.prototype.pause):
+ (WebInspector.DebuggerManager.prototype.resume):
+ (WebInspector.DebuggerManager.prototype.stepOver):
+ (WebInspector.DebuggerManager.prototype.stepInto):
+ (WebInspector.DebuggerManager.prototype.stepOut):
+ (WebInspector.DebuggerManager.prototype.continueToLocation):
+ Stepping commands affect the current target with the active call frame.
+ Eventually we will change Pause and Resume behavior to affect all targets.
+
+ (WebInspector.DebuggerManager.prototype.addBreakpoint):
+ (WebInspector.DebuggerManager.prototype.breakpointResolved):
+ (WebInspector.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
+ (WebInspector.DebuggerManager.prototype._setBreakpoint):
+ (WebInspector.DebuggerManager.prototype._removeBreakpoint):
+ Breakpoints should be set on all targets, but we need a way
+ to set them on a specific target, when initializing an
+ individual target when we want to inform that single target
+ of all of the breakpoints.
+
+ (WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
+ (WebInspector.DebuggerManager.prototype._updateBreakOnExceptionsState):
+ Changing global breakpoint state should inform all targets.
+
+ (WebInspector.DebuggerManager.prototype.scriptDidParse):
+ Associate Scripts with a Target. Identify the main resource of a
+ Worker Target and set it as soon as we can.
+
+ (WebInspector.DebuggerManager.prototype.debuggerDidPause):
+ (WebInspector.DebuggerManager.prototype.debuggerDidResume):
+ (WebInspector.DebuggerManager.prototype._sourceCodeLocationFromPayload):
+ (WebInspector.DebuggerManager.prototype._scopeChainFromPayload):
+ (WebInspector.DebuggerManager.prototype._scopeChainNodeFromPayload):
+ (WebInspector.DebuggerManager.prototype._mainResourceDidChange):
+ (WebInspector.DebuggerManager.prototype._didResumeInternal):
+ Pausing and resuming now happens per-target, so associate
+ created model objects (CallFrame, ScopeChain objects) and any
+ other necessary data with the target.
+
+ * UserInterface/Models/Breakpoint.js:
+ (WebInspector.Breakpoint):
+ (WebInspector.Breakpoint.prototype.get target):
+ (WebInspector.Breakpoint.prototype.get info):
+ * UserInterface/Models/CallFrame.js:
+ (WebInspector.CallFrame):
+ (WebInspector.CallFrame.prototype.get target):
+ (WebInspector.CallFrame.fromDebuggerPayload):
+ (WebInspector.CallFrame.fromPayload):
+ * UserInterface/Models/ConsoleMessage.js:
+ (WebInspector.ConsoleMessage):
+ * UserInterface/Models/Script.js:
+ (WebInspector.Script):
+ (WebInspector.Script.prototype.get target):
+ (WebInspector.Script.prototype.isMainResource):
+ (WebInspector.Script.prototype.requestContentFromBackend):
+ (WebInspector.Script.prototype._resolveResource):
+ * UserInterface/Models/StackTrace.js:
+ (WebInspector.StackTrace.fromPayload):
+ (WebInspector.StackTrace.fromString):
+ * UserInterface/Models/ProbeManager.js:
+ (WebInspector.ProbeManager.prototype.didSampleProbe):
+ * UserInterface/Models/Probe.js:
+ (WebInspector.ProbeSample):
+ * UserInterface/Views/ConsoleMessageView.js:
+ (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
+ (WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
+ Associate model objects with a specific target where necessary.
+
+ * UserInterface/Views/ObjectTreeBaseTreeElement.js:
+ (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
+ * UserInterface/Controllers/RuntimeManager.js:
+ (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
+ * UserInterface/Protocol/RemoteObject.js:
+ (WebInspector.RemoteObject.prototype.findFunctionSourceCodeLocation):
+ Use target specific DebuggerAgent where necessary.
+
+ * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
+ * UserInterface/Controllers/TimelineManager.js:
+ (WebInspector.TimelineManager.prototype._callFramesFromPayload):
+ * UserInterface/Models/ScriptTimelineRecord.js:
+ (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
+ * UserInterface/Views/EventListenerSectionGroup.js:
+ (WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
+ (WebInspector.EventListenerSectionGroup):
+ * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
+ (WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.node.shortestGCRootPath.):
+ (WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
+ (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populateWindowPreview):
+ (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
+ (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
+ * UserInterface/Views/ProfileDataGridNode.js:
+ (WebInspector.ProfileDataGridNode.prototype.iconClassName):
+ (WebInspector.ProfileDataGridNode.prototype.filterableDataForColumn):
+ (WebInspector.ProfileDataGridNode.prototype._displayContent):
+ Use assumed main target and audit these when the Worker gets more Agents.
+
+ * UserInterface/Controllers/FrameResourceManager.js:
+ (WebInspector.FrameResourceManager.prototype._initiatorSourceCodeLocationFromPayload):
+ This will always be the main target because only the main target
+ has access to the DOM.
+
+ * UserInterface/Views/SourceCodeTextEditor.js:
+ (WebInspector.SourceCodeTextEditor.prototype.get target):
+ (WebInspector.SourceCodeTextEditor.prototype.customPerformSearch):
+ (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
+ (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression.populate):
+ (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression):
+ (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
+ (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction):
+ Update target specific actions to use the proper target's agents.
+
+ * UserInterface/Views/TargetTreeElement.js: Added.
+ (WebInspector.TargetTreeElement):
+ (WebInspector.TargetTreeElement.prototype.get target):
+ (WebInspector.TargetTreeElement.prototype.onexpand):
+ (WebInspector.TargetTreeElement.prototype.oncollapse):
+ Add a new tree element for a Target. We currently assume that the
+ main resource for a Target will be a Script right now, as is the
+ case for Web Workers. This simply remembers its expanded or
+ collapsed state and has a better icon.
+
+ * UserInterface/Views/ResourceIcons.css:
+ (body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon):
+ (body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon):
+ * UserInterface/Images/WorkerScript.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png.
+ * UserInterface/Images/WorkerScript@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png.
+ * UserInterface/Images/WorkerScriptLarge.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png.
+ * UserInterface/Images/WorkerScriptLarge@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png.
+ Improve icon for a Worker's main resource script.
+
+ * UserInterface/Views/ResourceSidebarPanel.js:
+ (WebInspector.ResourceSidebarPanel):
+ (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
+ (WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
+ (WebInspector.ResourceSidebarPanel.prototype._addScriptForNonMainTarget):
+ (WebInspector.ResourceSidebarPanel.prototype._addTargetWithMainResource):
+ (WebInspector.ResourceSidebarPanel.prototype._targetRemoved):
+ * UserInterface/Views/SearchSidebarPanel.js:
+ (WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts):
+ (WebInspector.SearchSidebarPanel.prototype._searchTreeElementForScript):
+ * UserInterface/Views/OpenResourceDialog.js:
+ (WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline.createTreeElement):
+ (WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline):
+ (WebInspector.OpenResourceDialog.prototype.didDismissDialog):
+ (WebInspector.OpenResourceDialog.prototype.didPresentDialog):
+ (WebInspector.OpenResourceDialog.prototype._addResourcesForFrame):
+ (WebInspector.OpenResourceDialog.prototype._addScriptsForTarget):
+ (WebInspector.OpenResourceDialog.prototype._scriptAdded):
+ (WebInspector.OpenResourceDialog):
+ * UserInterface/Views/DebuggerSidebarPanel.js:
+ (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
+ (WebInspector.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):
+ (WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
+ (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
+ Include scripts from non-main targets in sidebars.
+
</ins><span class="cx"> 2016-11-01 Devin Rousso <dcrousso+webkit@gmail.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Creating a new pseudo-selector in the Styles sidebar doesn't work on first attempt
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceBaseMainjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -2212,10 +2212,11 @@
</span><span class="cx"> linkElement.addEventListener("click", showSourceCodeLocation.bind(this));
</span><span class="cx"> };
</span><span class="cx">
</span><del>-WebInspector.sourceCodeForURL = function(url) {
</del><ins>+WebInspector.sourceCodeForURL = function(url)
+{
</ins><span class="cx"> var sourceCode = WebInspector.frameResourceManager.resourceForURL(url);
</span><span class="cx"> if (!sourceCode) {
</span><del>- sourceCode = WebInspector.debuggerManager.scriptsForURL(url)[0];
</del><ins>+ sourceCode = WebInspector.debuggerManager.scriptsForURL(url, WebInspector.assumingMainTarget())[0];
</ins><span class="cx"> if (sourceCode)
</span><span class="cx"> sourceCode = sourceCode.resource || sourceCode;
</span><span class="cx"> }
</span><span class="lines">@@ -2527,6 +2528,15 @@
</span><span class="cx"> get() { return this.targetManager.targets; }
</span><span class="cx"> });
</span><span class="cx">
</span><ins>+// Many places assume the main target because they cannot yet be
+// used by reached by Worker debugging. Eventually, once all
+// Worker domains have been implemented, all of these must be
+// handled properly.
+WebInspector.assumingMainTarget = function()
+{
+ return WebInspector.mainTarget;
+}
+
</ins><span class="cx"> // OpenResourceDialog delegate
</span><span class="cx">
</span><span class="cx"> WebInspector.dialogWasDismissed = function(dialog)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersDebuggerManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -45,6 +45,8 @@
</span><span class="cx">
</span><span class="cx"> WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainResourceDidChange, this);
</span><span class="cx">
</span><ins>+ this._breakpointsSetting = new WebInspector.Setting("breakpoints", []);
+ this._breakpointsEnabledSetting = new WebInspector.Setting("breakpoints-enabled", true);
</ins><span class="cx"> this._allExceptionsBreakpointEnabledSetting = new WebInspector.Setting("break-on-all-exceptions", false);
</span><span class="cx"> this._allUncaughtExceptionsBreakpointEnabledSetting = new WebInspector.Setting("break-on-all-uncaught-exceptions", false);
</span><span class="cx"> this._assertionsBreakpointEnabledSetting = new WebInspector.Setting("break-on-assertions", false);
</span><span class="lines">@@ -64,19 +66,17 @@
</span><span class="cx"> this._breakpointScriptIdentifierMap = new Map;
</span><span class="cx"> this._breakpointIdMap = new Map;
</span><span class="cx">
</span><ins>+ this._breakOnExceptionsState = "none";
+ this._updateBreakOnExceptionsState();
+
</ins><span class="cx"> this._nextBreakpointActionIdentifier = 1;
</span><span class="cx">
</span><span class="cx"> this._paused = false;
</span><del>- this._pauseReason = null;
- this._pauseData = null;
</del><ins>+ this._activeCallFrame = null;
</ins><span class="cx">
</span><span class="cx"> this._internalWebKitScripts = [];
</span><del>- this._scriptIdMap = new Map;
- this._scriptContentIdentifierMap = new Map;
</del><ins>+ this._targetDebuggerDataMap = new Map;
</ins><span class="cx">
</span><del>- this._breakpointsSetting = new WebInspector.Setting("breakpoints", []);
- this._breakpointsEnabledSetting = new WebInspector.Setting("breakpoints-enabled", true);
-
</del><span class="cx"> // Restore the correct breakpoints enabled setting if Web Inspector had
</span><span class="cx"> // previously been left in a state where breakpoints were temporarily disabled.
</span><span class="cx"> this._temporarilyDisabledBreakpointsRestoreSetting = new WebInspector.Setting("temporarily-disabled-breakpoints-restore", null);
</span><span class="lines">@@ -86,9 +86,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> DebuggerAgent.setBreakpointsActive(this._breakpointsEnabledSetting.value);
</span><ins>+ DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);
</ins><span class="cx">
</span><del>- this._updateBreakOnExceptionsState();
-
</del><span class="cx"> // COMPATIBILITY (iOS 10): DebuggerAgent.setPauseOnAssertions did not exist yet.
</span><span class="cx"> if (DebuggerAgent.setPauseOnAssertions)
</span><span class="cx"> DebuggerAgent.setPauseOnAssertions(this._assertionsBreakpointEnabledSetting.value);
</span><span class="lines">@@ -114,21 +113,6 @@
</span><span class="cx"> return this._paused;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- get pauseReason()
- {
- return this._pauseReason;
- }
-
- get pauseData()
- {
- return this._pauseData;
- }
-
- get callFrames()
- {
- return this._callFrames;
- }
-
</del><span class="cx"> get activeCallFrame()
</span><span class="cx"> {
</span><span class="cx"> return this._activeCallFrame;
</span><span class="lines">@@ -144,6 +128,17 @@
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ dataForTarget(target)
+ {
+ let targetData = this._targetDebuggerDataMap.get(target);
+ if (targetData)
+ return targetData;
+
+ targetData = new WebInspector.DebuggerData(target);
+ this._targetDebuggerDataMap.set(target, targetData);
+ return targetData;
+ }
+
</ins><span class="cx"> get allExceptionsBreakpoint()
</span><span class="cx"> {
</span><span class="cx"> return this._allExceptionsBreakpoint;
</span><span class="lines">@@ -225,11 +220,14 @@
</span><span class="cx">
</span><span class="cx"> this._breakpointsEnabledSetting.value = enabled;
</span><span class="cx">
</span><del>- this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointsEnabledDidChange);
</del><ins>+ this._updateBreakOnExceptionsState();
</ins><span class="cx">
</span><del>- DebuggerAgent.setBreakpointsActive(enabled);
</del><ins>+ for (let target of WebInspector.targets) {
+ target.DebuggerAgent.setBreakpointsActive(enabled);
+ target.DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);
+ }
</ins><span class="cx">
</span><del>- this._updateBreakOnExceptionsState();
</del><ins>+ this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointsEnabledDidChange);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> get breakpointsDisabledTemporarily()
</span><span class="lines">@@ -237,15 +235,17 @@
</span><span class="cx"> return this._temporarilyDisabledBreakpointsRestoreSetting.value !== null;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- scriptForIdentifier(id)
</del><ins>+ scriptForIdentifier(id, target)
</ins><span class="cx"> {
</span><del>- return this._scriptIdMap.get(id) || null;
</del><ins>+ console.assert(target instanceof WebInspector.Target);
+ return this.dataForTarget(target).scriptForIdentifier(id);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- scriptsForURL(url)
</del><ins>+ scriptsForURL(url, target)
</ins><span class="cx"> {
</span><span class="cx"> // FIXME: This may not be safe. A Resource's URL may differ from a Script's URL.
</span><del>- return this._scriptContentIdentifierMap.get(url) || [];
</del><ins>+ console.assert(target instanceof WebInspector.Target);
+ return this.dataForTarget(target).scriptsForURL(url);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> get searchableScripts()
</span><span class="lines">@@ -256,12 +256,15 @@
</span><span class="cx"> get knownNonResourceScripts()
</span><span class="cx"> {
</span><span class="cx"> let knownScripts = [];
</span><del>- for (let script of this._scriptIdMap.values()) {
- if (script.resource)
- continue;
- if (!WebInspector.isDebugUIEnabled() && isWebKitInternalScript(script.sourceURL))
- continue;
- knownScripts.push(script);
</del><ins>+
+ for (let [target, targetData] of this._targetDebuggerDataMap) {
+ for (let script of targetData.scripts) {
+ if (script.resource)
+ continue;
+ if (!WebInspector.isDebugUIEnabled() && isWebKitInternalScript(script.sourceURL))
+ continue;
+ knownScripts.push(script);
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return knownScripts;
</span><span class="lines">@@ -280,6 +283,9 @@
</span><span class="cx"> listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.Paused, resolve);
</span><span class="cx"> });
</span><span class="cx">
</span><ins>+ // FIXME: <https://webkit.org/b/164305> Web Inspector: Worker debugging should pause all targets and view call frames in all targets
+ // We should pause all targets.
+
</ins><span class="cx"> let protocolResult = DebuggerAgent.pause()
</span><span class="cx"> .catch(function(error) {
</span><span class="cx"> listener.disconnect();
</span><span class="lines">@@ -301,7 +307,10 @@
</span><span class="cx"> listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.Resumed, resolve);
</span><span class="cx"> });
</span><span class="cx">
</span><del>- let protocolResult = DebuggerAgent.resume()
</del><ins>+ // FIXME: <https://webkit.org/b/164305> Web Inspector: Worker debugging should pause all targets and view call frames in all targets
+ // We should resume all targets.
+
+ let protocolResult = this._activeCallFrame.target.DebuggerAgent.resume()
</ins><span class="cx"> .catch(function(error) {
</span><span class="cx"> listener.disconnect();
</span><span class="cx"> console.error("DebuggerManager.resume failed: ", error);
</span><span class="lines">@@ -322,7 +331,7 @@
</span><span class="cx"> listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, resolve);
</span><span class="cx"> });
</span><span class="cx">
</span><del>- let protocolResult = DebuggerAgent.stepOver()
</del><ins>+ let protocolResult = this._activeCallFrame.target.DebuggerAgent.stepOver()
</ins><span class="cx"> .catch(function(error) {
</span><span class="cx"> listener.disconnect();
</span><span class="cx"> console.error("DebuggerManager.stepOver failed: ", error);
</span><span class="lines">@@ -343,7 +352,7 @@
</span><span class="cx"> listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, resolve);
</span><span class="cx"> });
</span><span class="cx">
</span><del>- let protocolResult = DebuggerAgent.stepInto()
</del><ins>+ let protocolResult = this._activeCallFrame.target.DebuggerAgent.stepInto()
</ins><span class="cx"> .catch(function(error) {
</span><span class="cx"> listener.disconnect();
</span><span class="cx"> console.error("DebuggerManager.stepInto failed: ", error);
</span><span class="lines">@@ -364,7 +373,7 @@
</span><span class="cx"> listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, resolve);
</span><span class="cx"> });
</span><span class="cx">
</span><del>- let protocolResult = DebuggerAgent.stepOut()
</del><ins>+ let protocolResult = this._activeCallFrame.target.DebuggerAgent.stepOut()
</ins><span class="cx"> .catch(function(error) {
</span><span class="cx"> listener.disconnect();
</span><span class="cx"> console.error("DebuggerManager.stepOut failed: ", error);
</span><span class="lines">@@ -374,9 +383,9 @@
</span><span class="cx"> return Promise.all([managerResult, protocolResult]);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- continueToLocation(scriptId, lineNumber, columnNumber)
</del><ins>+ continueToLocation(script, lineNumber, columnNumber)
</ins><span class="cx"> {
</span><del>- return DebuggerAgent.continueToLocation({scriptId, lineNumber, columnNumber});
</del><ins>+ return script.target.DebuggerAgent.continueToLocation({scriptId: script.id, lineNumber, columnNumber});
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> addBreakpoint(breakpoint, shouldSpeculativelyResolve)
</span><span class="lines">@@ -406,7 +415,8 @@
</span><span class="cx"> this._breakpoints.push(breakpoint);
</span><span class="cx">
</span><span class="cx"> if (!breakpoint.disabled) {
</span><del>- this._setBreakpoint(breakpoint, () => {
</del><ins>+ const specificTarget = undefined;
+ this._setBreakpoint(breakpoint, specificTarget, () => {
</ins><span class="cx"> if (shouldSpeculativelyResolve)
</span><span class="cx"> breakpoint.resolved = true;
</span><span class="cx"> });
</span><span class="lines">@@ -464,9 +474,34 @@
</span><span class="cx"> return this._nextBreakpointActionIdentifier++;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ initializeTarget(target)
+ {
+ let DebuggerAgent = target.DebuggerAgent;
+
+ // Initialize global state.
+ DebuggerAgent.enable();
+ DebuggerAgent.setBreakpointsActive(this._breakpointsEnabledSetting.value);
+ DebuggerAgent.setPauseOnAssertions(this._assertionsBreakpointEnabledSetting.value);
+ DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);
+
+ // FIXME: <https://webkit.org/b/164305> Web Inspector: Worker debugging should pause all targets and view call frames in all targets
+ // Pause this Target if we are currently paused.
+
+ // Initialize breakpoints.
+ this._restoringBreakpoints = true;
+ for (let breakpoint of this._breakpoints) {
+ if (breakpoint.disabled)
+ continue;
+ if (!breakpoint.contentIdentifier)
+ continue;
+ this._setBreakpoint(breakpoint, target);
+ }
+ this._restoringBreakpoints = false;
+ }
+
</ins><span class="cx"> // Protected (Called from WebInspector.DebuggerObserver)
</span><span class="cx">
</span><del>- breakpointResolved(breakpointIdentifier, location)
</del><ins>+ breakpointResolved(target, breakpointIdentifier, location)
</ins><span class="cx"> {
</span><span class="cx"> // Called from WebInspector.DebuggerObserver.
</span><span class="cx">
</span><span class="lines">@@ -478,7 +513,7 @@
</span><span class="cx"> console.assert(breakpoint.identifier === breakpointIdentifier);
</span><span class="cx">
</span><span class="cx"> if (!breakpoint.sourceCodeLocation.sourceCode) {
</span><del>- let sourceCodeLocation = this._sourceCodeLocationFromPayload(location);
</del><ins>+ let sourceCodeLocation = this._sourceCodeLocationFromPayload(target, location);
</ins><span class="cx"> breakpoint.sourceCodeLocation.sourceCode = sourceCodeLocation.sourceCode;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -494,12 +529,9 @@
</span><span class="cx"> WebInspector.Script.resetUniqueDisplayNameNumbers();
</span><span class="cx">
</span><span class="cx"> this._paused = false;
</span><del>- this._pauseReason = null;
- this._pauseData = null;
</del><span class="cx">
</span><span class="cx"> this._internalWebKitScripts = [];
</span><del>- this._scriptIdMap.clear();
- this._scriptContentIdentifierMap.clear();
</del><ins>+ this._targetDebuggerDataMap.clear();
</ins><span class="cx">
</span><span class="cx"> this._ignoreBreakpointDisplayLocationDidChangeEvent = true;
</span><span class="cx">
</span><span class="lines">@@ -519,7 +551,7 @@
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Resumed);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- debuggerDidPause(callFramesPayload, reason, data)
</del><ins>+ debuggerDidPause(target, callFramesPayload, reason, data)
</ins><span class="cx"> {
</span><span class="cx"> // Called from WebInspector.DebuggerObserver.
</span><span class="cx">
</span><span class="lines">@@ -528,17 +560,17 @@
</span><span class="cx"> this._delayedResumeTimeout = undefined;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var wasStillPaused = this._paused;
</del><ins>+ let wasPaused = this._paused;
</ins><span class="cx">
</span><span class="cx"> this._paused = true;
</span><del>- this._callFrames = [];
</del><span class="cx">
</span><del>- this._pauseReason = this._pauseReasonFromPayload(reason);
- this._pauseData = data || null;
</del><ins>+ let callFrames = [];
+ let pauseReason = this._pauseReasonFromPayload(reason);
+ let pauseData = data || null;
</ins><span class="cx">
</span><span class="cx"> for (var i = 0; i < callFramesPayload.length; ++i) {
</span><span class="cx"> var callFramePayload = callFramesPayload[i];
</span><del>- var sourceCodeLocation = this._sourceCodeLocationFromPayload(callFramePayload.location);
</del><ins>+ var sourceCodeLocation = this._sourceCodeLocationFromPayload(target, callFramePayload.location);
</ins><span class="cx"> // FIXME: There may be useful call frames without a source code location (native callframes), should we include them?
</span><span class="cx"> if (!sourceCodeLocation)
</span><span class="cx"> continue;
</span><span class="lines">@@ -549,34 +581,39 @@
</span><span class="cx"> if (!WebInspector.isDebugUIEnabled() && isWebKitInternalScript(sourceCodeLocation.sourceCode.sourceURL))
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- let scopeChain = this._scopeChainFromPayload(callFramePayload.scopeChain);
- let callFrame = WebInspector.CallFrame.fromDebuggerPayload(callFramePayload, scopeChain, sourceCodeLocation);
- this._callFrames.push(callFrame);
</del><ins>+ let scopeChain = this._scopeChainFromPayload(target, callFramePayload.scopeChain);
+ let callFrame = WebInspector.CallFrame.fromDebuggerPayload(target, callFramePayload, scopeChain, sourceCodeLocation);
+ callFrames.push(callFrame);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- this._activeCallFrame = this._callFrames[0];
</del><ins>+ let activeCallFrame = callFrames[0];
</ins><span class="cx">
</span><del>- if (!this._activeCallFrame) {
</del><ins>+ if (!activeCallFrame) {
</ins><span class="cx"> // This indicates we were pausing in internal scripts only (Injected Scripts, built-ins).
</span><span class="cx"> // Just resume and skip past this pause.
</span><del>- DebuggerAgent.resume();
- this._didResumeInternal();
</del><ins>+ target.DebuggerAgent.resume();
+ this._didResumeInternal(target);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (!wasStillPaused)
</del><ins>+ let targetData = this._targetDebuggerDataMap.get(target);
+ targetData.updateForPause(callFrames, pauseReason, pauseData);
+
+ this._activeCallFrame = activeCallFrame;
+
+ if (!wasPaused)
</ins><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Paused);
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.CallFramesDidChange);
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- debuggerDidResume()
</del><ins>+ debuggerDidResume(target)
</ins><span class="cx"> {
</span><span class="cx"> // Called from WebInspector.DebuggerObserver.
</span><span class="cx">
</span><span class="cx"> // We delay clearing the state and firing events so the user interface does not flash
</span><span class="cx"> // between brief steps or successive breakpoints.
</span><del>- this._delayedResumeTimeout = setTimeout(this._didResumeInternal.bind(this), 50);
</del><ins>+ this._delayedResumeTimeout = setTimeout(this._didResumeInternal.bind(this, target), 50);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> playBreakpointActionSound(breakpointActionIdentifier)
</span><span class="lines">@@ -586,18 +623,19 @@
</span><span class="cx"> InspectorFrontendHost.beep();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- scriptDidParse(scriptIdentifier, url, startLine, startColumn, endLine, endColumn, isContentScript, sourceURL, sourceMapURL)
</del><ins>+ scriptDidParse(target, scriptIdentifier, url, startLine, startColumn, endLine, endColumn, isContentScript, sourceURL, sourceMapURL)
</ins><span class="cx"> {
</span><span class="cx"> // Called from WebInspector.DebuggerObserver.
</span><span class="cx">
</span><span class="cx"> // Don't add the script again if it is already known.
</span><del>- if (this._scriptIdMap.has(scriptIdentifier)) {
- const script = this._scriptIdMap.get(scriptIdentifier);
- console.assert(script.url === (url || null));
- console.assert(script.range.startLine === startLine);
- console.assert(script.range.startColumn === startColumn);
- console.assert(script.range.endLine === endLine);
- console.assert(script.range.endColumn === endColumn);
</del><ins>+ let targetData = this.dataForTarget(target);
+ let existingScript = targetData.scriptForIdentifier(scriptIdentifier);
+ if (existingScript) {
+ console.assert(existingScript.url === (url || null));
+ console.assert(existingScript.range.startLine === startLine);
+ console.assert(existingScript.range.startColumn === startColumn);
+ console.assert(existingScript.range.endLine === endLine);
+ console.assert(existingScript.range.endColumn === endColumn);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -604,19 +642,15 @@
</span><span class="cx"> if (!WebInspector.isDebugUIEnabled() && isWebKitInternalScript(sourceURL))
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- let script = new WebInspector.Script(scriptIdentifier, new WebInspector.TextRange(startLine, startColumn, endLine, endColumn), url, isContentScript, sourceURL, sourceMapURL);
</del><ins>+ let script = new WebInspector.Script(target, scriptIdentifier, new WebInspector.TextRange(startLine, startColumn, endLine, endColumn), url, isContentScript, sourceURL, sourceMapURL);
</ins><span class="cx">
</span><del>- this._scriptIdMap.set(scriptIdentifier, script);
-
- if (script.contentIdentifier) {
- let scripts = this._scriptContentIdentifierMap.get(script.contentIdentifier);
- if (!scripts) {
- scripts = [];
- this._scriptContentIdentifierMap.set(script.contentIdentifier, scripts);
- }
- scripts.push(script);
</del><ins>+ if (!target.mainResource && target.type === WebInspector.Target.Type.Worker) {
+ if (script.url === target.name)
+ target.mainResource = script;
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+ targetData.addScript(script);
+
</ins><span class="cx"> if (isWebKitInternalScript(script.sourceURL)) {
</span><span class="cx"> this._internalWebKitScripts.push(script);
</span><span class="cx"> if (!WebInspector.isDebugUIEnabled())
</span><span class="lines">@@ -632,9 +666,10 @@
</span><span class="cx">
</span><span class="cx"> // Private
</span><span class="cx">
</span><del>- _sourceCodeLocationFromPayload(payload)
</del><ins>+ _sourceCodeLocationFromPayload(target, payload)
</ins><span class="cx"> {
</span><del>- let script = this._scriptIdMap.get(payload.scriptId);
</del><ins>+ let targetData = this.dataForTarget(target);
+ let script = targetData.scriptForIdentifier(payload.scriptId);
</ins><span class="cx"> if (!script)
</span><span class="cx"> return null;
</span><span class="cx">
</span><span class="lines">@@ -641,15 +676,15 @@
</span><span class="cx"> return script.createSourceCodeLocation(payload.lineNumber, payload.columnNumber);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _scopeChainFromPayload(payload)
</del><ins>+ _scopeChainFromPayload(target, payload)
</ins><span class="cx"> {
</span><del>- var scopeChain = [];
- for (var i = 0; i < payload.length; ++i)
- scopeChain.push(this._scopeChainNodeFromPayload(payload[i]));
</del><ins>+ let scopeChain = [];
+ for (let i = 0; i < payload.length; ++i)
+ scopeChain.push(this._scopeChainNodeFromPayload(target, payload[i]));
</ins><span class="cx"> return scopeChain;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _scopeChainNodeFromPayload(payload)
</del><ins>+ _scopeChainNodeFromPayload(target, payload)
</ins><span class="cx"> {
</span><span class="cx"> var type = null;
</span><span class="cx"> switch (payload.type) {
</span><span class="lines">@@ -686,7 +721,7 @@
</span><span class="cx"> console.error("Unknown type: " + payload.type);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- let object = WebInspector.RemoteObject.fromPayload(payload.object);
</del><ins>+ let object = WebInspector.RemoteObject.fromPayload(payload.object, target);
</ins><span class="cx"> return new WebInspector.ScopeChainNode(type, [object], payload.name, payload.location, payload.empty);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -728,12 +763,11 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _setBreakpoint(breakpoint, callback)
</del><ins>+ _setBreakpoint(breakpoint, specificTarget, callback)
</ins><span class="cx"> {
</span><del>- console.assert(!breakpoint.identifier);
</del><span class="cx"> console.assert(!breakpoint.disabled);
</span><span class="cx">
</span><del>- if (breakpoint.identifier || breakpoint.disabled)
</del><ins>+ if (breakpoint.disabled)
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (!this._restoringBreakpoints && !this.breakpointsDisabledTemporarily) {
</span><span class="lines">@@ -742,7 +776,7 @@
</span><span class="cx"> this.breakpointsEnabled = true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- function didSetBreakpoint(error, breakpointIdentifier, locations)
</del><ins>+ function didSetBreakpoint(target, error, breakpointIdentifier, locations)
</ins><span class="cx"> {
</span><span class="cx"> if (error)
</span><span class="cx"> return;
</span><span class="lines">@@ -756,7 +790,7 @@
</span><span class="cx"> locations = [locations];
</span><span class="cx">
</span><span class="cx"> for (let location of locations)
</span><del>- this.breakpointResolved(breakpointIdentifier, location);
</del><ins>+ this.breakpointResolved(target, breakpointIdentifier, location);
</ins><span class="cx">
</span><span class="cx"> if (typeof callback === "function")
</span><span class="cx"> callback();
</span><span class="lines">@@ -764,17 +798,19 @@
</span><span class="cx">
</span><span class="cx"> // The breakpoint will be resolved again by calling DebuggerAgent, so mark it as unresolved.
</span><span class="cx"> // If something goes wrong it will stay unresolved and show up as such in the user interface.
</span><del>- breakpoint.resolved = false;
</del><ins>+ // When setting for a new target, don't change the resolved target.
+ if (!specificTarget)
+ breakpoint.resolved = false;
</ins><span class="cx">
</span><span class="cx"> // Convert BreakpointAction types to DebuggerAgent protocol types.
</span><span class="cx"> // NOTE: Breakpoint.options returns new objects each time, so it is safe to modify.
</span><span class="cx"> // COMPATIBILITY (iOS 7): Debugger.BreakpointActionType did not exist yet.
</span><del>- var options;
</del><ins>+ let options;
</ins><span class="cx"> if (DebuggerAgent.BreakpointActionType) {
</span><span class="cx"> options = breakpoint.options;
</span><span class="cx"> if (options.actions.length) {
</span><del>- for (var i = 0; i < options.actions.length; ++i)
- options.actions[i].type = this._debuggerBreakpointActionType(options.actions[i].type);
</del><ins>+ for (let action of options.actions)
+ action.type = this._debuggerBreakpointActionType(action.type);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -781,20 +817,24 @@
</span><span class="cx"> // COMPATIBILITY (iOS 7): iOS 7 and earlier, DebuggerAgent.setBreakpoint* took a "condition" string argument.
</span><span class="cx"> // This has been replaced with an "options" BreakpointOptions object.
</span><span class="cx"> if (breakpoint.contentIdentifier) {
</span><del>- DebuggerAgent.setBreakpointByUrl.invoke({
- lineNumber: breakpoint.sourceCodeLocation.lineNumber,
- url: breakpoint.contentIdentifier,
- urlRegex: undefined,
- columnNumber: breakpoint.sourceCodeLocation.columnNumber,
- condition: breakpoint.condition,
- options
- }, didSetBreakpoint.bind(this));
</del><ins>+ let targets = specificTarget ? [specificTarget] : WebInspector.targets;
+ for (let target of targets) {
+ target.DebuggerAgent.setBreakpointByUrl.invoke({
+ lineNumber: breakpoint.sourceCodeLocation.lineNumber,
+ url: breakpoint.contentIdentifier,
+ urlRegex: undefined,
+ columnNumber: breakpoint.sourceCodeLocation.columnNumber,
+ condition: breakpoint.condition,
+ options
+ }, didSetBreakpoint.bind(this, target), target.DebuggerAgent);
+ }
</ins><span class="cx"> } else if (breakpoint.scriptIdentifier) {
</span><del>- DebuggerAgent.setBreakpoint.invoke({
</del><ins>+ let target = breakpoint.target;
+ target.DebuggerAgent.setBreakpoint.invoke({
</ins><span class="cx"> location: {scriptId: breakpoint.scriptIdentifier, lineNumber: breakpoint.sourceCodeLocation.lineNumber, columnNumber: breakpoint.sourceCodeLocation.columnNumber},
</span><span class="cx"> condition: breakpoint.condition,
</span><span class="cx"> options
</span><del>- }, didSetBreakpoint.bind(this));
</del><ins>+ }, didSetBreakpoint.bind(this, target), target.DebuggerAgent);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -819,7 +859,12 @@
</span><span class="cx"> callback();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- DebuggerAgent.removeBreakpoint(breakpoint.identifier, didRemoveBreakpoint.bind(this));
</del><ins>+ if (breakpoint.target)
+ breakpoint.target.DebuggerAgent.removeBreakpoint(breakpoint.identifier, didRemoveBreakpoint.bind(this));
+ else {
+ for (let target of WebInspector.targets)
+ target.DebuggerAgent.removeBreakpoint(breakpoint.identifier, didRemoveBreakpoint.bind(this));
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _breakpointDisplayLocationDidChange(event)
</span><span class="lines">@@ -853,6 +898,8 @@
</span><span class="cx"> this.breakpointsEnabled = true;
</span><span class="cx"> this._allExceptionsBreakpointEnabledSetting.value = !breakpoint.disabled;
</span><span class="cx"> this._updateBreakOnExceptionsState();
</span><ins>+ for (let target of WebInspector.targets)
+ target.DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -861,6 +908,8 @@
</span><span class="cx"> this.breakpointsEnabled = true;
</span><span class="cx"> this._allUncaughtExceptionsBreakpointEnabledSetting.value = !breakpoint.disabled;
</span><span class="cx"> this._updateBreakOnExceptionsState();
</span><ins>+ for (let target of WebInspector.targets)
+ target.DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -868,7 +917,8 @@
</span><span class="cx"> if (!breakpoint.disabled && !this.breakpointsDisabledTemporarily)
</span><span class="cx"> this.breakpointsEnabled = true;
</span><span class="cx"> this._assertionsBreakpointEnabledSetting.value = !breakpoint.disabled;
</span><del>- DebuggerAgent.setPauseOnAssertions(this._assertionsBreakpointEnabledSetting.value);
</del><ins>+ for (let target of WebInspector.targets)
+ target.DebuggerAgent.setPauseOnAssertions(this._assertionsBreakpointEnabledSetting.value);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -941,10 +991,10 @@
</span><span class="cx"> if (!event.target.isMainFrame())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- this._didResumeInternal();
</del><ins>+ this._didResumeInternal(WebInspector.mainTarget);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- _didResumeInternal()
</del><ins>+ _didResumeInternal(target)
</ins><span class="cx"> {
</span><span class="cx"> if (!this._paused)
</span><span class="cx"> return;
</span><span class="lines">@@ -955,9 +1005,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> this._paused = false;
</span><del>- this._callFrames = null;
</del><span class="cx"> this._activeCallFrame = null;
</span><span class="cx">
</span><ins>+ this.dataForTarget(target).updateForResume();
+
</ins><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Resumed);
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.CallFramesDidChange);
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);
</span><span class="lines">@@ -974,6 +1025,8 @@
</span><span class="cx"> state = "uncaught";
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ this._breakOnExceptionsState = state;
+
</ins><span class="cx"> switch (state) {
</span><span class="cx"> case "all":
</span><span class="cx"> // Mark the uncaught breakpoint as unresolved since "all" includes "uncaught".
</span><span class="lines">@@ -986,8 +1039,6 @@
</span><span class="cx"> this._allUncaughtExceptionsBreakpoint.resolved = true;
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>-
- DebuggerAgent.setPauseOnExceptions(state);
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _saveBreakpoints()
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersFrameResourceManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -485,7 +485,7 @@
</span><span class="cx">
</span><span class="cx"> var sourceCode = WebInspector.frameResourceManager.resourceForURL(url);
</span><span class="cx"> if (!sourceCode)
</span><del>- sourceCode = WebInspector.debuggerManager.scriptsForURL(url)[0];
</del><ins>+ sourceCode = WebInspector.debuggerManager.scriptsForURL(url, WebInspector.mainTarget)[0];
</ins><span class="cx">
</span><span class="cx"> if (!sourceCode)
</span><span class="cx"> return null;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersJavaScriptRuntimeCompletionProviderjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -223,8 +223,11 @@
</span><span class="cx">
</span><span class="cx"> if (!base) {
</span><span class="cx"> var commandLineAPI = ["$", "$$", "$x", "dir", "dirxml", "keys", "values", "profile", "profileEnd", "monitorEvents", "unmonitorEvents", "inspect", "copy", "clear", "getEventListeners", "$0", "$_"];
</span><del>- if (WebInspector.debuggerManager.paused && WebInspector.debuggerManager.pauseReason === WebInspector.DebuggerManager.PauseReason.Exception)
- commandLineAPI.push("$exception");
</del><ins>+ if (WebInspector.debuggerManager.paused) {
+ let targetData = WebInspector.debuggerManager.dataForTarget(WebInspector.runtimeManager.activeExecutionContext.target);
+ if (targetData.pauseReason === WebInspector.DebuggerManager.PauseReason.Exception)
+ commandLineAPI.push("$exception");
+ }
</ins><span class="cx"> for (var i = 0; i < commandLineAPI.length; ++i)
</span><span class="cx"> propertyNames[commandLineAPI[i]] = true;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersProbeManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/ProbeManager.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/ProbeManager.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/ProbeManager.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -60,12 +60,13 @@
</span><span class="cx">
</span><span class="cx"> // Protected (called by WebInspector.DebuggerObserver)
</span><span class="cx">
</span><del>- didSampleProbe(sample)
</del><ins>+ didSampleProbe(target, sample)
</ins><span class="cx"> {
</span><span class="cx"> console.assert(this._probesByIdentifier.has(sample.probeId), "Unknown probe identifier specified for sample: ", sample);
</span><del>- var probe = this._probesByIdentifier.get(sample.probeId);
- var elapsedTime = WebInspector.timelineManager.computeElapsedTime(sample.timestamp);
- probe.addSample(new WebInspector.ProbeSample(sample.sampleId, sample.batchId, elapsedTime, sample.payload));
</del><ins>+ let probe = this._probesByIdentifier.get(sample.probeId);
+ let elapsedTime = WebInspector.timelineManager.computeElapsedTime(sample.timestamp);
+ let object = WebInspector.RemoteObject.fromPayload(sample.payload, target);
+ probe.addSample(new WebInspector.ProbeSample(sample.sampleId, sample.batchId, elapsedTime, object));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Private
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersRuntimeManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/RuntimeManager.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/RuntimeManager.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/RuntimeManager.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -81,6 +81,11 @@
</span><span class="cx"> let target = this._activeExecutionContext.target;
</span><span class="cx"> let executionContextId = this._activeExecutionContext.id;
</span><span class="cx">
</span><ins>+ if (WebInspector.debuggerManager.activeCallFrame) {
+ target = WebInspector.debuggerManager.activeCallFrame.target;
+ executionContextId = target.executionContext.id;
+ }
+
</ins><span class="cx"> function evalCallback(error, result, wasThrown, savedResultIndex)
</span><span class="cx"> {
</span><span class="cx"> this.dispatchEventToListeners(WebInspector.RuntimeManager.Event.DidEvaluate, {objectGroup});
</span><span class="lines">@@ -99,7 +104,7 @@
</span><span class="cx">
</span><span class="cx"> if (WebInspector.debuggerManager.activeCallFrame) {
</span><span class="cx"> // COMPATIBILITY (iOS 8): "saveResult" did not exist.
</span><del>- DebuggerAgent.evaluateOnCallFrame.invoke({callFrameId: WebInspector.debuggerManager.activeCallFrame.id, expression, objectGroup, includeCommandLineAPI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, saveResult}, evalCallback.bind(this));
</del><ins>+ target.DebuggerAgent.evaluateOnCallFrame.invoke({callFrameId: WebInspector.debuggerManager.activeCallFrame.id, expression, objectGroup, includeCommandLineAPI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, saveResult}, evalCallback.bind(this), target.DebuggerAgent);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersTimelineManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -684,7 +684,7 @@
</span><span class="cx"> if (!payload)
</span><span class="cx"> return null;
</span><span class="cx">
</span><del>- return payload.map(WebInspector.CallFrame.fromPayload);
</del><ins>+ return payload.map((x) => WebInspector.CallFrame.fromPayload(WebInspector.assumingMainTarget(), x));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _addRecord(record)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentpng"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1,246 +0,0 @@
</span><del>-\x89PNG
-
--IHDR\xF3\xFFa        pHYs\x9A\x9CH\xACiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
- xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
- xmlns:exif="http://ns.adobe.com/exif/1.0/">
- <xmp:CreatorTool>Adobe Photoshop CC 2014 (Macintosh)</xmp:CreatorTool>
- <xmp:CreateDate>2011-11-22T18:31:28-08:00</xmp:CreateDate>
- <xmp:ModifyDate>2016-10-24T15:44:14-07:00</xmp:ModifyDate>
- <xmp:MetadataDate>2016-10-24T15:44:14-07:00</xmp:MetadataDate>
- <dc:format>image/png</dc:format>
- <photoshop:ColorMode>3</photoshop:ColorMode>
- <photoshop:TextLayers>
- <rdf:Bag>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
- <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>css</photoshop:LayerName>
- <photoshop:LayerText>css</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>js</photoshop:LayerName>
- <photoshop:LayerText>js</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>jpg</photoshop:LayerName>
- <photoshop:LayerText>jpg</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>png</photoshop:LayerName>
- <photoshop:LayerText>png</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>pdf</photoshop:LayerName>
- <photoshop:LayerText>pdf</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>gif</photoshop:LayerName>
- <photoshop:LayerText>gif</photoshop:LayerText>
- </rdf:li>
- </rdf:Bag>
- </photoshop:TextLayers>
- <photoshop:DocumentAncestors>
- <rdf:Bag>
- <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
- </rdf:Bag>
- </photoshop:DocumentAncestors>
- <xmpMM:InstanceID>xmp.iid:02106927-dba0-495d-8db3-00d38cba3fb7</xmpMM:InstanceID>
- <xmpMM:DocumentID>adobe:docid:photoshop:c5fc32e0-dac9-1179-b0a7-af0d0eca52b5</xmpMM:DocumentID>
- <xmpMM:OriginalDocumentID>xmp.did:008011740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
- <xmpMM:History>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>created</stEvt:action>
- <stEvt:instanceID>xmp.iid:008011740720681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:26:36-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:044149D31420681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:26:36-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:999c634d-3dd0-4e03-ab6e-119016768c26</stEvt:instanceID>
- <stEvt:when>2016-10-24T15:44:14-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>derived</stEvt:action>
- <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:02106927-dba0-495d-8db3-00d38cba3fb7</stEvt:instanceID>
- <stEvt:when>2016-10-24T15:44:14-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- </rdf:Seq>
- </xmpMM:History>
- <xmpMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>xmp.iid:999c634d-3dd0-4e03-ab6e-119016768c26</stRef:instanceID>
- <stRef:documentID>xmp.did:008011740720681195FEB766E6513CAB</stRef:documentID>
- <stRef:originalDocumentID>xmp.did:008011740720681195FEB766E6513CAB</stRef:originalDocumentID>
- </xmpMM:DerivedFrom>
- <tiff:Orientation>1</tiff:Orientation>
- <tiff:XResolution>720090/10000</tiff:XResolution>
- <tiff:YResolution>720090/10000</tiff:YResolution>
- <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
- <exif:ColorSpace>65535</exif:ColorSpace>
- <exif:PixelXDimension>16</exif:PixelXDimension>
- <exif:PixelYDimension>16</exif:PixelYDimension>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?>\x86'\xAC cHRMz%\x80\x83\xF9\xFF\x80\xE9u0\xEA`:\x98o\x92_\xC5F\xD5IDATxڄ\x92?K\x9BQ\x87\x9Fs\xEE\xDF*\xA1\xAEi\x86ԶC+\xDB\xC1\xC1v\xEF\xD8a\xA0\xFC
-:D\xFA\xBA\xBF@E\xB7\x94$NJ\xA7J\xA4\x8AMC^C-19\x92@\xFE\xDA.\xF7\xFC\xCEs~\xE7\xDE+f\x80\x88,sL        3+L:\xF7\xF6s\xE5r9?I\x94\xCDf\x91\xD5I\x90A\x80\x88A        D\x84z\xBDN\xA9Tʋ\xC8+3j\xA2\xA3b\xE7\xDC\xD0RUT\xDF\xF7)\x95J9Y\xBDׁ\xE7yc#8\xE7\x87\xC3}\xC8k3ˍTu* \x93\xC9
-\x85d\x92u\xCE\xE1y'\xDFğE\xF8\xFC\xF1/f\xF0\xFE\xC3
-\xDE\xCDc/\x91H\x84T*\xA5GPU\xBE\xE7\x9A\xFC.\xB6\xC8\xAD\xB3\xB84\xC0\x97O5b\x8Ba.~\x84Yy\xF3pȁ\x8E\xCFp\xF1\xB3\xC5\xC6v\x8C\xE8|\x88\xE8|\x88\x8D\xED~\xB5H\xBC\x98\xC59w?`w\xEB\x92GO|
-\xFB5\x96ע,\xAFE)\xEC?\xF5\xD9ݺDU\xA7ށ\xA8*"\xD2}:Q\xB4\xDB-ETQ\x951fF\xEF;\xAFw:\xCAMK'\x8Bּ\xBD\xB3\x83\xBD+;ػ\xB2\xE6흥\x93E\xCAM\xEBt:\xAC\xF7\xEB\x86F8=i\xB0\xF7\xD9\xD9<\xA7\xB4\xA9mv6\xCFY\x88\xFB\x9C7\x86\xB4\xA3\xDEZ/\x8E+V\xAD\xB4,\x9D<\xB3t\xF2̪\x95\x96V\xFAi\xEBi\xBBu\x93\xFF\x8BA\xC0\xE0%^\x8B\xC8;`\x98\xEB\xE5\xDA@\xA87\xC0u\xBF\xE8\xDF\x95v_\xDA\xE1D\xBFIEND\xAEB`\x82
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocument2xpng"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1,249 +0,0 @@
</span><del>-\x89PNG
-
--IHDR szz\xF4        pHYs\x9A\x9CH\xACiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
- xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
- xmlns:exif="http://ns.adobe.com/exif/1.0/">
- <xmp:CreatorTool>Adobe Photoshop CC 2014 (Macintosh)</xmp:CreatorTool>
- <xmp:CreateDate>2011-11-22T18:31:18-08:00</xmp:CreateDate>
- <xmp:ModifyDate>2016-10-24T15:42:45-07:00</xmp:ModifyDate>
- <xmp:MetadataDate>2016-10-24T15:42:45-07:00</xmp:MetadataDate>
- <dc:format>image/png</dc:format>
- <photoshop:ColorMode>3</photoshop:ColorMode>
- <photoshop:TextLayers>
- <rdf:Bag>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
- <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>css</photoshop:LayerName>
- <photoshop:LayerText>css</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>js</photoshop:LayerName>
- <photoshop:LayerText>js</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>jpg</photoshop:LayerName>
- <photoshop:LayerText>jpg</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>png</photoshop:LayerName>
- <photoshop:LayerText>png</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>pdf</photoshop:LayerName>
- <photoshop:LayerText>pdf</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>gif</photoshop:LayerName>
- <photoshop:LayerText>gif</photoshop:LayerText>
- </rdf:li>
- </rdf:Bag>
- </photoshop:TextLayers>
- <photoshop:DocumentAncestors>
- <rdf:Bag>
- <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
- </rdf:Bag>
- </photoshop:DocumentAncestors>
- <xmpMM:InstanceID>xmp.iid:3b3dbbff-c21f-4795-b0f5-1f3a88b7563c</xmpMM:InstanceID>
- <xmpMM:DocumentID>adobe:docid:photoshop:8fc9505e-dac9-1179-b0a7-af0d0eca52b5</xmpMM:DocumentID>
- <xmpMM:OriginalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
- <xmpMM:History>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>created</stEvt:action>
- <stEvt:instanceID>xmp.iid:FE7F11740720681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FF7F11740720681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:91ab95ac-682e-4dcd-8e99-4c1aab38c735</stEvt:instanceID>
- <stEvt:when>2016-10-24T15:42:45-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>derived</stEvt:action>
- <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:3b3dbbff-c21f-4795-b0f5-1f3a88b7563c</stEvt:instanceID>
- <stEvt:when>2016-10-24T15:42:45-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- </rdf:Seq>
- </xmpMM:History>
- <xmpMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>xmp.iid:91ab95ac-682e-4dcd-8e99-4c1aab38c735</stRef:instanceID>
- <stRef:documentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:documentID>
- <stRef:originalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:originalDocumentID>
- </xmpMM:DerivedFrom>
- <tiff:Orientation>1</tiff:Orientation>
- <tiff:XResolution>720090/10000</tiff:XResolution>
- <tiff:YResolution>720090/10000</tiff:YResolution>
- <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
- <exif:ColorSpace>65535</exif:ColorSpace>
- <exif:PixelXDimension>32</exif:PixelXDimension>
- <exif:PixelYDimension>32</exif:PixelYDimension>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?>z\xB0\x93 cHRMz%\x80\x83\xF9\xFF\x80\xE9u0\xEA`:\x98o\x92_\xC5F/IDATxڴ\x96H\xD4g\xC7_\xCF\xF3\xFDvw\xDE}\xD53\xCD5!q\x83Y0\x96\xC5~\xA4m\xCDʑ,\x8C~h\x83"\x83A\x8Cm\xD1\xDA
-[ˈ-\xFAk\x8D\xC661ˍ\xC9\xB5\x94\xC0Z+\x96\xC1X\xEC\x8Frq\x90M;ϻ\xEF\x9D\xDE\xE5\xF7\xFB\xEC\xBD\x9B\xD6iw\xDA>\xF0p\xF0\xB9\xE7\xC7\xEB\xFB~>\x9F\xCF\xF3J)&\x9A\xE29\xA0\x88\xF4-\xF4*\xA5\xFENg\x91\x9E\xC4Wt\xF7\xEE\xDD\xEF\xB5P)\x85mی\x8E\x8Eb\x9A&\xA1P\xE8\x9F\xE6\xE6\xE6F!D\x87R\xAAw6 >@)\x85eY\x98\xA6I~SS\xD3\xE1X,6Gў*D2\x809B\x84\xD3.B`\xDB6\x9A\xA6\xE1p8!:\x8F=zȶmR\x85H\xAA@*RJl\xDB\xC6\xE1p\x90\x91\x91\x81\xCF磸\xB8X?r\xE4\xC8!˲\x84\xE2̣ \xF4\xE9\xBE0\x93R\xA2\xEB:\x86ap\xE7\xCE\xA4\x94\xE8MMM\x9F\x8C\xEF3-\x84>\xD5\xE1\xA9!\x88g\x91\xDB\xEDƲ,\x84H)Y\xB0`\x81\xDE\xD8\xD8xh\xDC7%Ĭ\x88\xAB\xE0r\xB9\x90R"\x84@\xD7u\x94Ri\xFB\xF7\xEF\x8F\xC7DR\x88Y)0Q\xA7Ӊ\xD7\xEBe\xEF\xF8|>l\xDB\xC60
-\xB5\xBA\xBA\xBA\x8F\xEE߿K\x96\xA2"I!\xDA\xE2\xF7\xFB[M\xD3L\xAB
-\xC5ӱ\xAF\xAF\x8F@ @$!\x87QJa\xC6ݝ;w\xD6*\xA5.\xA4\xA4\x80\x942-)%YYYx<\xA2\xD1(\xD1h\xD34dhh۶\x9F\xBC\x8F-:\xDB\xC2\\xEC\xA0\xEC\xF5*6{\xD04-\xA7Ӊ"Q#\xC3`tt@K        @J\xF9\x90\xBFus\xE3j\x94Un\x9E~\xD6\xC1\xA5\x86\xD9\xF3\xF9<\xD4\xF7\xB3\xA6&\x93\x9B\xC4\xE8\xEE\xB3p\xE9JW:\xB1\xA4\xEB:\xB6m'\xAA\xECCew\xBA@Bp\xA5k\x98s-&\x85\xC5N\xD0\xDD\xC0\xE1\x928\c[twD8y0@\xD1"'\x9D\xA7\x86\xE9\xE9\xC5\xE9t\xE2p8p\xB9\x<\x91rLT\xE0\xCF+1\xCA\xD7\xAC\xDA`\xB0\xF4e7\x9F\xED\xEAg\xD9*wbβUn.v\x84y\xEFX>\xDE<-!7\xAEFY^\xE1N\\x85\xAE\xEB3/D+\xD7\x9C8p\x8F\xA5+\xDD\xE4\xCC\xD3\xF9\xE0ē\x8CDl\xAA\xEB\xBDT\xC5W`\xC0\xA2\xB3-ě\xBB\xE7&b"^-\xD3\x98\xA8\xC03\x8B3\xA8\xAC\xCD\xE6خ~>\xFC\xA2s\xC8\xE6\x9BO\xEF\x8Dx2%u\xEF\xE4bdK\x8E\xED\xEAcmm6\xC5%n4Mò\xAC\x99\x9Cm        p\xE1\xBB\xCB+<H)ii\xE0\xC5\xCALJV\x8C\xD2s)BK\xB3\x9F\x86}\xF9\x94\xACps\xBE5\xC8\xF9SA^\xA9\xCEdmmv"gt]\xEDA\xBF.\
xC4\xE1        \xD9\xC3A\x8B\xD22Ob~i\x99\x87\xCE\xD3CD\x87r\xD9ؐK,\xAAس\xED6\xAF\xD5\xE5\xCC \xAE\x80H\xA4\xA5\xBF\xCF\xE4\x85*\xEE\x8B\xFB\xA5T\x89\xB5L\xF8M[\x81\x8AM^\xF6lk\xF3\x9E_\x9Dɦ\xB7\xF2\xF0di\\xBBfI\x99\xC0\xEFM<Y\x8D\xD3\xC7\xF8\xF5|(\xB16\xBE\xCFTI߂h4\xDA:^\xB9v\xFE\xF4 ]\xED>\xFE\xE6)B\x8B/\xF7aY\xD9o\xBC?\x9FL\xAF\xC6\xEE\xBA[\xBC\xBA\xC1\xCB\xEA\xCD9\x93\xBFT\xD7q:\x9D5J\xA9SI{\xBB\xF8\xB6\xC4b1\x89D\xA3\xE7\x97{\xAAa\xF5u\xE5\xEB-N\xF2\xFBL\xE50'\xF9|\xBDAհ\xFA\xBA\xBAvy`\x92?\x8B)`˃\xE7\xC9\xE9b >\xBA\xBE-\xB0n{.y\xF3,vo\xBDI\xDB\xF1~܆\x8E\xDB\xD0i;\xDE\xCF\xEE\xAD7        X\xE4\xCDw\xB0n{.]\xED\x81I{L\xF5\xB6\xA4T\x8A\xBF`\xD0yf\x90s\xA7\xFC\xEC\xDBq\x8B\x8AMs\xB9|v(\xF1\xFF\xE5\xB3CTl\x9A˾\xB78\xD7\xEA\xA7\xF3\xCC %/eN\xDAcV-Yy\xD5X*\xF5\xFC\xE2\xEDXX\xEA\xE1ǯ\xEEq?\xAA\xF3+k\xF2(Z\x98\xC1Om~\xAAw\xE4S\xB6Λ\xD2\xEB\x9ArGT^\x95Cy\xD5\x81\xB5fs.\xEFn\xFC\x80ʚ<\x84,Zb\xB0h\x89\x91\xD6\xF3\x9E4,\xCBj}\xD
0?[\x94\xCA}\xB6-i:\xFF[W<Kp[JYd<泆\x81۩Ā\xC8 \x84\x94R\x91\x89\xCE=\xDCU\xC1'IEND\xAEB`\x82
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentLargepng"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1,239 +0,0 @@
</span><del>-\x89PNG
-
--IHDR szz\xF4        pHYs\x9A\x9CiCCPPhotoshop ICC profilexڍ\x93\xCBoU\xC6c\x8F\xA7\x95\xB1\xC1\xB4Ū\xD0\x8B6BI4}\xA8M\x84hkǮ\x956k\x9A'B\xAA&\xE3k{\xC8\xCDxzg\x9C>\xD4\xEA\x86-\x88=\xE2!V\xFC\xEA\x82]W(\x95\xAA\x82\x90*\xD6TT\xA9\xA8T\xCC\x99\x96@9\xABs\xBF\xF3\x9D\xEF|\xF7\]\xC8}ꆡ\xCA\xD8b\xEDTK\xA2\xB1\xBA&v\xFDD\x86W\x99\xA0\xC0\x84\xEBEa\xB1^_p\xC3P\xF1\x8Fx\xF2\xC0\xBD\x99\x9D\xEB\xFFMy`\xEC\xBA\xCD\xC8\xDB\xE32d\xCF{\xA1\x8E\xC1\xBC\xCC]\x8A\xC3r\xBB\x81\xBCn\xAC\xAEAn?\x90orȯ\xF22\x90\xD7\xCB\xCE\xE4\xC0K^\xC7mB\xAEL\xAF\xA7\xF0v*x _\x95\x81Ծ'\x9CjI\xD4u\xB7\xE5+\x99\xB2\xFB\x82\xF2\xFF\x8CM\xD5\xCD{\x98\xE3\x92\xFEh\xE9\xD3+\xC0\x85\xAB\x9D\xE5w\x81=`\x94\xFCxqy\x887\x82\xF5\xDA;\xBE\xF1\xC1F\xF7\xAC3\xE4|ݔ\xE5
-0-\xC6\xEDh\xEB\eĹ\xDAY\xA8-9\xBF\xBC0\xFE
-\xE3\xFAP'\xB3/P\xB5\xA5\x81~愌*\xE7Fx\xCB?\xBD8\xC4[\xA1\xAA/-\xF43鞳\xBC\x99o]]\xA9\xF9d\xB02\xEC\xCDf\x9An\xF9,0\xD9)\xEAH4-|\x87*%U$\xD1\xF8xt\xA9\xA3\xE9\x8EYm\x8E\xAB\xE9!8\x9C\xA7t\xB3ЛJT\xAE\xEB\xBE\xB7}\xE3\xD13\xDD\xDDԔ6\x929\x9ERM\x9D#6\xC6\xCC\xC2D\xE1ε\xDB\xFB\x8D\xFB\xE6\xAD\xF7\xEEMF\x85\xA2\x8Dd\x89O\x80$J)\xA4<\xB4\x82\x9B\x85D\xC1۾\xF1H~X{R\xE3\xFAt\x82\xDA?ڿ\xD9\xF7\xED\xCF\xED\xAF\xEC_\xFFeG\xED\xE7vTL͗;\xBA\x97(VQc\x87;\xB3|>+\xF8\B\xA2\x89pQ\A\xA4w1\xEA6_3\x99\x8B\xE6\x9C9\x8F0O\x9A\xA7\xCCfٜ3\xDF4\x97F\xABb\x95\xAD"\xC2zÚ\xB7Yg\xACbr\xEB\xA0U\xB6歃V\xE5\x99\xF0RwM\xBF\xA0L\xB1dj#3\xAC#\x89\xD8@㳅D!!\x96\x97c\x80\x85nxE\xFB\xEDN,\xDB\xF6qQC%\xC5b\xE0\xCDNW)\xA1\xFDv'\x8E\x84\x96\x91\xD4[\xB29KcuM\xBE\xE3c0\xF6l'X\xFC6\xBC\xF5;d\xEF&\xD8Z\xBE\x89`\xEF\xD1\x9B*\xC0+\x9F\xC1\xADc^Oo-\xFF\xB7a|Q\xEB\xC8\xE1\xC1i\xB2\xB9\x9F\xFB\xFD\xC7`\xD7'\xF0\xF4\xE3~\xFF\xCF/\xFA\xFD\xA7_B\xF6|\xA
7\xFE\xA9#
-\xD6%\xA3\xDFE\xDEiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c132 79.159284, 2016/04/19-13:13:40 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
- xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
- xmlns:exif="http://ns.adobe.com/exif/1.0/">
- <xmp:CreatorTool>Adobe Photoshop CC 2015.5 (Macintosh)</xmp:CreatorTool>
- <xmp:CreateDate>2011-11-22T18:31:18-08:00</xmp:CreateDate>
- <xmp:ModifyDate>2016-10-28T09:04:05-07:00</xmp:ModifyDate>
- <xmp:MetadataDate>2016-10-28T09:04:05-07:00</xmp:MetadataDate>
- <dc:format>image/png</dc:format>
- <photoshop:ColorMode>3</photoshop:ColorMode>
- <photoshop:ICCProfile>Generic RGB Profile</photoshop:ICCProfile>
- <photoshop:TextLayers>
- <rdf:Bag>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>js</photoshop:LayerName>
- <photoshop:LayerText>js</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>css</photoshop:LayerName>
- <photoshop:LayerText>css</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
- <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
- </rdf:li>
- </rdf:Bag>
- </photoshop:TextLayers>
- <photoshop:DocumentAncestors>
- <rdf:Bag>
- <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
- </rdf:Bag>
- </photoshop:DocumentAncestors>
- <xmpMM:InstanceID>xmp.iid:9959aaf8-9171-45e7-93e4-f7ec4dc1be52</xmpMM:InstanceID>
- <xmpMM:DocumentID>adobe:docid:photoshop:d9905e7a-dd5d-1179-999e-8c934f842ff3</xmpMM:DocumentID>
- <xmpMM:OriginalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
- <xmpMM:History>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>created</stEvt:action>
- <stEvt:instanceID>xmp.iid:FE7F11740720681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FF7F11740720681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:ee81a63d-59dc-4195-bdcb-3dd713b36ca7</stEvt:instanceID>
- <stEvt:when>2016-10-28T09:04:05-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>derived</stEvt:action>
- <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:9959aaf8-9171-45e7-93e4-f7ec4dc1be52</stEvt:instanceID>
- <stEvt:when>2016-10-28T09:04:05-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- </rdf:Seq>
- </xmpMM:History>
- <xmpMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>xmp.iid:ee81a63d-59dc-4195-bdcb-3dd713b36ca7</stRef:instanceID>
- <stRef:documentID>adobe:docid:photoshop:5529785e-3131-1179-b3db-aac75fc2961c</stRef:documentID>
- <stRef:originalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:originalDocumentID>
- </xmpMM:DerivedFrom>
- <tiff:Orientation>1</tiff:Orientation>
- <tiff:XResolution>720090/10000</tiff:XResolution>
- <tiff:YResolution>720090/10000</tiff:YResolution>
- <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
- <exif:ColorSpace>65535</exif:ColorSpace>
- <exif:PixelXDimension>32</exif:PixelXDimension>
- <exif:PixelYDimension>32</exif:PixelYDimension>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?>\x85\xA8\xA5 cHRMm\x98s\x8E\xF2{\x84\xDAn\x94\xE53'\x99I\xC4IDATxڴ\x97_lSe\xC6\xE7\xF4t\xD2v\xA3\x8EZ\x8A(\xCEi4\x8B\xC8\xC6D\xC8\xC2\xA3c\x8E\xC1Hܲ\x82$`
-7\x807\xC4\xC8\xBD\xC0d\x89\xCE+u&fQ\x98l\xC9\xC8@`c\ R/\x81d\x84\xF1/!\xB0u\xED\xE8֞\xED\x9C\xF5\xF4\x96\xD6v\xDE\xE4K\x93\xAF\xE7\x9C\xF79\xEF\xF3>\xCF{>I\x80$I2\xF0
-\xB0x        \x90\xC8\x98\xC3\xC0\xA7\xC00\xF3*\xFB2P
-\x85\xCE\xE5\xBBYA,K\x84B\xA1\xC7\xDD\xDD\xDD\x87\xFE\xF8ЙCH\xB3* \x805\xD1h\xB4\xBF\x86a\x87\x89F\xA3\x813{\xF6\xEC\xF9
-\xB8\x9E\xACD\xA2\x90
-d\xB0\xEB4M;^!\xF1x\x9C\xD1\xD1Q"\x91\xB7nݺ\xD0\xD2Ҳ\xAFf^9\xB2\xC5b!\xDFREQ\xB0Z\xAD\xB8\.\xE2\xF18\xB5\xB5\xB5U===?\x95Iz\xE5|d\xBB@\x96e\x99\xFF[\x8B%\xF5+I\xB2,\xA3\xAA*\xBA\xAE\xD3\xD0\xD0\xF0aoo\xEF\x8F\xC0\xCA$\xA5\xF2\ IR\xC1K\x96e\x8A\x8A\x8A\xD0u\x87\xC3@}}\xFD\x8A\x81\x81\x81_\x81IZ\xE59(\xA8{\x9F\xC8EQ\xB0X,LOO\xA3\xAA*TUU\xBD~>\x8As\xBElF^!D\xD7\\xF5|\xE9\xD2%\x82\xC1 \xAA\xAA\xE0\xF1x\xB0\xD9l\xA8\xAA\xFA\xB0\xA6\xA6\xE63M\xD3\xFET\xB31s\xA9`\xDE\xE2\xF18333躎$I\xC4b1\xC2\xE10\xC3\xC3\xC3\xC3uuu\x9B\x81!\xD3'r\xA9`\xDET\x98tX\xADV\xECv;v\xBB\x97\xCBŲe\xCB(+++kmm\xF53s>3\x80l EI\xA9\xC4f\xB3Q^^Nuu\xF5\xE0\xF5̜\xCA|\x93\xF6\xFE<B_\xE7(5͋ٴÓ\xA2\xC44[-K\x97.]8\x939)\x932-\x89l!\xF0\xA9\xC8\x9C\x89ᄐ+n\\x99B\xB1\xDB{MhS\x86Ц\xB1\xDB{M!č+\x93\xE2\xDB\x8B\xF3'\xC6D"\x91\x89DB\x86!\xC3\x9A\xA6        `\xA3)K3oA\\xF8=LO\xFBC\xDE~\xDFNہ\xBB\xF4u(Z S\xB4\xE0\xC9#\xFA:\x83\xB4\xB8\xCB;
\xCB\xFF\xE9\x9EO\xAB\x82\xD5j%9a\xE7N\xC1Ջ\xD67\xBA\xA9ݺ\x98\x8F֕\xE2\xF7\xDDa\xF5\x86\xD2\xD4\xFF\xAB7\x94\xD2\xDF\xC4\xFFK.\x8F5uOUݢ\xA7\xDA%\xE7`\x99EASf\xF9o\\x99\xBE\xEAA1\xF6HO\xDBW\xA3q\xA1F\xE3i{c\x8Ft\xE1\xABLQ5;\x80&S        fނ*PQY̦K\xF0\xFB\xEE\xF0\xCD\xF1\xF7\x98|\xA7\xDD\x8FɈ@\x89\xD3®\x83oP\xF2\xB2\x82\xDFw\x87\xFAK\xA8\xA8,.\xA8\x99\x95B\xBA\xBD\xFFX0Uj\x80v\xFF=\xAA\xEA\\xACZ\xEB\xE0\xF2\xF9\xED\xFE{|\xD1\xFA\xAB\xD6:9\xD91\xC2Ɏ\xBCM\xEE\x94:\xF2\xCE\xF6\\xF8\xAA\x856e\xA4\x95\xFD\xD0\xCE\xDBO\x95\xF7\xD0\xCE\xDBithS\x86\xF0U\xE6\xA5\xE0\xB9ѳ\x84\x92oB\xD64/f\xDF\xE6\xA1[\xF7\xBEF\x89\xD3\xC2\xE5\xF3\x914
-J\x9ClG\xDA83\x9E\xBA7\xDF\xF4\xCD6\x8C>Bͼ\xB0\xAF3HW0o\xEEob}\xA3\x9B-\xCD\xEEl\x96\xDD\x9C\xA2B\x88\x9CN\xD8\xFCe\xD8<\xAF\xE8c\xE3v.\x8F\x95\xD0\xC8\xFB\x868\xD2\xF6\x9B㿲\xEFo"42\x83\xCBce\xE3vOJ9\xF3\xF9&|*V~\xBC\x90\xB3]AN\xE5ඛx\xDD)\x9Eg\xC6\xF16\xBA9\xB8\xED&\xA7\x8F\x8Cr\xB6+H\xE5\xE7\xF3\xF1 e\xA9W/F\xD8\xFBu9\x95Ŝ\xE8A\x9FN\xCCjV7oV\xD8\xE8?dˮW\xB3\xD9p\xC1\xA4\ f?\xD4\xDB\xE4fo\xFD\xF5\xB4n\xAF\xA8,\xCE\xE7\x80͂f&L\xDA\xF4-\xF3\xB4\xA4dp_\x92\xA4ϓ\xA7\xE4\xA2\xE7\x94Xƀ\xFB\x99\xA4\x8C㹒4\xA3R\xC0a՞1\xB9\xF9\xF9Ɓ(7\xF3\xFE;%e\x84\xC8g\xB8\xE6\x89IEND\xAEB`\x82
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentLarge2xpng"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -1,254 +0,0 @@
</span><del>-\x89PNG
-
--IHDR@@\xAAiq\xDE        pHYs\x9A\x9CiCCPPhotoshop ICC profilexڍ\x93\xCBoU\xC6c\x8F\xA7\x95\xB1\xC1\xB4Ū\xD0\x8B6BI4}\xA8M\x84hkǮ\x956k\x9A'B\xAA&\xE3k{\xC8\xCDxzg\x9C>\xD4\xEA\x86-\x88=\xE2!V\xFC\xEA\x82]W(\x95\xAA\x82\x90*\xD6TT\xA9\xA8T\xCC\x99\x96@9\xABs\xBF\xF3\x9D\xEF|\xF7\]\xC8}ꆡ\xCA\xD8b\xEDTK\xA2\xB1\xBA&v\xFDD\x86W\x99\xA0\xC0\x84\xEBEa\xB1^_p\xC3P\xF1\x8Fx\xF2\xC0\xBD\x99\x9D\xEB\xFFMy`\xEC\xBA\xCD\xC8\xDB\xE32d\xCF{\xA1\x8E\xC1\xBC\xCC]\x8A\xC3r\xBB\x81\xBCn\xAC\xAEAn?\x90orȯ\xF22\x90\xD7\xCB\xCE\xE4\xC0K^\xC7mB\xAEL\xAF\xA7\xF0v*x _\x95\x81Ծ'\x9CjI\xD4u\xB7\xE5+\x99\xB2\xFB\x82\xF2\xFF\x8CM\xD5\xCD{\x98\xE3\x92\xFEh\xE9\xD3+\xC0\x85\xAB\x9D\xE5w\x81=`\x94\xFCxqy\x887\x82\xF5\xDA;\xBE\xF1\xC1F\xF7\xAC3\xE4|ݔ\xE5
-0-\xC6\xEDh\xEB\eĹ\xDAY\xA8-9\xBF\xBC0\xFE
-\xE3\xFAP'\xB3/P\xB5\xA5\x81~愌*\xE7Fx\xCB?\xBD8\xC4[\xA1\xAA/-\xF43鞳\xBC\x99o]]\xA9\xF9d\xB02\xEC\xCDf\x9An\xF9,0\xD9)\xEAH4-|\x87*%U$\xD1\xF8xt\xA9\xA3\xE9\x8EYm\x8E\xAB\xE9!8\x9C\xA7t\xB3ЛJT\xAE\xEB\xBE\xB7}\xE3\xD13\xDD\xDDԔ6\x929\x9ERM\x9D#6\xC6\xCC\xC2D\xE1ε\xDB\xFB\x8D\xFB\xE6\xAD\xF7\xEEMF\x85\xA2\x8Dd\x89O\x80$J)\xA4<\xB4\x82\x9B\x85D\xC1۾\xF1H~X{R\xE3\xFAt\x82\xDA?ڿ\xD9\xF7\xED\xCF\xED\xAF\xEC_\xFFeG\xED\xE7vTL͗;\xBA\x97(VQc\x87;\xB3|>+\xF8\B\xA2\x89pQ\A\xA4w1\xEA6_3\x99\x8B\xE6\x9C9\x8F0O\x9A\xA7\xCCfٜ3\xDF4\x97F\xABb\x95\xAD"\xC2zÚ\xB7Yg\xACbr\xEB\xA0U\xB6歃V\xE5\x99\xF0RwM\xBF\xA0L\xB1dj#3\xAC#\x89\xD8@㳅D!!\x96\x97c\x80\x85nxE\xFB\xEDN,\xDB\xF6qQC%\xC5b\xE0\xCDNW)\xA1\xFDv'\x8E\x84\x96\x91\xD4[\xB29KcuM\xBE\xE3c0\xF6l'X\xFC6\xBC\xF5;d\xEF&\xD8Z\xBE\x89`\xEF\xD1\x9B*\xC0+\x9F\xC1\xADc^Oo-\xFF\xB7a|Q\xEB\xC8\xE1\xC1i\xB2\xB9\x9F\xFB\xFD\xC7`\xD7'\xF0\xF4\xE3~\xFF\xCF/\xFA\xFD\xA7_B\xF6|\xA
7\xFE\xA9#
-\xD6%\xA3\xDFE\xDEiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c132 79.159284, 2016/04/19-13:13:40 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
- xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
- xmlns:exif="http://ns.adobe.com/exif/1.0/">
- <xmp:CreatorTool>Adobe Photoshop CC 2015.5 (Macintosh)</xmp:CreatorTool>
- <xmp:CreateDate>2011-11-22T18:31:18-08:00</xmp:CreateDate>
- <xmp:ModifyDate>2016-10-28T09:04:26-07:00</xmp:ModifyDate>
- <xmp:MetadataDate>2016-10-28T09:04:26-07:00</xmp:MetadataDate>
- <dc:format>image/png</dc:format>
- <photoshop:ColorMode>3</photoshop:ColorMode>
- <photoshop:ICCProfile>Generic RGB Profile</photoshop:ICCProfile>
- <photoshop:TextLayers>
- <rdf:Bag>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>js</photoshop:LayerName>
- <photoshop:LayerText>js</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>css</photoshop:LayerName>
- <photoshop:LayerText>css</photoshop:LayerText>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
- <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
- </rdf:li>
- </rdf:Bag>
- </photoshop:TextLayers>
- <photoshop:DocumentAncestors>
- <rdf:Bag>
- <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
- </rdf:Bag>
- </photoshop:DocumentAncestors>
- <xmpMM:InstanceID>xmp.iid:4fd17d8c-127c-4dfe-963e-c1e24003df0c</xmpMM:InstanceID>
- <xmpMM:DocumentID>adobe:docid:photoshop:ee42b9fd-dd5d-1179-999e-8c934f842ff3</xmpMM:DocumentID>
- <xmpMM:OriginalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
- <xmpMM:History>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>created</stEvt:action>
- <stEvt:instanceID>xmp.iid:FE7F11740720681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FF7F11740720681195FEB766E6513CAB</stEvt:instanceID>
- <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:978864a6-fd97-4d0a-9885-dee715d98057</stEvt:instanceID>
- <stEvt:when>2016-10-28T09:04:26-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>derived</stEvt:action>
- <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:4fd17d8c-127c-4dfe-963e-c1e24003df0c</stEvt:instanceID>
- <stEvt:when>2016-10-28T09:04:26-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- </rdf:Seq>
- </xmpMM:History>
- <xmpMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>xmp.iid:978864a6-fd97-4d0a-9885-dee715d98057</stRef:instanceID>
- <stRef:documentID>adobe:docid:photoshop:fdd9444f-304c-1179-89c8-abfd463ea104</stRef:documentID>
- <stRef:originalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:originalDocumentID>
- </xmpMM:DerivedFrom>
- <tiff:Orientation>1</tiff:Orientation>
- <tiff:XResolution>720090/10000</tiff:XResolution>
- <tiff:YResolution>720090/10000</tiff:YResolution>
- <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
- <exif:ColorSpace>65535</exif:ColorSpace>
- <exif:PixelXDimension>64</exif:PixelXDimension>
- <exif:PixelYDimension>64</exif:PixelYDimension>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?>t\x87( cHRMm\x98s\x8E\xF2{\x84\xDAn\x94\xE53'\x99IAIDATx\xDA\xEC\x9B{p\xD5\xC7?\xBBwwsB\xE1 H сA\x9DA\x85\xB1\xA5\xB48\xA3\xA6\xC0\xA0\x88hy\x89\xE3cL\xAB֒\x91:ڂ:T(\xBE\xA8U\xA8`)3\xE80>\xFA\xD0Π\xA8$po\x92I O\xEEk\xEFf\xB7\xE4\xEE%\x8F{\x93YB\xAC\xFEfv\xEE>\xCE9\xBB\xBF\xEF\xF9\xFE~\xE7{\xCE\xEEà'A\x86\xE3\x81!\xF4\xDD\xCCoxkZ\xD0Û%֛Rm\x89n\xB7\xFBp_@\xD7ut]G\xD34B\xA1\x90\xDBZ[[/677\x97\xEE߿\xFFO;w\xEE<T\x87\xC1P\xAD\xA1\xC7\x8E\x83#\x80[***\xF6]\xC9-L\xC7Mkkk\x8B\x9CSU\x95`0\x88\xCF磡\xA1\xE1\xDCK/\xBD\xF4\xE4\x91#G\xBE\xCE>+@\xE8տ8\xDCV[[\xBB\xBB\xB7        \x82\xF5\xBC        @\xC7_M\xD3\xD0u\x9DP(\x84\xAA\xAA\xD4\xD7ד\x90\x90\xA0\xED\xBB`˖-\xFB\x81*+@\xB0"D@\x94$\xE9\x8Az\xC0f\xB3E\x8EM@DQ\xECt}ԨQ\x9C={V\xBA\xFD\xF6\xDB7$$$$\xBE\xFC\xF2\xCB;\xC3 \\xBC\x9A\xE1\xB7W\x8A\xA2\1\xF75M\xC3f\xB3E\xC0EUUE\x91\xB4\xB44<\x8Fx\xCF=\xF7<
3h\xD0 Gaa\xE1\xDB\xE1\xBC\xD0r\xB5@\x88Q\xFBt#\xB3\xBE\xD9\xF3]s\x83\xAA\xAA\xD8l6RSS\xA9\xAA\xAA֬Y\xF3\xB8,ˎ\xFC\xFC\xFCm@E\x98        \xDA5\xE0JB :R_Ӻ\xFB3d\xC8\x9CN'\xB2,+V\xACX\xE5t:yyy\xAF\xA7\xAF\xFDƀ\xAEm\xE9\xBA\xD5D\x92$t]GQ\x82\xC1 .\x97\x8B\xA5K\x97.U\xC5\xF1裏\xFE>B\x93\x95 H\e\xEB-8\xD3i\xC30\xD04-QIHH@EDQDQ.\\xB8@\x96e\xC7\xEAի7eV\x82\xD0/0{\xB8c\xA2(FB\xC0\xC1d\x85$I\x82\x80\xDDn'`\xB7\xDB\xC9\xCD͝/I\x92k\xF9\xF2\xE5\xCF\xA5V\x81 ^\xB7\xAE纖\x8BH\xD3Y\xB3\x8E,ˈ\xA2\x88\xCDf\x8B\x94S%\xBB\xEF\xBE{\xF6\x8E;^r\x80d+,ZE\xEDX@\x88\xA2\xD8\xC9\xC9h\xEDH\x92f\xCD\xE3\x8E\xE0\x98 H\x92ĝw\xDEy\xF3{_\xA6\xC3\xE5\x9A\xD0\xC0\xA2\x81g2\xC2\xEC\xFD\xA4\xA4\xA4\xC89s\xEEܹ\xD3\xF7\xED۷-̄\xA1}A\xE2Y\xC7\xE1\xD0\xEC]sh\xD4u\x9D\x86\x86t]\xC7\xEB\xF5\xE2\xF7\xFB#bI\x92$\x993gN\xF6\x81ޞ?\xFE*\xE0\xE0B8'\\x96`\x8Ag.\x90\xDCf\xC6N+\x8F\xA6M\xD34-UU\xA9\xA9\xA9!Dd\xB3\xD7\xEB%
-        \x85B\xF8|>\xFC~?v\xBBEQj,X\xF0\xE0\xBF@}W\xAC\x98Y
-@o \xA8\xAA\x8A\xAA\xAA洹ӾɎ\xB6\xB66\xFC~?^\xAF\x97\xA6\xA6&A\xA8_\xB6lك^\xAF\xF7h\xF5;@,&\x98l\xD04-2\x85607\xC30\xD4\xD6\xD6"\xCB\xF2\xF9ٳg\xDF\xEF\x80x@06\xB7\x8ENw\xC1\xBCV__Osssɼy\xF3N\x99\xA8\xDE\xFC\xAFe\xEC\xEDXQ\xECv{\xA7M\x96edY&!!\xA1\xD3\xF5#F\x90\x92\x92\x92\x9D\x9F\x9F\x9F\xE3J\xF0\xD7\x80x@\x88\xA6E\x89\x896\x9B-Y\x96\x91$        \xBB\xDDNrr2s\xE6\xCCY\x8C        /\xE5-l.\x84\xAE@\x98N\x9B\xCAQ\x96e\.cǎMZ\xB0`\xC1-a}Ы\xFD\xAE^y\xAA\x9Cc\x9F\xB7\xA2\xEB\xA2(0\xED\xD6Dq<\x82\xD8]#t\xD5-e\xB8\xA6i(\x8A\xC9\xA2(\x92\x98\x98ȢE\x8Br\xF7\xEC\xD9\xF3P\xD6-wSt\xA8\x85\xF4,wܗJz\x96\x83\xA2C-\xAC_Q\xBA2\xA2\xE3\xAC\xD1dƨQ\xA3\xB2\xC2\x90*\xDD~ʋ}\xDC<w(\x8F<\x9F9\xBF\xB5\xA0\x92/>n\xA4\xD2 =\xCBU-\xC6;+E\x91#F\xF1HdKh:b\xDB\xFA*ʋ}\x86Az\x96\x835\x85\xE3IN\x95\xF8\xF2\x9F\xCD,\xCDK\xEBT\xEF\xFE'\xD3\xF8\xE2\xE3F\xBE\xFAW3\xA68\xD1u\x9D\xC6\xFA,\xA8\xA2\xD2\xE3G\xC6O\
xB1\xB3\xB2`,Iä\x98\xCBl\xE6\xF1\xE0\xC1\x83e\xC0\x8F\xA2\x95\xCE\xE7\xE5\x96P\xFCe+)#e\x86\x8FN\xC0}\xCCK^n1\xE5ž\xF6wZ\xFB\x98\x9C\x98\xD4\xF9\xB9\xCCc\xBD\xAD\xFD\xB8\xE2d\x80_\xFE\xFC$\xEE\xE3^\x86\x8FV6R\xE6\xE4\xD7^\x9E^\xE8\xA6\xE9\x823A\x9A\xFB\x87Cl\xE1\xAD\xB0m}!Ug\xED\xEB\x99dMuPv\xC2\xC7\xF3\xAB<\xAE\xF4P\xF0F&-uj\x8Fm4ԩ\x94\xFB(\\xE9\xA0\xE0\xCDL2rx\x8E{\xF9\xED\xC3e\xBCYX\xCD\xD3\xC8\xE8a\xB7\xDB\xE3\xF6\xCD2\xCANx\x93a\x8F80\xF1:'odR\xB8\xD2\xC3s\xB9\xC3)Ĉ]\x81\xC39|\xB0\x9B$P\xF0F&9\xCE\xC8\xF5̩.\xD22씗\xF8\xA2\xE6\x82h\x80\xC4\xC3pkG\x81(o\x862r\xDAA6B\xE6\xFE\xBC4\xDE94-j\xD5wM\xE3\x81_\x8Da\xD8H\xA5\x9B\xF3\xA6\xC3\xD1\xDE<\xF5\xB4bկH\xCFr\xE0>\xE6\xA5\xF4/\x93\xAEwu\xE1\xD5\xFD\xD7\xF5\x8C\x9DsrS\x98\x93\x9B\x83a>\xAA\xCB\xFCdNuE\x8C\xD1\xEB\x97\x80eXS8\x9B$\xB0aui$\xE9Ye\xE5\xC5\xED\xB9\xC4&        \xAC)\xB3\xD7/\xB7\xF7-\x9F-vJ`QhPwF\xE5\xEF;ϩ"/-\x8D\x83\x87JL\x9E\xEE\xE2'w\x
A5\x90\x9A\xA6\Q\x9B1\x9E\xFB^\xE0߆a\x9C\xE9\xB7`\xC6{\x9Bf\xB0\xF9ק\xBB]\xFFhgO-*\xE1\xC3\xF7\xEA\xB8آ\x912R\xE6b\x8BƇﵟ\xFFhg]\xB7:\x9B\x9F\xAD\xA0M3.\xCB\xF9~_\xACt\xFB9\xF2\x8F&\xF46"C\xDD\xF7\xA5vs~\xD7\xE6&^\xE7\xE4\xA1g\xC62.\xD3\xB9V\xE5\xF1\xB3\xFD\xC5oٵ\xB9\xA6\xBD\xEA\xFE\xEC\xBET\xDE\xDDT\xCD\xC7\xEFד\x9C\xAA \xDA\xE0\xC6-a\xC2k\xC0\xE8Sz\xBB\xB6\xEF\xF3\xA2(\xF0Ρi\x91\xC9M\xDD\x95\xA7\x950~\xB2\x83g\xB7LB\xB1w'\x9E\xD0y\xE1\x91R*N\xF9\xF9\xDD_\xB2#\xE1`\xE8\xB0l\xD61t\xBD\xF3sN\xC8v\xB2\xFE\xED\xAC\xC8=\xAE40\xA3\xC7-HQlS^\x99\xB1dF\x91\xF1\xDA\xDA
-\xA3\xA51dIJ]\xAF\x9D1\x96\xCC(2*\xDD>\xA3'\xABt\xFB\x8C%3\x8A\x8C]\xAF\x9D\x89Y\xA6\xA51dlɯ0\x96\xCC(26\xE5\x95\xC5,,\xD2z\xF3\xAFO!p\xFC\x8BV&Lqv\x9A\xD8D\xB3SE^F\x8EK\xE8D\xFBh6.\xD3\xC1\xC8q        \x9C*\xF2\xC6,\x93\x98$\xB1\xA60\x9DsUA\x8E}\xDE\xDA\xF7\xF5\x88\xBETnk3ȾaP\xAF\xE5Z5\x92\x87\xCBq\xB5\x99<\\xA6\xA5\xB1\xF7W~\xD97\xEA\xFD\x80\xCD&P\xF2\xF5\xC5^\xCB-*\xD1P\x8A\xAB͆\xFA\x83\x87\xF6N̒\xAF.Ɣ\xD5\xFD\xC0\xD4[9}\xD2ǖ\xFCJZ\x9Bb\xF7\xDA\xE4\xE9.\xCEU\xA9\xF2\xF8{l\xAF\xCA\xE3\xE7\U\x90\xC9\xD3]1˴6il-\xA8\xE4\xF4I\xD3nM\xFC\xFE\x8E9Nֽ\xD5\xF7Q\xA0OIPa\xFD\xF6\xACn:\xE0\xF0\xC1F>\xFD\xE0<s\xB4\xEB\xFA\xD44\x85\x85kF\xB1ks-/<RS\x94\x9D\xF0\xB1\xF8\xB1ѝ\xE1g=\x8F\xAE̜7\x94\xE4T\x9B$pӏ\x87\x90\x9E\xE58B(=\xCBy\xA0\xF2b\x876\xF2\xE1\x8E\xDA\xC5\xCD\xFB[\xCF\xF2\x9B\xFBO1r\\xC9\xC3e\xEAC\x9C\xAB
-b\x93?6\xBA\x938\xB0\xA3]\xFEt\xE1\xF0\xAB\xA2\xBF\xF7s\x81>        \xA1\x8E\xD6P\xA7\xCBf5\x98y\xD4(;\xE15\xAC\xB4\xB2^すG\x8De\xB3\x8Ejո\xEA\xC4+\x84,\x9Bm\xC9o\x9F\xB4\xAC\xDD6\xC9r\xAAf\xE48Y\xBBmm\x9A\xC1ւ
-k_\xCCX\xB9\xE4=f\xA2\xA3\xDBb\x88I\xE3'\xEE*\xE6\x93=\xE71\xF4\xD8/L>\xDD{\x9E'\xEE*\x8E\xBA\x9E0\xE9zc&:\xA8t\xFB&\x82 @\x94|b\xC6\xF0\x85s*\xEFn\xAAf٬cQ\xEB/\x9Bu\x8C?o\xAC\xE6\xC29\x95\x9E\xE8\x8B*\x86ay\xAD\xA4iuy\xF7\xF1K:\xBE\xF4o$\x81\xADߞ\xC5\xCCyCc\xCAWs\xA8[\xBF=\x80\xCAN\\xC1}\xDCKuy\xC0\xF2\xF0\xB2lMp\xF5s\xE3\xC8\xCB-a\xC3*c&:\xF8\xB6ԏM\xC8\xBD={'\xA7\xF6\xFC\xA2&9U\x89,\xAA<\xBF\xCA\xC3\xFA\xE5n\xC6Lt\x80aP]@VD^\x97>0\x90\x94"\xB3\xE9\x83lrnJ\xA4\xBE&Hݙ Y\xD3\lܛ\xE95\xD1vI\xCEv\x95\xB7\xED
-\xF2\x9B6\xEE\xCD!s\xAA\x8B\xFA\x9A \xF5gU\xB2oĦ\xB2IJ\x91\xAD\x8D\xAB\x86\xC1x\xAC\xE2\x94/\xB2~\xD0\xD1\xCC\xF9}y\x89u\xC3g\xBF\xAC\\x89b\xCC\xC8q\xF2\x9FO\xA9\xFD6H\xF6-\x83(\xF9\xFA"\xA7O\xFA\xC8\xC8qZ\xB6\xCCuMB ^[\xF7V\xD3g-\xA6\xCA\xE3磝uTy\xFCL\x9F5\x98uoeq-\xAC\xDF?\x90Dxrc\xC5D\xBE\xE7\xF6?л\x85\x80\xE6\xEF\xA0o\xCD\xE1g\xEFs\xD5\xE1\xF9\xF5p\xE2\xFC\xFE\xEEZ\x80\xF6\xE9\xE5\xB1\xCB\xF0.@\xE0\xB4\xFF!\xFBB<ij"$\x86CE        \xFF\xF4\xBCa\xFE\xFB\\xA5\xFD[a\xBDO\xFC\xBF\xDB\xFF\x93\x91\xD5m\xF7\xBC\xF8\xE6IEND\xAEB`\x82
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerScriptpngfromrev208303trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentpng"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript.png (from rev 208303, trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png) (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript.png         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,246 @@
</span><ins>+\x89PNG
+
++IHDR\xF3\xFFa        pHYs\x9A\x9CH\xACiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+ <xmp:CreatorTool>Adobe Photoshop CC 2014 (Macintosh)</xmp:CreatorTool>
+ <xmp:CreateDate>2011-11-22T18:31:28-08:00</xmp:CreateDate>
+ <xmp:ModifyDate>2016-10-24T15:44:14-07:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2016-10-24T15:44:14-07:00</xmp:MetadataDate>
+ <dc:format>image/png</dc:format>
+ <photoshop:ColorMode>3</photoshop:ColorMode>
+ <photoshop:TextLayers>
+ <rdf:Bag>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
+ <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>css</photoshop:LayerName>
+ <photoshop:LayerText>css</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>js</photoshop:LayerName>
+ <photoshop:LayerText>js</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>jpg</photoshop:LayerName>
+ <photoshop:LayerText>jpg</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>png</photoshop:LayerName>
+ <photoshop:LayerText>png</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>pdf</photoshop:LayerName>
+ <photoshop:LayerText>pdf</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>gif</photoshop:LayerName>
+ <photoshop:LayerText>gif</photoshop:LayerText>
+ </rdf:li>
+ </rdf:Bag>
+ </photoshop:TextLayers>
+ <photoshop:DocumentAncestors>
+ <rdf:Bag>
+ <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
+ </rdf:Bag>
+ </photoshop:DocumentAncestors>
+ <xmpMM:InstanceID>xmp.iid:02106927-dba0-495d-8db3-00d38cba3fb7</xmpMM:InstanceID>
+ <xmpMM:DocumentID>adobe:docid:photoshop:c5fc32e0-dac9-1179-b0a7-af0d0eca52b5</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>xmp.did:008011740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>created</stEvt:action>
+ <stEvt:instanceID>xmp.iid:008011740720681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:26:36-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:044149D31420681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:26:36-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:999c634d-3dd0-4e03-ab6e-119016768c26</stEvt:instanceID>
+ <stEvt:when>2016-10-24T15:44:14-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>derived</stEvt:action>
+ <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:02106927-dba0-495d-8db3-00d38cba3fb7</stEvt:instanceID>
+ <stEvt:when>2016-10-24T15:44:14-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>xmp.iid:999c634d-3dd0-4e03-ab6e-119016768c26</stRef:instanceID>
+ <stRef:documentID>xmp.did:008011740720681195FEB766E6513CAB</stRef:documentID>
+ <stRef:originalDocumentID>xmp.did:008011740720681195FEB766E6513CAB</stRef:originalDocumentID>
+ </xmpMM:DerivedFrom>
+ <tiff:Orientation>1</tiff:Orientation>
+ <tiff:XResolution>720090/10000</tiff:XResolution>
+ <tiff:YResolution>720090/10000</tiff:YResolution>
+ <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
+ <exif:ColorSpace>65535</exif:ColorSpace>
+ <exif:PixelXDimension>16</exif:PixelXDimension>
+ <exif:PixelYDimension>16</exif:PixelYDimension>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>\x86'\xAC cHRMz%\x80\x83\xF9\xFF\x80\xE9u0\xEA`:\x98o\x92_\xC5F\xD5IDATxڄ\x92?K\x9BQ\x87\x9Fs\xEE\xDF*\xA1\xAEi\x86ԶC+\xDB\xC1\xC1v\xEF\xD8a\xA0\xFC
+:D\xFA\xBA\xBF@E\xB7\x94$NJ\xA7J\xA4\x8AMC^C+19\x92@\xFE\xDA.\xF7\xFC\xCEs~\xE7\xDE+f\x80\x88,sL        3+L:\xF7\xF6s\xE5r9?I\x94\xCDf\x91\xD5I\x90A\x80\x88A        D\x84z\xBDN\xA9Tʋ\xC8+3j\xA2\xA3b\xE7\xDC\xD0RUT\xDF\xF7)\x95J9Y\xBDׁ\xE7yc#8\xE7\x87\xC3}\xC8k3ˍTu* \x93\xC9
+\x85d\x92u\xCE\xE1y'\xDFğE\xF8\xFC\xF1/f\xF0\xFE\xC3
+\xDE\xCDc/\x91H\x84T*\xA5GPU\xBE\xE7\x9A\xFC.\xB6\xC8\xAD\xB3\xB84\xC0\x97O5b\x8Ba.~\x84Yy\xF3pȁ\x8E\xCFp\xF1\xB3\xC5\xC6v\x8C\xE8|\x88\xE8|\x88\x8D\xED~\xB5H\xBC\x98\xC59w?`w\xEB\x92GO|
+\xFB5\x96ע,\xAFE)\xEC?\xF5\xD9ݺDU\xA7ށ\xA8*"\xD2}:Q\xB4\xDB+ETQ\x951fF\xEF;\xAFw:\xCAMK'\x8Bּ\xBD\xB3\x83\xBD+;ػ\xB2\xE6흥\x93E\xCAM\xEBt:\xAC\xF7\xEB\x86F8=i\xB0\xF7\xD9\xD9<\xA7\xB4\xA9mv6\xCFY\x88\xFB\x9C7\x86\xB4\xA3\xDEZ/\x8E+V\xAD\xB4,\x9D<\xB3t\xF2̪\x95\x96V\xFAi\xEBi\xBBu\x93\xFF\x8BA\xC0\xE0%^\x8B\xC8;`\x98\xEB\xE5\xDA@\xA87\xC0u\xBF\xE8\xDF\x95v_\xDA\xE1D\xBFIEND\xAEB`\x82
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerScript2xpngfromrev208303trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocument2xpng"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript@2x.png (from rev 208303, trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png) (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript@2x.png         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScript@2x.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,249 @@
</span><ins>+\x89PNG
+
++IHDR szz\xF4        pHYs\x9A\x9CH\xACiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+ <xmp:CreatorTool>Adobe Photoshop CC 2014 (Macintosh)</xmp:CreatorTool>
+ <xmp:CreateDate>2011-11-22T18:31:18-08:00</xmp:CreateDate>
+ <xmp:ModifyDate>2016-10-24T15:42:45-07:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2016-10-24T15:42:45-07:00</xmp:MetadataDate>
+ <dc:format>image/png</dc:format>
+ <photoshop:ColorMode>3</photoshop:ColorMode>
+ <photoshop:TextLayers>
+ <rdf:Bag>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
+ <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>css</photoshop:LayerName>
+ <photoshop:LayerText>css</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>js</photoshop:LayerName>
+ <photoshop:LayerText>js</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>jpg</photoshop:LayerName>
+ <photoshop:LayerText>jpg</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>png</photoshop:LayerName>
+ <photoshop:LayerText>png</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>pdf</photoshop:LayerName>
+ <photoshop:LayerText>pdf</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>gif</photoshop:LayerName>
+ <photoshop:LayerText>gif</photoshop:LayerText>
+ </rdf:li>
+ </rdf:Bag>
+ </photoshop:TextLayers>
+ <photoshop:DocumentAncestors>
+ <rdf:Bag>
+ <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
+ </rdf:Bag>
+ </photoshop:DocumentAncestors>
+ <xmpMM:InstanceID>xmp.iid:3b3dbbff-c21f-4795-b0f5-1f3a88b7563c</xmpMM:InstanceID>
+ <xmpMM:DocumentID>adobe:docid:photoshop:8fc9505e-dac9-1179-b0a7-af0d0eca52b5</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>created</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FE7F11740720681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FF7F11740720681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:91ab95ac-682e-4dcd-8e99-4c1aab38c735</stEvt:instanceID>
+ <stEvt:when>2016-10-24T15:42:45-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>derived</stEvt:action>
+ <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:3b3dbbff-c21f-4795-b0f5-1f3a88b7563c</stEvt:instanceID>
+ <stEvt:when>2016-10-24T15:42:45-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>xmp.iid:91ab95ac-682e-4dcd-8e99-4c1aab38c735</stRef:instanceID>
+ <stRef:documentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:documentID>
+ <stRef:originalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:originalDocumentID>
+ </xmpMM:DerivedFrom>
+ <tiff:Orientation>1</tiff:Orientation>
+ <tiff:XResolution>720090/10000</tiff:XResolution>
+ <tiff:YResolution>720090/10000</tiff:YResolution>
+ <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
+ <exif:ColorSpace>65535</exif:ColorSpace>
+ <exif:PixelXDimension>32</exif:PixelXDimension>
+ <exif:PixelYDimension>32</exif:PixelYDimension>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>z\xB0\x93 cHRMz%\x80\x83\xF9\xFF\x80\xE9u0\xEA`:\x98o\x92_\xC5F/IDATxڴ\x96H\xD4g\xC7_\xCF\xF3\xFDvw\xDE}\xD53\xCD5!q\x83Y0\x96\xC5~\xA4m\xCDʑ,\x8C~h\x83"\x83A\x8Cm\xD1\xDA
+[ˈ+\xFAk\x8D\xC661ˍ\xC9\xB5\x94\xC0Z+\x96\xC1X\xEC\x8Frq\x90M;ϻ\xEF\x9D\xDE\xE5\xF7\xFB\xEC\xBD\x9B\xD6iw\xDA>\xF0p\xF0\xB9\xE7\xC7\xEB\xFB~>\x9F\xCF\xF3J)&\x9A\xE29\xA0\x88\xF4-\xF4*\xA5\xFENg\x91\x9E\xC4Wt\xF7\xEE\xDD\xEF\xB5P)\x85mی\x8E\x8Eb\x9A&\xA1P\xE8\x9F\xE6\xE6\xE6F!D\x87R\xAAw6 >@)\x85eY\x98\xA6I~SS\xD3\xE1X,6Gў*D2\x809B\x84\xD3.B`\xDB6\x9A\xA6\xE1p8!:\x8F=zȶmR\x85H\xAA@*RJl\xDB\xC6\xE1p\x90\x91\x91\x81\xCF磸\xB8X?r\xE4\xC8!˲\x84\xE2̣ \xF4\xE9\xBE0\x93R\xA2\xEB:\x86ap\xE7\xCE\xA4\x94\xE8MMM\x9F\x8C\xEF3-\x84>\xD5\xE1\xA9!\x88g\x91\xDB\xEDƲ,\x84H)Y\xB0`\x81\xDE\xD8\xD8xh\xDC7%Ĭ\x88\xAB\xE0r\xB9\x90R"\x84@\xD7u\x94Ri\xFB\xF7\xEF\x8F\xC7DR\x88Y)0Q\xA7Ӊ\xD7\xEBe\xEF\xF8|>l\xDB\xC60
+\xB5\xBA\xBA\xBA\x8F\xEE߿K\x96\xA2"I!\xDA\xE2\xF7\xFB[M\xD3L\xAB
+\xC5ӱ\xAF\xAF\x8F@ @$!\x87QJa\xC6ݝ;w\xD6*\xA5.\xA4\xA4\x80\x942-)%YYYx<\xA2\xD1(\xD1h\xD34dhh۶\x9F\xBC\x8F-:\xDB\xC2\\xEC\xA0\xEC\xF5*6{\xD04+\xA7Ӊ"Q#\xC3`tt@K        @J\xF9\x90\xBFus\xE3j\x94Un\x9E~\xD6\xC1\xA5\x86\xD9\xF3\xF9<\xD4\xF7\xB3\xA6&\x93\x9B\xC4\xE8\xEE\xB3p\xE9JW:\xB1\xA4\xEB:\xB6m'\xAA\xECCew\xBA@Bp\xA5k\x98s-&\x85\xC5N\xD0\xDD\xC0\xE1\x928\c[twD8y0@\xD1"'\x9D\xA7\x86\xE9\xE9\xC5\xE9t\xE2p8p\xB9\x<\x91rLT\xE0\xCF+1\xCA\xD7\xAC\xDA`\xB0\xF4e7\x9F\xED\xEAg\xD9*wbβUn.v\x84y\xEFX>\xDE<+!7\xAEFY^\xE1N\\x85\xAE\xEB3/D+\xD7\x9C8p\x8F\xA5+\xDD\xE4\xCC\xD3\xF9\xE0ē\x8CDl\xAA\xEB\xBDT\xC5W`\xC0\xA2\xB3-ě\xBB\xE7&b"^-\xD3\x98\xA8\xC03\x8B3\xA8\xAC\xCD\xE6خ~>\xFC\xA2s\xC8\xE6\x9BO\xEF\x8Dx2%u\xEF\xE4bdK\x8E\xED\xEAcmm6\xC5%n4Mò\xAC\x99\x9Cm        p\xE1\xBB\xCB+<H)ii\xE0\xC5\xCALJV\x8C\xD2s)BK\xB3\x9F\x86}\xF9\x94\xACps\xBE5\xC8\xF9SA^\xA9\xCEdmmv"gt]\xEDA\xBF.\
xC4\xE1        \xD9\xC3A\x8B\xD22Ob~i\x99\x87\xCE\xD3CD\x87r\xD9ؐK,\xAAس\xED6\xAF\xD5\xE5\xCC \xAE\x80H\xA4\xA5\xBF\xCF\xE4\x85*\xEE\x8B\xFB\xA5T\x89\xB5L\xF8M[\x81\x8AM^\xF6lk\xF3\x9E_\x9Dɦ\xB7\xF2\xF0di\\xBBfI\x99\xC0\xEFM<Y\x8D\xD3\xC7\xF8\xF5|(\xB16\xBE\xCFTI߂h4\xDA:^\xB9v\xFE\xF4 ]\xED>\xFE\xE6)B\x8B/\xF7aY\xD9o\xBC?\x9FL\xAF\xC6\xEE\xBA[\xBC\xBA\xC1\xCB\xEA\xCD9\x93\xBFT\xD7q:\x9D5J\xA9SI{\xBB\xF8\xB6\xC4b1\x89D\xA3\xE7\x97{\xAAa\xF5u\xE5\xEB+N\xF2\xFBL\xE50'\xF9|\xBDAհ\xFA\xBA\xBAvy`\x92?\x8B)`˃\xE7\xC9\xE9b >\xBA\xBE+\xB0n{.y\xF3,vo\xBDI\xDB\xF1~܆\x8E\xDB\xD0i;\xDE\xCF\xEE\xAD7        X\xE4\xCDw\xB0n{.]\xED\x81I{L\xF5\xB6\xA4T\x8A\xBF`\xD0yf\x90s\xA7\xFC\xEC\xDBq\x8B\x8AMs\xB9|v(\xF1\xFF\xE5\xB3CTl\x9A˾\xB78\xD7\xEA\xA7\xF3\xCC %/eN\xDAcV-Yy\xD5X*\xF5\xFC\xE2\xEDXX\xEA\xE1ǯ\xEEq?\xAA\xF3+k\xF2(Z\x98\xC1Om~\xAAw\xE4S\xB6Λ\xD2\xEB\x9ArGT^\x95Cy\xD5\x81\xB5fs.\xEFn\xFC\x80ʚ<\x84,Zb\xB0h\x89\x91\xD6\xF3\x9E4,\xCBj}\xD
0?[\x94\xCA}\xB6+i:\xFF[W<Kp[JYd<泆\x81۩Ā\xC8 \x84\x94R\x91\x89\xCE=\xDCU\xC1'IEND\xAEB`\x82
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerScriptLargepngfromrev208303trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentLargepng"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge.png (from rev 208303, trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png) (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge.png         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,239 @@
</span><ins>+\x89PNG
+
++IHDR szz\xF4        pHYs\x9A\x9CiCCPPhotoshop ICC profilexڍ\x93\xCBoU\xC6c\x8F\xA7\x95\xB1\xC1\xB4Ū\xD0\x8B6BI4}\xA8M\x84hkǮ\x956k\x9A'B\xAA&\xE3k{\xC8\xCDxzg\x9C>\xD4\xEA\x86-\x88=\xE2!V\xFC\xEA\x82]W(\x95\xAA\x82\x90*\xD6TT\xA9\xA8T\xCC\x99\x96@9\xABs\xBF\xF3\x9D\xEF|\xF7\]\xC8}ꆡ\xCA\xD8b\xEDTK\xA2\xB1\xBA&v\xFDD\x86W\x99\xA0\xC0\x84\xEBEa\xB1^_p\xC3P\xF1\x8Fx\xF2\xC0\xBD\x99\x9D\xEB\xFFMy`\xEC\xBA\xCD\xC8\xDB\xE32d\xCF{\xA1\x8E\xC1\xBC\xCC]\x8A\xC3r\xBB\x81\xBCn\xAC\xAEAn?\x90orȯ\xF22\x90\xD7\xCB\xCE\xE4\xC0K^\xC7mB\xAEL\xAF\xA7\xF0v*x _\x95\x81Ծ'\x9CjI\xD4u\xB7\xE5+\x99\xB2\xFB\x82\xF2\xFF\x8CM\xD5\xCD{\x98\xE3\x92\xFEh\xE9\xD3+\xC0\x85\xAB\x9D\xE5w\x81=`\x94\xFCxqy\x887\x82\xF5\xDA;\xBE\xF1\xC1F\xF7\xAC3\xE4|ݔ\xE5
+0+\xC6\xEDh\xEB\eĹ\xDAY\xA8+9\xBF\xBC0\xFE
+\xE3\xFAP'\xB3/P\xB5\xA5\x81~愌*\xE7Fx\xCB?\xBD8\xC4[\xA1\xAA/+\xF43鞳\xBC\x99o]]\xA9\xF9d\xB02\xEC\xCDf\x9An\xF9,0\xD9)\xEAH4-|\x87*%U$\xD1\xF8xt\xA9\xA3\xE9\x8EYm\x8E\xAB\xE9!8\x9C\xA7t\xB3ЛJT\xAE\xEB\xBE\xB7}\xE3\xD13\xDD\xDDԔ6\x929\x9ERM\x9D#6\xC6\xCC\xC2D\xE1ε\xDB\xFB\x8D\xFB\xE6\xAD\xF7\xEEMF\x85\xA2\x8Dd\x89O\x80$J)\xA4<\xB4\x82\x9B\x85D\xC1۾\xF1H~X{R\xE3\xFAt\x82\xDA?ڿ\xD9\xF7\xED\xCF\xED\xAF\xEC_\xFFeG\xED\xE7vTL͗;\xBA\x97(VQc\x87;\xB3|>+\xF8\B\xA2\x89pQ\A\xA4w1\xEA6_3\x99\x8B\xE6\x9C9\x8F0O\x9A\xA7\xCCfٜ3\xDF4\x97F\xABb\x95\xAD"\xC2zÚ\xB7Yg\xACbr\xEB\xA0U\xB6歃V\xE5\x99\xF0RwM\xBF\xA0L\xB1dj#3\xAC#\x89\xD8@㳅D!!\x96\x97c\x80\x85nxE\xFB\xEDN,\xDB\xF6qQC%\xC5b\xE0\xCDNW)\xA1\xFDv'\x8E\x84\x96\x91\xD4[\xB29KcuM\xBE\xE3c0\xF6l'X\xFC6\xBC\xF5;d\xEF&\xD8Z\xBE\x89`\xEF\xD1\x9B*\xC0+\x9F\xC1\xADc^Oo+\xFF\xB7a|Q\xEB\xC8\xE1\xC1i\xB2\xB9\x9F\xFB\xFD\xC7`\xD7'\xF0\xF4\xE3~\xFF\xCF/\xFA\xFD\xA7_B\xF6|\xA
7\xFE\xA9#
+\xD6%\xA3\xDFE\xDEiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c132 79.159284, 2016/04/19-13:13:40 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+ <xmp:CreatorTool>Adobe Photoshop CC 2015.5 (Macintosh)</xmp:CreatorTool>
+ <xmp:CreateDate>2011-11-22T18:31:18-08:00</xmp:CreateDate>
+ <xmp:ModifyDate>2016-10-28T09:04:05-07:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2016-10-28T09:04:05-07:00</xmp:MetadataDate>
+ <dc:format>image/png</dc:format>
+ <photoshop:ColorMode>3</photoshop:ColorMode>
+ <photoshop:ICCProfile>Generic RGB Profile</photoshop:ICCProfile>
+ <photoshop:TextLayers>
+ <rdf:Bag>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>js</photoshop:LayerName>
+ <photoshop:LayerText>js</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>css</photoshop:LayerName>
+ <photoshop:LayerText>css</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
+ <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
+ </rdf:li>
+ </rdf:Bag>
+ </photoshop:TextLayers>
+ <photoshop:DocumentAncestors>
+ <rdf:Bag>
+ <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
+ </rdf:Bag>
+ </photoshop:DocumentAncestors>
+ <xmpMM:InstanceID>xmp.iid:9959aaf8-9171-45e7-93e4-f7ec4dc1be52</xmpMM:InstanceID>
+ <xmpMM:DocumentID>adobe:docid:photoshop:d9905e7a-dd5d-1179-999e-8c934f842ff3</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>created</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FE7F11740720681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FF7F11740720681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:ee81a63d-59dc-4195-bdcb-3dd713b36ca7</stEvt:instanceID>
+ <stEvt:when>2016-10-28T09:04:05-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>derived</stEvt:action>
+ <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:9959aaf8-9171-45e7-93e4-f7ec4dc1be52</stEvt:instanceID>
+ <stEvt:when>2016-10-28T09:04:05-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>xmp.iid:ee81a63d-59dc-4195-bdcb-3dd713b36ca7</stRef:instanceID>
+ <stRef:documentID>adobe:docid:photoshop:5529785e-3131-1179-b3db-aac75fc2961c</stRef:documentID>
+ <stRef:originalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:originalDocumentID>
+ </xmpMM:DerivedFrom>
+ <tiff:Orientation>1</tiff:Orientation>
+ <tiff:XResolution>720090/10000</tiff:XResolution>
+ <tiff:YResolution>720090/10000</tiff:YResolution>
+ <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
+ <exif:ColorSpace>65535</exif:ColorSpace>
+ <exif:PixelXDimension>32</exif:PixelXDimension>
+ <exif:PixelYDimension>32</exif:PixelYDimension>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>\x85\xA8\xA5 cHRMm\x98s\x8E\xF2{\x84\xDAn\x94\xE53'\x99I\xC4IDATxڴ\x97_lSe\xC6\xE7\xF4t\xD2v\xA3\x8EZ\x8A(\xCEi4\x8B\xC8\xC6D\xC8\xC2\xA3c\x8E\xC1Hܲ\x82$`
+7\x807\xC4\xC8\xBD\xC0d\x89\xCE+u&fQ\x98l\xC9\xC8@`c\ R/\x81d\x84\xF1/!\xB0u\xED\xE8֞\xED\x9C\xF5\xF4\x96\xD6v\xDE\xE4K\x93\xAF\xE7\x9C\xF79\xEF\xF3>\xCF{>I\x80$I2\xF0
+\xB0x        \x90\xC8\x98\xC3\xC0\xA7\xC00\xF3*\xFB2P
+\x85\xCE\xE5\xBBYA,K\x84B\xA1\xC7\xDD\xDD\xDD\x87\xFE\xF8ЙCH\xB3* \x805\xD1h\xB4\xBF\x86a\x87\x89F\xA3\x813{\xF6\xEC\xF9
+\xB8\x9E\xACD\xA2\x90
+d\xB0\xEB4M;^!\xF1x\x9C\xD1\xD1Q"\x91\xB7nݺ\xD0\xD2Ҳ\xAFf^9\xB2\xC5b!\xDFREQ\xB0Z\xAD\xB8\.\xE2\xF18\xB5\xB5\xB5U===?\x95Iz\xE5|d\xBB@\x96e\x99\xFF[\x8B%\xF5+I\xB2,\xA3\xAA*\xBA\xAE\xD3\xD0\xD0\xF0aoo\xEF\x8F\xC0\xCA$\xA5\xF2\ IR\xC1K\x96e\x8A\x8A\x8A\xD0u\x87\xC3@}}\xFD\x8A\x81\x81\x81_\x81IZ\xE59(\xA8{\x9F\xC8EQ\xB0X,LOO\xA3\xAA*TUU\xBD~>\x8As\xBElF^!D\xD7\\xF5|\xE9\xD2%\x82\xC1 \xAA\xAA\xE0\xF1x\xB0\xD9l\xA8\xAA\xFA\xB0\xA6\xA6\xE63M\xD3\xFET\xB31s\xA9`\xDE\xE2\xF18333躎$I\xC4b1\xC2\xE10\xC3\xC3\xC3\xC3uuu\x9B\x81!\xD3'r\xA9`\xDET\x98tX\xADV\xECv;v\xBB\x97\xCBŲe\xCB(+++kmm\xF53s>3\x80l EI\xA9\xC4f\xB3Q^^Nuu\xF5\xE0\xF5̜\xCA|\x93\xF6\xFE<B_\xE7(5͋ٴÓ\xA2\xC44[-K\x97.]8\x939)\x932-\x89l!\xF0\xA9\xC8\x9C\x89ᄐ+n\\x99B\xB1\xDB{MhS\x86Ц\xB1\xDB{M!č+\x93\xE2\xDB\x8B\xF3'\xC6D"\x91\x89DB\x86!\xC3\x9A\xA6        `\xA3)K3oA\\xF8=LO\xFBC\xDE~\xDFNہ\xBB\xF4u(Z S\xB4\xE0\xC9#\xFA:\x83\xB4\xB8\xCB;
\xCB\xFF\xE9\x9EO\xAB\x82\xD5j%9a\xE7N\xC1Ջ\xD67\xBA\xA9ݺ\x98\x8F֕\xE2\xF7\xDDa\xF5\x86\xD2\xD4\xFF\xAB7\x94\xD2\xDF\xC4\xFFK.\x8F5uOUݢ\xA7\xDA%\xE7`\x99EASf\xF9o\\x99\xBE\xEAA1\xF6HO\xDBW\xA3q\xA1F\xE3i{c\x8Ft\xE1\xABLQ5;\x80&S        fނ*PQY̦K\xF0\xFB\xEE\xF0\xCD\xF1\xF7\x98|\xA7\xDD\x8FɈ@\x89\xD3®\x83oP\xF2\xB2\x82\xDFw\x87\xFAK\xA8\xA8,.\xA8\x99\x95B\xBA\xBD\xFFX0Uj\x80v\xFF=\xAA\xEA\\xACZ\xEB\xE0\xF2\xF9\xED\xFE{|\xD1\xFA\xAB\xD6:9\xD91\xC2Ɏ\xBCM\xEE\x94:\xF2\xCE\xF6\\xF8\xAA\x856e\xA4\x95\xFD\xD0\xCE\xDBO\x95\xF7\xD0\xCE\xDBithS\x86\xF0U\xE6\xA5\xE0\xB9ѳ\x84\x92oB\xD64/f\xDF\xE6\xA1[\xF7\xBEF\x89\xD3\xC2\xE5\xF3\x914
+J\x9ClG\xDA83\x9E\xBA7\xDF\xF4\xCD6\x8C>Bͼ\xB0\xAF3HW0o\xEEob}\xA3\x9B+\xCD\xEEl\x96\xDD\x9C\xA2B\x88\x9CN\xD8\xFCe\xD8<\xAF\xE8c\xE3v.\x8F\x95\xD0\xC8\xFB\x868\xD2\xF6\x9B㿲\xEFo"42\x83\xCBce\xE3vOJ9\xF3\xF9&|*V~\xBC\x90\xB3]AN\xE5ඛx\xDD)\x9Eg\xC6\xF16\xBA9\xB8\xED&\xA7\x8F\x8Cr\xB6+H\xE5\xE7\xF3\xF1 e\xA9W/F\xD8\xFBu9\x95Ŝ\xE8A\x9FN\xCCjV7oV\xD8\xE8?dˮW\xB3\xD9p\xC1\xA4\ f?\xD4\xDB\xE4fo\xFD\xF5\xB4n\xAF\xA8,\xCE\xE7\x80͂f&L\xDA\xF4-\xF3\xB4\xA4dp_\x92\xA4ϓ\xA7\xE4\xA2\xE7\x94Xƀ\xFB\x99\xA4\x8C㹒4\xA3R\xC0a՞1\xB9\xF9\xF9Ɓ(7\xF3\xFE;%e\x84\xC8g\xB8\xE6\x89IEND\xAEB`\x82
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesWorkerScriptLarge2xpngfromrev208303trunkSourceWebInspectorUIUserInterfaceImagesWorkerDocumentLarge2xpng"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge@2x.png (from rev 208303, trunk/Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png) (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge@2x.png         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/WorkerScriptLarge@2x.png        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,254 @@
</span><ins>+\x89PNG
+
++IHDR@@\xAAiq\xDE        pHYs\x9A\x9CiCCPPhotoshop ICC profilexڍ\x93\xCBoU\xC6c\x8F\xA7\x95\xB1\xC1\xB4Ū\xD0\x8B6BI4}\xA8M\x84hkǮ\x956k\x9A'B\xAA&\xE3k{\xC8\xCDxzg\x9C>\xD4\xEA\x86-\x88=\xE2!V\xFC\xEA\x82]W(\x95\xAA\x82\x90*\xD6TT\xA9\xA8T\xCC\x99\x96@9\xABs\xBF\xF3\x9D\xEF|\xF7\]\xC8}ꆡ\xCA\xD8b\xEDTK\xA2\xB1\xBA&v\xFDD\x86W\x99\xA0\xC0\x84\xEBEa\xB1^_p\xC3P\xF1\x8Fx\xF2\xC0\xBD\x99\x9D\xEB\xFFMy`\xEC\xBA\xCD\xC8\xDB\xE32d\xCF{\xA1\x8E\xC1\xBC\xCC]\x8A\xC3r\xBB\x81\xBCn\xAC\xAEAn?\x90orȯ\xF22\x90\xD7\xCB\xCE\xE4\xC0K^\xC7mB\xAEL\xAF\xA7\xF0v*x _\x95\x81Ծ'\x9CjI\xD4u\xB7\xE5+\x99\xB2\xFB\x82\xF2\xFF\x8CM\xD5\xCD{\x98\xE3\x92\xFEh\xE9\xD3+\xC0\x85\xAB\x9D\xE5w\x81=`\x94\xFCxqy\x887\x82\xF5\xDA;\xBE\xF1\xC1F\xF7\xAC3\xE4|ݔ\xE5
+0+\xC6\xEDh\xEB\eĹ\xDAY\xA8+9\xBF\xBC0\xFE
+\xE3\xFAP'\xB3/P\xB5\xA5\x81~愌*\xE7Fx\xCB?\xBD8\xC4[\xA1\xAA/+\xF43鞳\xBC\x99o]]\xA9\xF9d\xB02\xEC\xCDf\x9An\xF9,0\xD9)\xEAH4-|\x87*%U$\xD1\xF8xt\xA9\xA3\xE9\x8EYm\x8E\xAB\xE9!8\x9C\xA7t\xB3ЛJT\xAE\xEB\xBE\xB7}\xE3\xD13\xDD\xDDԔ6\x929\x9ERM\x9D#6\xC6\xCC\xC2D\xE1ε\xDB\xFB\x8D\xFB\xE6\xAD\xF7\xEEMF\x85\xA2\x8Dd\x89O\x80$J)\xA4<\xB4\x82\x9B\x85D\xC1۾\xF1H~X{R\xE3\xFAt\x82\xDA?ڿ\xD9\xF7\xED\xCF\xED\xAF\xEC_\xFFeG\xED\xE7vTL͗;\xBA\x97(VQc\x87;\xB3|>+\xF8\B\xA2\x89pQ\A\xA4w1\xEA6_3\x99\x8B\xE6\x9C9\x8F0O\x9A\xA7\xCCfٜ3\xDF4\x97F\xABb\x95\xAD"\xC2zÚ\xB7Yg\xACbr\xEB\xA0U\xB6歃V\xE5\x99\xF0RwM\xBF\xA0L\xB1dj#3\xAC#\x89\xD8@㳅D!!\x96\x97c\x80\x85nxE\xFB\xEDN,\xDB\xF6qQC%\xC5b\xE0\xCDNW)\xA1\xFDv'\x8E\x84\x96\x91\xD4[\xB29KcuM\xBE\xE3c0\xF6l'X\xFC6\xBC\xF5;d\xEF&\xD8Z\xBE\x89`\xEF\xD1\x9B*\xC0+\x9F\xC1\xADc^Oo+\xFF\xB7a|Q\xEB\xC8\xE1\xC1i\xB2\xB9\x9F\xFB\xFD\xC7`\xD7'\xF0\xF4\xE3~\xFF\xCF/\xFA\xFD\xA7_B\xF6|\xA
7\xFE\xA9#
+\xD6%\xA3\xDFE\xDEiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c132 79.159284, 2016/04/19-13:13:40 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+ <xmp:CreatorTool>Adobe Photoshop CC 2015.5 (Macintosh)</xmp:CreatorTool>
+ <xmp:CreateDate>2011-11-22T18:31:18-08:00</xmp:CreateDate>
+ <xmp:ModifyDate>2016-10-28T09:04:26-07:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2016-10-28T09:04:26-07:00</xmp:MetadataDate>
+ <dc:format>image/png</dc:format>
+ <photoshop:ColorMode>3</photoshop:ColorMode>
+ <photoshop:ICCProfile>Generic RGB Profile</photoshop:ICCProfile>
+ <photoshop:TextLayers>
+ <rdf:Bag>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>js</photoshop:LayerName>
+ <photoshop:LayerText>js</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>css</photoshop:LayerName>
+ <photoshop:LayerText>css</photoshop:LayerText>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <photoshop:LayerName>&lt;&gt;</photoshop:LayerName>
+ <photoshop:LayerText>&lt;&gt;</photoshop:LayerText>
+ </rdf:li>
+ </rdf:Bag>
+ </photoshop:TextLayers>
+ <photoshop:DocumentAncestors>
+ <rdf:Bag>
+ <rdf:li>xmp.did:AC1F69DC18206811822ABFE780032E1E</rdf:li>
+ </rdf:Bag>
+ </photoshop:DocumentAncestors>
+ <xmpMM:InstanceID>xmp.iid:4fd17d8c-127c-4dfe-963e-c1e24003df0c</xmpMM:InstanceID>
+ <xmpMM:DocumentID>adobe:docid:photoshop:ee42b9fd-dd5d-1179-999e-8c934f842ff3</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</xmpMM:OriginalDocumentID>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>created</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FE7F11740720681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FF7F11740720681195FEB766E6513CAB</stEvt:instanceID>
+ <stEvt:when>2011-11-22T20:18:25-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CS4 Macintosh</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:978864a6-fd97-4d0a-9885-dee715d98057</stEvt:instanceID>
+ <stEvt:when>2016-10-28T09:04:26-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>derived</stEvt:action>
+ <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:4fd17d8c-127c-4dfe-963e-c1e24003df0c</stEvt:instanceID>
+ <stEvt:when>2016-10-28T09:04:26-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Photoshop CC 2015.5 (Macintosh)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>xmp.iid:978864a6-fd97-4d0a-9885-dee715d98057</stRef:instanceID>
+ <stRef:documentID>adobe:docid:photoshop:fdd9444f-304c-1179-89c8-abfd463ea104</stRef:documentID>
+ <stRef:originalDocumentID>xmp.did:FE7F11740720681195FEB766E6513CAB</stRef:originalDocumentID>
+ </xmpMM:DerivedFrom>
+ <tiff:Orientation>1</tiff:Orientation>
+ <tiff:XResolution>720090/10000</tiff:XResolution>
+ <tiff:YResolution>720090/10000</tiff:YResolution>
+ <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
+ <exif:ColorSpace>65535</exif:ColorSpace>
+ <exif:PixelXDimension>64</exif:PixelXDimension>
+ <exif:PixelYDimension>64</exif:PixelYDimension>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>t\x87( cHRMm\x98s\x8E\xF2{\x84\xDAn\x94\xE53'\x99IAIDATx\xDA\xEC\x9B{p\xD5\xC7?\xBBwwsB\xE1 H сA\x9DA\x85\xB1\xA5\xB48\xA3\xA6\xC0\xA0\x88hy\x89\xE3cL\xAB֒\x91:ڂ:T(\xBE\xA8U\xA8`)3\xE80>\xFA\xD0Π\xA8$po\x92I O\xEEk\xEFf\xB7\xE4\xEE%\x8F{\x93YB\xAC\xFEfv\xEE>\xCE9\xBB\xBF\xEF\xF9\xFE~\xE7{\xCE\xEEà'A\x86\xE3\x81!\xF4\xDD\xCCoxkZ\xD0Û%֛Rm\x89n\xB7\xFBp_@\xD7ut]G\xD34B\xA1\x90\xDBZ[[/677\x97\xEE߿\xFFO;w\xEE<T\x87\xC1P\xAD\xA1\xC7\x8E\x83#\x80[***\xF6]\xC9+L\xC7Mkkk\x8B\x9CSU\x95`0\x88\xCF磡\xA1\xE1\xDCK/\xBD\xF4\xE4\x91#G\xBE\xCE>+@\xE8տ8\xDCV[[\xBB\xBB\xB7        \x82\xF5\xBC        @\xC7_M\xD3\xD0u\x9DP(\x84\xAA\xAA\xD4\xD7ד\x90\x90\xA0\xED\xBB`˖-\xFB\x81*+@\xB0"D@\x94$\xE9\x8Az\xC0f\xB3E\x8EM@DQ\xECt}ԨQ\x9C={V\xBA\xFD\xF6\xDB7$$$$\xBE\xFC\xF2\xCB;\xC3 \\xBC\x9A\xE1\xB7W\x8A\xA2\1\xF75M\xC3f\xB3E\xC0EUUE\x91\xB4\xB44<\x8Fx\xCF=\xF7<
3h\xD0 Gaa\xE1\xDB\xE1\xBC\xD0r\xB5@\x88Q\xFBt#\xB3\xBE\xD9\xF3]s\x83\xAA\xAA\xD8l6RSS\xA9\xAA\xAA֬Y\xF3\xB8,ˎ\xFC\xFC\xFCm@E\x98        \xDA5\xE0JB :R_Ӻ\xFB3d\xC8\x9CN'\xB2,+V\xACX\xE5t:yyy\xAF\xA7\xAF\xFDƀ\xAEm\xE9\xBA\xD5D\x92$t]GQ\x82\xC1 .\x97\x8B\xA5K\x97.U\xC5\xF1裏\xFE>B\x93\x95 H\e\xEB+8\xD3i\xC30\xD04+QIHH@EDQDQ.\\xB8@\x96e\xC7\xEAի7eV\x82\xD0/0{\xB8c\xA2(FB\xC0\xC1d\x85$I\x82\x80\xDDn'`\xB7\xDB\xC9\xCD͝/I\x92k\xF9\xF2\xE5\xCF\xA5V\x81 ^\xB7\xAE纖\x8BH\xD3Y\xB3\x8E,ˈ\xA2\x88\xCDf\x8B\x94S%\xBB\xEF\xBE{\xF6\x8E;^r\x80d+,ZE\xEDX@\x88\xA2\xD8\xC9\xC9h\xEDH\x92f\xCD\xE3\x8E\xE0\x98 H\x92ĝw\xDEy\xF3{_\xA6\xC3\xE5\x9A\xD0\xC0\xA2\x81g2\xC2\xEC\xFD\xA4\xA4\xA4\xC89s\xEEܹ\xD3\xF7\xED۷-̄\xA1}A\xE2Y\xC7\xE1\xD0\xEC]sh\xD4u\x9D\x86\x86t]\xC7\xEB\xF5\xE2\xF7\xFB#bI\x92$\x993gN\xF6\x81ޞ?\xFE*\xE0\xE0B8'\\x96`\x8Ag.\x90\xDCf\xC6N+\x8F\xA6M\xD34+UU\xA9\xA9\xA9!Dd\xB3\xD7\xEB%
+        \x85B\xF8|>\xFC~?v\xBBEQj,X\xF0\xE0\xBF@}W\xAC\x98Y
+@o \xA8\xAA\x8A\xAA\xAA洹ӾɎ\xB6\xB66\xFC~?^\xAF\x97\xA6\xA6&A\xA8_\xB6lك^\xAF\xF7h\xF5;@,&\x98l\xD04-2\x85607\xC30\xD4\xD6\xD6"\xCB\xF2\xF9ٳg\xDF\xEF\x80x@06\xB7\x8ENw\xC1\xBCV__Osssɼy\xF3N\x99\xA8\xDE\xFC\xAFe\xEC\xEDXQ\xECv{\xA7M\x96edY&!!\xA1\xD3\xF5#F\x90\x92\x92\x92\x9D\x9F\x9F\x9F\xE3J\xF0\xD7\x80x@\x88\xA6E\x89\x896\x9B+Y\x96\x91$        \xBB\xDDNrr2s\xE6\xCCY\x8C        /\xE5+l.\x84\xAE@\x98N\x9B\xCAQ\x96e\.cǎMZ\xB0`\xC1+a}Ы\xFD\xAE^y\xAA\x9Cc\x9F\xB7\xA2\xEB\xA2(0\xED\xD6Dq<\x82\xD8]#t\xD5+e\xB8\xA6i(\x8A\xC9\xA2(\x92\x98\x98ȢE\x8Br\xF7\xEC\xD9\xF3P\xD6-wSt\xA8\x85\xF4,wܗJz\x96\x83\xA2C-\xAC_Q\xBA2\xA2\xE3\xAC\xD1dƨQ\xA3\xB2\xC2\x90*\xDD~ʋ}\xDC<w(\x8F<\x9F9\xBF\xB5\xA0\x92/>n\xA4\xD2 =\xCBU-\xC6;+E\x91#F\xF1HdKh:b\xDB\xFA*ʋ}\x86Az\x96\x835\x85\xE3IN\x95\xF8\xF2\x9F\xCD,\xCDK\xEBT\xEF\xFE'\xD3\xF8\xE2\xE3F\xBE\xFAW3\xA68\xD1u\x9D\xC6\xFA,\xA8\xA2\xD2\xE3G\xC6O\
xB1\xB3\xB2`,Iä\x98\xCBl\xE6\xF1\xE0\xC1\x83e\xC0\x8F\xA2\x95\xCE\xE7\xE5\x96P\xFCe+)#e\x86\x8FN\xC0}\xCCK^n1\xE5ž\xF6wZ\xFB\x98\x9C\x98\xD4\xF9\xB9\xCCc\xBD\xAD\xFD\xB8\xE2d\x80_\xFE\xFC$\xEE\xE3^\x86\x8FV6R\xE6\xE4\xD7^\x9E^\xE8\xA6\xE9\x823A\x9A\xFB\x87Cl\xE1\xAD\xB0m}!Ug\xED\xEB\x99dMuPv\xC2\xC7\xF3\xAB<\xAE\xF4P\xF0F&+uj\x8Fm4ԩ\x94\xFB(\\xE9\xA0\xE0\xCDL2rx\x8E{\xF9\xED\xC3e\xBCYX\xCD\xD3\xC8\xE8a\xB7\xDB\xE3\xF6\xCD2\xCANx\x93a\x8F80\xF1:'odR\xB8\xD2\xC3s\xB9\xC3)Ĉ]\x81\xC39|\xB0\x9B$P\xF0F&9\xCE\xC8\xF5̩.\xD22씗\xF8\xA2\xE6\x82h\x80\xC4\xC3pkG\x81(o\x862r\xDAA6B\xE6\xFE\xBC4\xDE94-j\xD5wM\xE3\x81_\x8Da\xD8H\xA5\x9B\xF3\xA6\xC3\xD1\xDE<\xF5\xB4bկH\xCFr\xE0>\xE6\xA5\xF4/\x93\xAEwu\xE1\xD5\xFD\xD7\xF5\x8C\x9DsrS\x98\x93\x9B\x83a>\xAA\xCB\xFCdNuE\x8C\xD1\xEB\x97\x80eXS8\x9B$\xB0aui$\xE9Ye\xE5\xC5\xED\xB9\xC4&        \xAC)\xB3\xD7/\xB7\xF7-\x9F+vJ`QhPwF\xE5\xEF;ϩ"/-\x8D\x83\x87JL\x9E\xEE\xE2'w\x
A5\x90\x9A\xA6\Q\x9B1\x9E\xFB^\xE0߆a\x9C\xE9\xB7`\xC6{\x9Bf\xB0\xF9ק\xBB]\xFFhgO-*\xE1\xC3\xF7\xEA\xB8آ\x912R\xE6b\x8BƇﵟ\xFFhg]\xB7:\x9B\x9F\xAD\xA0M3.\xCB\xF9~_\xACt\xFB9\xF2\x8F&\xF46"C\xDD\xF7\xA5vs~\xD7\xE6&^\xE7\xE4\xA1g\xC62.\xD3\xB9V\xE5\xF1\xB3\xFD\xC5oٵ\xB9\xA6\xBD\xEA\xFE\xEC\xBET\xDE\xDDT\xCD\xC7\xEFד\x9C\xAA \xDA\xE0\xC6+a\xC2k\xC0\xE8Sz\xBB\xB6\xEF\xF3\xA2(\xF0Ρi\x91\xC9M\xDD\x95\xA7\x950~\xB2\x83g\xB7LB\xB1w'\x9E\xD0y\xE1\x91R*N\xF9\xF9\xDD_\xB2#\xE1`\xE8\xB0l\xD61t\xBD\xF3sN\xC8v\xB2\xFE\xED\xAC\xC8=\xAE40\xA3\xC7+HQlS^\x99\xB1dF\x91\xF1\xDA\xDA
+\xA3\xA51dIJ]\xAF\x9D1\x96\xCC(2*\xDD>\xA3'\xABt\xFB\x8C%3\x8A\x8C]\xAF\x9D\x89Y\xA6\xA51dlɯ0\x96\xCC(26\xE5\x95\xC5,,\xD2z\xF3\xAFO!p\xFC\x8BV&Lqv\x9A\xD8D\xB3SE^F\x8EK\xE8D\xFBh6.\xD3\xC1\xC8q        \x9C*\xF2\xC6,\x93\x98$\xB1\xA60\x9DsUA\x8E}\xDE\xDA\xF7\xF5\x88\xBETnk3ȾaP\xAF\xE5Z5\x92\x87\xCBq\xB5\x99<\\xA6\xA5\xB1\xF7W~\xD97\xEA\xFD\x80\xCD&P\xF2\xF5\xC5^\xCB+*\xD1P\x8A\xAB͆\xFA\x83\x87\xF6N̒\xAF.Ɣ\xD5\xFD\xC0\xD4[9}\xD2ǖ\xFCJZ\x9Bb\xF7\xDA\xE4\xE9.\xCEU\xA9\xF2\xF8{l\xAF\xCA\xE3\xE7\U\x90\xC9\xD3]1˴6il-\xA8\xE4\xF4I\xD3nM\xFC\xFE\x8E9Nֽ\xD5\xF7Q\xA0OIPa\xFD\xF6\xACn:\xE0\xF0\xC1F>\xFD\xE0<s\xB4\xEB\xFA\xD44\x85\x85kF\xB1ks+/<RS\x94\x9D\xF0\xB1\xF8\xB1ѝ\xE1g=\x8F\xAE̜7\x94\xE4T\x9B$pӏ\x87\x90\x9E\xE58B(=\xCBy\xA0\xF2b\x876\xF2\xE1\x8E\xDA\xC5\xCD\xFB[\xCF\xF2\x9B\xFBO1r\\xC9\xC3e\xEAC\x9C\xAB
+b\x93?6\xBA\x938\xB0\xA3]\xFEt\xE1\xF0\xAB\xA2\xBF\xF7s\x81>        \xA1\x8E\xD6P\xA7\xCBf5\x98y\xD4(;\xE15\xAC\xB4\xB2^すG\x8De\xB3\x8Ejո\xEA\xC4+\x84,\x9Bm\xC9o\x9F\xB4\xAC\xDD6\xC9r\xAAf\xE48Y\xBBmm\x9A\xC1ւ
+k_\xCCX\xB9\xE4=f\xA2\xA3\xDBb\x88I\xE3'\xEE*\xE6\x93=\xE71\xF4\xD8/L>\xDD{\x9E'\xEE*\x8E\xBA\x9E0\xE9zc&:\xA8t\xFB&\x82 @\x94|b\xC6\xF0\x85s*\xEFn\xAAf٬cQ\xEB/\x9Bu\x8C?o\xAC\xE6\xC29\x95\x9E\xE8\x8B*\x86ay\xAD\xA4iuy\xF7\xF1K:\xBE\xF4o$\x81\xADߞ\xC5\xCCyCc\xCAWs\xA8[\xBF=\x80\xCAN\\xC1}\xDCKuy\xC0\xF2\xF0\xB2lMp\xF5s\xE3\xC8\xCB-a\xC3*c&:\xF8\xB6ԏM\xC8\xBD={'\xA7\xF6\xFC\xA2&9U\x89,\xAA<\xBF\xCA\xC3\xFA\xE5n\xC6Lt\x80aP]@VD^\x97>0\x90\x94"\xB3\xE9\x83lrnJ\xA4\xBE&Hݙ Y\xD3\lܛ\xE95\xD1vI\xCEv\x95\xB7\xED
+\xF2\x9B6\xEE\xCD!s\xAA\x8B\xFA\x9A \xF5gU\xB2oĦ\xB2IJ\x91\xAD\x8D\xAB\x86\xC1x\xAC\xE2\x94/\xB2~\xD0\xD1\xCC\xF9}y\x89u\xC3g\xBF\xAC\\x89b\xCC\xC8q\xF2\x9FO\xA9\xFD6H\xF6+\x83(\xF9\xFA"\xA7O\xFA\xC8\xC8qZ\xB6\xCCuMB ^[\xF7V\xD3g+\xA6\xCA\xE3磝uTy\xFCL\x9F5\x98uoeq-\xAC\xDF?\x90Dxrc\xC5D\xBE\xE7\xF6?л\x85\x80\xE6\xEF\xA0o\xCD\xE1g\xEFs\xD5\xE1\xF9\xF5p\xE2\xFC\xFE\xEEZ\x80\xF6\xE9\xE5\xB1\xCB\xF0.@\xE0\xB4\xFF!\xFBB<ij"$\x86CE        \xFF\xF4\xBCa\xFE\xFB\\xA5\xFD[a\xBDO\xFC\xBF\xDB\xFF\x93\x91\xD5m\xF7\xBC\xF8\xE6IEND\xAEB`\x82
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceMainhtml"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Main.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Main.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Main.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -317,6 +317,7 @@
</span><span class="cx"> <script src="Models/DatabaseObject.js"></script>
</span><span class="cx"> <script src="Models/DatabaseTableObject.js"></script>
</span><span class="cx"> <script src="Models/DebuggerDashboard.js"></script>
</span><ins>+ <script src="Models/DebuggerData.js"></script>
</ins><span class="cx"> <script src="Models/DefaultDashboard.js"></script>
</span><span class="cx"> <script src="Models/ExecutionContext.js"></script>
</span><span class="cx"> <script src="Models/ExecutionContextList.js"></script>
</span><span class="lines">@@ -356,7 +357,7 @@
</span><span class="cx"> <script src="Models/ProfileNodeCall.js"></script>
</span><span class="cx"> <script src="Models/PropertyDescriptor.js"></script>
</span><span class="cx"> <script src="Models/PropertyPath.js"></script>
</span><del>- <script src="Models/PropertyPreview.js"></script>
</del><ins>+ <script src="Models/PropertyPreview.js"></script>
</ins><span class="cx"> <script src="Models/RenderingFrameTimelineRecord.js"></script>
</span><span class="cx"> <script src="Models/ReplayDashboard.js"></script>
</span><span class="cx"> <script src="Models/ReplaySession.js"></script>
</span><span class="lines">@@ -642,6 +643,7 @@
</span><span class="cx"> <script src="Views/StackedLineChart.js"></script>
</span><span class="cx"> <script src="Views/StorageSidebarPanel.js"></script>
</span><span class="cx"> <script src="Views/SyntaxHighlightingSupport.js"></script>
</span><ins>+ <script src="Views/TargetTreeElement.js"></script>
</ins><span class="cx"> <script src="Views/TextContentView.js"></script>
</span><span class="cx"> <script src="Views/TextNavigationItem.js"></script>
</span><span class="cx"> <script src="Views/TextResourceContentView.js"></script>
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsBreakpointjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/Breakpoint.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> var sourceCode = sourceCodeLocationOrInfo.sourceCode;
</span><span class="cx"> var contentIdentifier = sourceCode ? sourceCode.contentIdentifier : null;
</span><span class="cx"> var scriptIdentifier = sourceCode instanceof WebInspector.Script ? sourceCode.id : null;
</span><ins>+ var target = sourceCode instanceof WebInspector.Script ? sourceCode.target : null;
</ins><span class="cx"> var location = sourceCodeLocationOrInfo;
</span><span class="cx"> } else if (sourceCodeLocationOrInfo && typeof sourceCodeLocationOrInfo === "object") {
</span><span class="cx"> // The 'url' fallback is for transitioning from older frontends and should be removed.
</span><span class="lines">@@ -53,6 +54,7 @@
</span><span class="cx"> this._id = null;
</span><span class="cx"> this._contentIdentifier = contentIdentifier || null;
</span><span class="cx"> this._scriptIdentifier = scriptIdentifier || null;
</span><ins>+ this._target = target || null;
</ins><span class="cx"> this._disabled = disabled || false;
</span><span class="cx"> this._condition = condition || "";
</span><span class="cx"> this._ignoreCount = ignoreCount || 0;
</span><span class="lines">@@ -87,6 +89,11 @@
</span><span class="cx"> return this._scriptIdentifier;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ get target()
+ {
+ return this._target;
+ }
+
</ins><span class="cx"> get sourceCodeLocation()
</span><span class="cx"> {
</span><span class="cx"> return this._sourceCodeLocation;
</span><span class="lines">@@ -195,7 +202,7 @@
</span><span class="cx">
</span><span class="cx"> get info()
</span><span class="cx"> {
</span><del>- // The id, scriptIdentifier and resolved state are tied to the current session, so don't include them for serialization.
</del><ins>+ // The id, scriptIdentifier, target, and resolved state are tied to the current session, so don't include them for serialization.
</ins><span class="cx"> return {
</span><span class="cx"> contentIdentifier: this._contentIdentifier,
</span><span class="cx"> lineNumber: this._sourceCodeLocation.lineNumber,
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsCallFramejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -25,14 +25,16 @@
</span><span class="cx">
</span><span class="cx"> WebInspector.CallFrame = class CallFrame extends WebInspector.Object
</span><span class="cx"> {
</span><del>- constructor(id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted)
</del><ins>+ constructor(target, id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted)
</ins><span class="cx"> {
</span><span class="cx"> super();
</span><span class="cx">
</span><ins>+ console.assert(target instanceof WebInspector.Target);
</ins><span class="cx"> console.assert(!sourceCodeLocation || sourceCodeLocation instanceof WebInspector.SourceCodeLocation);
</span><span class="cx"> console.assert(!thisObject || thisObject instanceof WebInspector.RemoteObject);
</span><span class="cx"> console.assert(!scopeChain || scopeChain instanceof Array);
</span><span class="cx">
</span><ins>+ this._target = target;
</ins><span class="cx"> this._id = id || null;
</span><span class="cx"> this._sourceCodeLocation = sourceCodeLocation || null;
</span><span class="cx"> this._functionName = functionName || "";
</span><span class="lines">@@ -45,6 +47,7 @@
</span><span class="cx">
</span><span class="cx"> // Public
</span><span class="cx">
</span><ins>+ get target() { return this._target; }
</ins><span class="cx"> get id() { return this._id; }
</span><span class="cx"> get sourceCodeLocation() { return this._sourceCodeLocation; }
</span><span class="cx"> get functionName() { return this._functionName; }
</span><span class="lines">@@ -193,10 +196,10 @@
</span><span class="cx"> return payload.functionName.endsWith(" code");
</span><span class="cx"> }
</span><span class="cx">
</span><del>- static fromDebuggerPayload(payload, scopeChain, sourceCodeLocation)
</del><ins>+ static fromDebuggerPayload(target, payload, scopeChain, sourceCodeLocation)
</ins><span class="cx"> {
</span><span class="cx"> let id = payload.callFrameId;
</span><del>- let thisObject = WebInspector.RemoteObject.fromPayload(payload.this);
</del><ins>+ let thisObject = WebInspector.RemoteObject.fromPayload(payload.this, target);
</ins><span class="cx"> let functionName = WebInspector.CallFrame.functionNameFromPayload(payload);
</span><span class="cx"> let nativeCode = false;
</span><span class="cx"> let programCode = WebInspector.CallFrame.programCodeFromPayload(payload);
</span><span class="lines">@@ -207,10 +210,10 @@
</span><span class="cx"> programCode = true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return new WebInspector.CallFrame(id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted);
</del><ins>+ return new WebInspector.CallFrame(target, id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- static fromPayload(payload)
</del><ins>+ static fromPayload(target, payload)
</ins><span class="cx"> {
</span><span class="cx"> console.assert(payload);
</span><span class="cx">
</span><span class="lines">@@ -226,7 +229,7 @@
</span><span class="cx"> } else if (url || scriptId) {
</span><span class="cx"> let sourceCode = null;
</span><span class="cx"> if (scriptId) {
</span><del>- sourceCode = WebInspector.debuggerManager.scriptForIdentifier(scriptId);
</del><ins>+ sourceCode = WebInspector.debuggerManager.scriptForIdentifier(scriptId, target);
</ins><span class="cx"> if (sourceCode && sourceCode.resource)
</span><span class="cx"> sourceCode = sourceCode.resource;
</span><span class="cx"> }
</span><span class="lines">@@ -233,7 +236,7 @@
</span><span class="cx"> if (!sourceCode)
</span><span class="cx"> sourceCode = WebInspector.frameResourceManager.resourceForURL(url);
</span><span class="cx"> if (!sourceCode)
</span><del>- sourceCode = WebInspector.debuggerManager.scriptsForURL(url)[0];
</del><ins>+ sourceCode = WebInspector.debuggerManager.scriptsForURL(url, target)[0];
</ins><span class="cx">
</span><span class="cx"> if (sourceCode) {
</span><span class="cx"> // The lineNumber is 1-based, but we expect 0-based.
</span><span class="lines">@@ -252,6 +255,6 @@
</span><span class="cx"> programCode = true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return new WebInspector.CallFrame(null, sourceCodeLocation, functionName, null, null, nativeCode, programCode);
</del><ins>+ return new WebInspector.CallFrame(target, null, sourceCodeLocation, functionName, null, null, nativeCode, programCode);
</ins><span class="cx"> }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsConsoleMessagejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/ConsoleMessage.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/ConsoleMessage.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/ConsoleMessage.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> this._repeatCount = repeatCount || 0;
</span><span class="cx"> this._parameters = parameters;
</span><span class="cx">
</span><del>- this._stackTrace = WebInspector.StackTrace.fromPayload(stackTrace || []);
</del><ins>+ this._stackTrace = WebInspector.StackTrace.fromPayload(this._target, stackTrace || []);
</ins><span class="cx">
</span><span class="cx"> this._request = request;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsDebuggerDatajs"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Models/DebuggerData.js (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/DebuggerData.js         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/DebuggerData.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.DebuggerData = class DebuggerData extends WebInspector.Object
+{
+ constructor(target)
+ {
+ super();
+
+ console.assert(target instanceof WebInspector.Target);
+
+ this._target = target;
+
+ this._callFrames = [];
+ this._pauseReason = null;
+ this._pauseData = null;
+
+ this._scriptIdMap = new Map;
+ this._scriptContentIdentifierMap = new Map;
+ }
+
+ // Public
+
+ get target() { return this._target; }
+ get callFrames() { return this._callFrames; }
+ get pauseReason() { return this._pauseReason; }
+ get pauseData() { return this._pauseData; }
+
+ get scripts()
+ {
+ return Array.from(this._scriptIdMap.values());
+ }
+
+ scriptForIdentifier(id)
+ {
+ return this._scriptIdMap.get(id);
+ }
+
+ scriptsForURL(url)
+ {
+ return this._scriptContentIdentifierMap.get(url) || [];
+ }
+
+ // Protected (Called by DebuggerManager)
+
+ reset()
+ {
+ this._scriptIdMap.clear();
+ }
+
+ addScript(script)
+ {
+ this._scriptIdMap.set(script.id, script);
+
+ if (script.contentIdentifier) {
+ let scripts = this._scriptContentIdentifierMap.get(script.contentIdentifier);
+ if (!scripts) {
+ scripts = [];
+ this._scriptContentIdentifierMap.set(script.contentIdentifier, scripts);
+ }
+ scripts.push(script);
+ }
+ }
+
+ updateForPause(callFrames, pauseReason, pauseData)
+ {
+ this._callFrames = callFrames;
+ this._pauseReason = pauseReason;
+ this._pauseData = pauseData;
+ }
+
+ updateForResume()
+ {
+ this._callFrames = [];
+ this._pauseReason = null;
+ this._pauseData = null;
+ }
+};
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsProbejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/Probe.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/Probe.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/Probe.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -26,14 +26,16 @@
</span><span class="cx">
</span><span class="cx"> WebInspector.ProbeSample = class ProbeSample extends WebInspector.Object
</span><span class="cx"> {
</span><del>- constructor(sampleId, batchId, elapsedTime, payload)
</del><ins>+ constructor(sampleId, batchId, elapsedTime, object)
</ins><span class="cx"> {
</span><span class="cx"> super();
</span><span class="cx">
</span><ins>+ console.assert(object instanceof WebInspector.RemoteObject);
+
</ins><span class="cx"> this.sampleId = sampleId;
</span><span class="cx"> this.batchId = batchId;
</span><span class="cx"> this.timestamp = elapsedTime;
</span><del>- this.object = WebInspector.RemoteObject.fromPayload(payload);
</del><ins>+ this.object = object;
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsScriptjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/Script.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/Script.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/Script.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -25,13 +25,15 @@
</span><span class="cx">
</span><span class="cx"> WebInspector.Script = class Script extends WebInspector.SourceCode
</span><span class="cx"> {
</span><del>- constructor(id, range, url, injected, sourceURL, sourceMapURL)
</del><ins>+ constructor(target, id, range, url, injected, sourceURL, sourceMapURL)
</ins><span class="cx"> {
</span><span class="cx"> super();
</span><span class="cx">
</span><span class="cx"> console.assert(id);
</span><ins>+ console.assert(target instanceof WebInspector.Target);
</ins><span class="cx"> console.assert(range instanceof WebInspector.TextRange);
</span><span class="cx">
</span><ins>+ this._target = target;
</ins><span class="cx"> this._id = id || null;
</span><span class="cx"> this._range = range || null;
</span><span class="cx"> this._url = url || null;
</span><span class="lines">@@ -75,6 +77,11 @@
</span><span class="cx">
</span><span class="cx"> // Public
</span><span class="cx">
</span><ins>+ get target()
+ {
+ return this._target;
+ }
+
</ins><span class="cx"> get id()
</span><span class="cx"> {
</span><span class="cx"> return this._id;
</span><span class="lines">@@ -197,6 +204,11 @@
</span><span class="cx"> return this._scriptSyntaxTree;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ isMainResource()
+ {
+ return this._target.mainResource === this;
+ }
+
</ins><span class="cx"> requestContentFromBackend()
</span><span class="cx"> {
</span><span class="cx"> if (!this._id) {
</span><span class="lines">@@ -205,7 +217,7 @@
</span><span class="cx"> return Promise.reject(new Error("There is no identifier to request content with."));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return DebuggerAgent.getScriptSource(this._id);
</del><ins>+ return this._target.DebuggerAgent.getScriptSource(this._id);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> saveIdentityToCookie(cookie)
</span><span class="lines">@@ -254,6 +266,10 @@
</span><span class="cx"> if (!this._url)
</span><span class="cx"> return null;
</span><span class="cx">
</span><ins>+ // Only associate Scripts on the Page with Resources on the Page.
+ if (this._target !== WebInspector.mainTarget)
+ return null;
+
</ins><span class="cx"> try {
</span><span class="cx"> // Try with the Script's full URL.
</span><span class="cx"> var resource = WebInspector.frameResourceManager.resourceForURL(this.url);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsScriptTimelineRecordjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> if (nodePayload.url) {
</span><span class="cx"> var sourceCode = WebInspector.frameResourceManager.resourceForURL(nodePayload.url);
</span><span class="cx"> if (!sourceCode)
</span><del>- sourceCode = WebInspector.debuggerManager.scriptsForURL(nodePayload.url)[0];
</del><ins>+ sourceCode = WebInspector.debuggerManager.scriptsForURL(nodePayload.url, WebInspector.assumingMainTarget())[0];
</ins><span class="cx">
</span><span class="cx"> // The lineNumber is 1-based, but we expect 0-based.
</span><span class="cx"> var lineNumber = nodePayload.lineNumber - 1;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsStackTracejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/StackTrace.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/StackTrace.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/StackTrace.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -36,16 +36,16 @@
</span><span class="cx">
</span><span class="cx"> // Static
</span><span class="cx">
</span><del>- static fromPayload(payload)
</del><ins>+ static fromPayload(target, payload)
</ins><span class="cx"> {
</span><del>- var callFrames = payload.map(WebInspector.CallFrame.fromPayload);
</del><ins>+ let callFrames = payload.map((x) => WebInspector.CallFrame.fromPayload(target, x));
</ins><span class="cx"> return new WebInspector.StackTrace(callFrames);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- static fromString(stack)
</del><ins>+ static fromString(target, stack)
</ins><span class="cx"> {
</span><del>- var payload = WebInspector.StackTrace._parseStackTrace(stack);
- return WebInspector.StackTrace.fromPayload(payload);
</del><ins>+ let payload = WebInspector.StackTrace._parseStackTrace(stack);
+ return WebInspector.StackTrace.fromPayload(target, payload);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // May produce false negatives; must not produce any false positives.
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceProtocolConnectionjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Protocol/Connection.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Protocol/Connection.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Protocol/Connection.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -296,7 +296,7 @@
</span><span class="cx"> this._workerId = workerId;
</span><span class="cx">
</span><span class="cx"> // FIXME: Get this list from generated InspectorBackendCommands / InspectorBackend.
</span><del>- const workerDomains = ["Runtime", "Console"];
</del><ins>+ const workerDomains = ["Runtime", "Console", "Debugger"];
</ins><span class="cx">
</span><span class="cx"> for (let domain of workerDomains) {
</span><span class="cx"> let agent = InspectorBackend._agents[domain];
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceProtocolDebuggerObserverjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -46,11 +46,11 @@
</span><span class="cx"> let legacySourceMapURL = arguments[7];
</span><span class="cx"> let hasSourceURL = arguments[8];
</span><span class="cx"> let legacySourceURL = hasSourceURL ? url : undefined;
</span><del>- WebInspector.debuggerManager.scriptDidParse(scriptId, url, startLine, startColumn, endLine, endColumn, isContentScript, legacySourceURL, legacySourceMapURL);
</del><ins>+ WebInspector.debuggerManager.scriptDidParse(this.target, scriptId, url, startLine, startColumn, endLine, endColumn, isContentScript, legacySourceURL, legacySourceMapURL);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- WebInspector.debuggerManager.scriptDidParse(scriptId, url, startLine, startColumn, endLine, endColumn, isContentScript, sourceURL, sourceMapURL);
</del><ins>+ WebInspector.debuggerManager.scriptDidParse(this.target, scriptId, url, startLine, startColumn, endLine, endColumn, isContentScript, sourceURL, sourceMapURL);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> scriptFailedToParse(url, scriptSource, startLine, errorLine, errorMessage)
</span><span class="lines">@@ -60,17 +60,17 @@
</span><span class="cx">
</span><span class="cx"> breakpointResolved(breakpointId, location)
</span><span class="cx"> {
</span><del>- WebInspector.debuggerManager.breakpointResolved(breakpointId, location);
</del><ins>+ WebInspector.debuggerManager.breakpointResolved(this.target, breakpointId, location);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> paused(callFrames, reason, data)
</span><span class="cx"> {
</span><del>- WebInspector.debuggerManager.debuggerDidPause(callFrames, reason, data);
</del><ins>+ WebInspector.debuggerManager.debuggerDidPause(this.target, callFrames, reason, data);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> resumed()
</span><span class="cx"> {
</span><del>- WebInspector.debuggerManager.debuggerDidResume();
</del><ins>+ WebInspector.debuggerManager.debuggerDidResume(this.target);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> playBreakpointActionSound(breakpointActionIdentifier)
</span><span class="lines">@@ -80,6 +80,6 @@
</span><span class="cx">
</span><span class="cx"> didSampleProbe(sample)
</span><span class="cx"> {
</span><del>- WebInspector.probeManager.didSampleProbe(sample);
</del><ins>+ WebInspector.probeManager.didSampleProbe(this.target, sample);
</ins><span class="cx"> }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceProtocolRemoteObjectjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -520,7 +520,7 @@
</span><span class="cx"> return result.promise;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- DebuggerAgent.getFunctionDetails(this._objectId, function(error, response) {
</del><ins>+ this._target.DebuggerAgent.getFunctionDetails(this._objectId, (error, response) => {
</ins><span class="cx"> if (error) {
</span><span class="cx"> result.reject(error);
</span><span class="cx"> return;
</span><span class="lines">@@ -527,7 +527,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> var location = response.location;
</span><del>- var sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId);
</del><ins>+ var sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId, this._target);
</ins><span class="cx">
</span><span class="cx"> if (!sourceCode || (!WebInspector.isDebugUIEnabled() && isWebKitInternalScript(sourceCode.sourceURL))) {
</span><span class="cx"> result.resolve(WebInspector.RemoteObject.SourceCodeLocationPromise.NoSourceFound);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceProtocolTargetjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Protocol/Target.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Protocol/Target.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Protocol/Target.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> this._type = type;
</span><span class="cx"> this._connection = connection;
</span><span class="cx"> this._executionContext = null;
</span><ins>+ this._mainResource = null;
</ins><span class="cx">
</span><span class="cx"> this._connection.target = this;
</span><span class="cx">
</span><span class="lines">@@ -43,6 +44,7 @@
</span><span class="cx">
</span><span class="cx"> get RuntimeAgent() { return this._connection._agents.Runtime; }
</span><span class="cx"> get ConsoleAgent() { return this._connection._agents.Console; }
</span><ins>+ get DebuggerAgent() { return this._connection._agents.Debugger; }
</ins><span class="cx">
</span><span class="cx"> // Public
</span><span class="cx">
</span><span class="lines">@@ -50,6 +52,9 @@
</span><span class="cx"> get type() { return this._type; }
</span><span class="cx"> get connection() { return this._connection; }
</span><span class="cx"> get executionContext() { return this._executionContext; }
</span><ins>+
+ get mainResource() { return this._mainResource; }
+ set mainResource(resource) { this._mainResource = resource; }
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> WebInspector.Target.Type = {
</span><span class="lines">@@ -98,8 +103,13 @@
</span><span class="cx"> if (this.RuntimeAgent) {
</span><span class="cx"> this.RuntimeAgent.enable();
</span><span class="cx"> this._executionContext = new WebInspector.ExecutionContext(this, WebInspector.RuntimeManager.TopLevelContextExecutionIdentifier, this.displayName, false, null);
</span><ins>+ // FIXME: Enable Type Profiler
+ // FIXME: Enable Code Coverage Profiler
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+ if (this.DebuggerAgent)
+ WebInspector.debuggerManager.initializeTarget(this);
+
</ins><span class="cx"> if (this.ConsoleAgent)
</span><span class="cx"> this.ConsoleAgent.enable();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceTestTestjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Test/Test.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Test/Test.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Test/Test.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -97,6 +97,8 @@
</span><span class="cx"> get() { return this.targetManager.targets; }
</span><span class="cx"> });
</span><span class="cx">
</span><ins>+WebInspector.assumingMainTarget = () => WebInspector.mainTarget;
+
</ins><span class="cx"> WebInspector.isDebugUIEnabled = () => false;
</span><span class="cx">
</span><span class="cx"> WebInspector.UIString = (string) => string;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceTesthtml"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Test.html (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Test.html        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Test.html        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -113,6 +113,7 @@
</span><span class="cx"> <script src="Models/DOMNodeStyles.js"></script>
</span><span class="cx"> <script src="Models/DOMStorageObject.js"></script>
</span><span class="cx"> <script src="Models/DOMTree.js"></script>
</span><ins>+ <script src="Models/DebuggerData.js"></script>
</ins><span class="cx"> <script src="Models/ExecutionContext.js"></script>
</span><span class="cx"> <script src="Models/ExecutionContextList.js"></script>
</span><span class="cx"> <script src="Models/FPSInstrument.js"></script>
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsConsoleMessageViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -335,7 +335,7 @@
</span><span class="cx"> callFrame = firstNonNativeNonAnonymousCallFrame;
</span><span class="cx"> } else if (this._message.url && !this._shouldHideURL(this._message.url)) {
</span><span class="cx"> // CSS warnings have no stack traces.
</span><del>- callFrame = WebInspector.CallFrame.fromPayload({
</del><ins>+ callFrame = WebInspector.CallFrame.fromPayload(this._message.target, {
</ins><span class="cx"> functionName: "",
</span><span class="cx"> url: this._message.url,
</span><span class="cx"> lineNumber: this._message.line,
</span><span class="lines">@@ -557,7 +557,7 @@
</span><span class="cx"> _formatParameterAsString(object, fragment)
</span><span class="cx"> {
</span><span class="cx"> if (this._isStackTrace(object)) {
</span><del>- let stackTrace = WebInspector.StackTrace.fromString(object.description);
</del><ins>+ let stackTrace = WebInspector.StackTrace.fromString(this._message.target, object.description);
</ins><span class="cx"> if (stackTrace.callFrames.length) {
</span><span class="cx"> let stackView = new WebInspector.StackTraceView(stackTrace);
</span><span class="cx"> fragment.appendChild(stackView.element);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDebuggerSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -620,7 +620,14 @@
</span><span class="cx"> this._callStackContentTreeOutline.removeChildren();
</span><span class="cx"> this._activeCallFrameTreeElement = null;
</span><span class="cx">
</span><del>- var callFrames = WebInspector.debuggerManager.callFrames;
</del><ins>+ if (!WebInspector.debuggerManager.activeCallFrame) {
+ this._callStackRow.showEmptyMessage();
+ return;
+ }
+
+ let target = WebInspector.debuggerManager.activeCallFrame.target;
+ let targetData = WebInspector.debuggerManager.dataForTarget(target);
+ let callFrames = targetData.callFrames;
</ins><span class="cx"> if (!callFrames || !callFrames.length) {
</span><span class="cx"> this._callStackRow.showEmptyMessage();
</span><span class="cx"> return;
</span><span class="lines">@@ -629,10 +636,10 @@
</span><span class="cx"> this._callStackRow.hideEmptyMessage();
</span><span class="cx"> this._callStackRow.element.appendChild(this._callStackContentTreeOutline.element);
</span><span class="cx">
</span><del>- var activeCallFrame = WebInspector.debuggerManager.activeCallFrame;
- for (var i = 0; i < callFrames.length; ++i) {
- var callFrameTreeElement = new WebInspector.CallFrameTreeElement(callFrames[i]);
- if (callFrames[i] === activeCallFrame)
</del><ins>+ let activeCallFrame = WebInspector.debuggerManager.activeCallFrame;
+ for (let callFrame of callFrames) {
+ let callFrameTreeElement = new WebInspector.CallFrameTreeElement(callFrame);
+ if (callFrame === activeCallFrame)
</ins><span class="cx"> this._activeCallFrameTreeElement = callFrameTreeElement;
</span><span class="cx"> this._callStackContentTreeOutline.appendChild(callFrameTreeElement);
</span><span class="cx"> }
</span><span class="lines">@@ -645,7 +652,12 @@
</span><span class="cx">
</span><span class="cx"> _debuggerActiveCallFrameDidChange()
</span><span class="cx"> {
</span><del>- var callFrames = WebInspector.debuggerManager.callFrames;
</del><ins>+ if (!WebInspector.debuggerManager.activeCallFrame)
+ return;
+
+ let target = WebInspector.debuggerManager.activeCallFrame.target;
+ let targetData = WebInspector.debuggerManager.dataForTarget(target);
+ let callFrames = targetData.callFrames;
</ins><span class="cx"> if (!callFrames)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="lines">@@ -653,13 +665,15 @@
</span><span class="cx"> this._activeCallFrameTreeElement.isActiveCallFrame = false;
</span><span class="cx">
</span><span class="cx"> this._activeCallFrameTreeElement = this._callStackContentTreeOutline.findTreeElement(WebInspector.debuggerManager.activeCallFrame);
</span><ins>+
</ins><span class="cx"> if (this._activeCallFrameTreeElement)
</span><span class="cx"> this._activeCallFrameTreeElement.isActiveCallFrame = true;
</span><span class="cx">
</span><del>- var indexOfActiveCallFrame = callFrames.indexOf(WebInspector.debuggerManager.activeCallFrame);
</del><ins>+ // FIXME: What is this, and is it still relevant?
</ins><span class="cx"> // It is useful to turn off the step out button when there is no call frame to go through
</span><span class="cx"> // since there might be call frames in the backend that were removed when processing the call
</span><span class="cx"> // frame payload.
</span><ins>+ let indexOfActiveCallFrame = callFrames.indexOf(WebInspector.debuggerManager.activeCallFrame);
</ins><span class="cx"> this._debuggerStepOutButtonItem.enabled = indexOfActiveCallFrame < callFrames.length - 1;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -825,9 +839,11 @@
</span><span class="cx">
</span><span class="cx"> _updatePauseReasonSection()
</span><span class="cx"> {
</span><del>- var pauseData = WebInspector.debuggerManager.pauseData;
</del><ins>+ let target = WebInspector.debuggerManager.activeCallFrame.target;
+ let targetData = WebInspector.debuggerManager.dataForTarget(target);
+ let {pauseReason, pauseData} = targetData;
</ins><span class="cx">
</span><del>- switch (WebInspector.debuggerManager.pauseReason) {
</del><ins>+ switch (pauseReason) {
</ins><span class="cx"> case WebInspector.DebuggerManager.PauseReason.Assertion:
</span><span class="cx"> // FIXME: We should include the assertion condition string.
</span><span class="cx"> console.assert(pauseData, "Expected data with an assertion, but found none.");
</span><span class="lines">@@ -876,7 +892,7 @@
</span><span class="cx"> console.assert(pauseData, "Expected data with an exception, but found none.");
</span><span class="cx"> if (pauseData) {
</span><span class="cx"> // FIXME: We should improve the appearance of thrown objects. This works well for exception strings.
</span><del>- var data = WebInspector.RemoteObject.fromPayload(pauseData);
</del><ins>+ var data = WebInspector.RemoteObject.fromPayload(pauseData, target);
</ins><span class="cx"> this._pauseReasonTextRow.text = WebInspector.UIString("Exception with thrown value: %s").format(data.description);
</span><span class="cx"> this._pauseReasonGroup.rows = [this._pauseReasonTextRow];
</span><span class="cx"> return true;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsEventListenerSectionGroupjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/EventListenerSectionGroup.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/EventListenerSectionGroup.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/EventListenerSectionGroup.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> if (!this._eventListener.location)
</span><span class="cx"> return functionName;
</span><span class="cx">
</span><del>- var sourceCode = WebInspector.debuggerManager.scriptForIdentifier(this._eventListener.location.scriptId);
</del><ins>+ var sourceCode = WebInspector.debuggerManager.scriptForIdentifier(this._eventListener.location.scriptId, WebInspector.mainTarget);
</ins><span class="cx"> if (!sourceCode)
</span><span class="cx"> return functionName;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsHeapSnapshotInstanceDataGridNodejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/HeapSnapshotInstanceDataGridNode.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/HeapSnapshotInstanceDataGridNode.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/HeapSnapshotInstanceDataGridNode.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> });
</span><span class="cx"> } else {
</span><span class="cx"> HeapAgent.getRemoteObject(heapObjectIdentifier, WebInspector.RuntimeManager.ConsoleObjectGroup, function(error, remoteObjectPayload) {
</span><del>- let remoteObject = error ? WebInspector.RemoteObject.fromPrimitiveValue(undefined) : WebInspector.RemoteObject.fromPayload(remoteObjectPayload);
</del><ins>+ let remoteObject = error ? WebInspector.RemoteObject.fromPrimitiveValue(undefined) : WebInspector.RemoteObject.fromPayload(remoteObjectPayload, WebInspector.assumingMainTarget());
</ins><span class="cx"> WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text, remoteObject, shouldRevealConsole);
</span><span class="cx"> });
</span><span class="cx"> }
</span><span class="lines">@@ -259,7 +259,7 @@
</span><span class="cx"> return this.location.href;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- let remoteObject = WebInspector.RemoteObject.fromPayload(remoteObjectPayload);
</del><ins>+ let remoteObject = WebInspector.RemoteObject.fromPayload(remoteObjectPayload, WebInspector.assumingMainTarget());
</ins><span class="cx"> remoteObject.callFunctionJSON(inspectedPage_window_getLocationHref, undefined, (href) => {
</span><span class="cx"> remoteObject.release();
</span><span class="cx">
</span><span class="lines">@@ -292,7 +292,7 @@
</span><span class="cx"> let functionNameElement = containerElement.appendChild(document.createElement("span"));
</span><span class="cx"> functionNameElement.classList.add("function-name");
</span><span class="cx"> functionNameElement.textContent = name || displayName || WebInspector.UIString("(anonymous function)");
</span><del>- let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId);
</del><ins>+ let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId, WebInspector.assumingMainTarget());
</ins><span class="cx"> if (sourceCode) {
</span><span class="cx"> let locationElement = containerElement.appendChild(document.createElement("span"));
</span><span class="cx"> locationElement.classList.add("location");
</span><span class="lines">@@ -411,7 +411,7 @@
</span><span class="cx"> HeapAgent.getPreview(node.id, function(error, string, functionDetails, objectPreviewPayload) {
</span><span class="cx"> if (functionDetails) {
</span><span class="cx"> let location = functionDetails.location;
</span><del>- let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId);
</del><ins>+ let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId, WebInspector.assumingMainTarget());
</ins><span class="cx"> if (sourceCode) {
</span><span class="cx"> const dontFloat = true;
</span><span class="cx"> const useGoToArrowButton = true;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeBaseTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeBaseTreeElement.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -223,12 +223,12 @@
</span><span class="cx"> // FIXME: We should better handle bound functions.
</span><span class="cx"> if (!isFunctionStringNativeCode(resolvedValue.description)) {
</span><span class="cx"> contextMenu.appendItem(WebInspector.UIString("Jump to Definition"), function() {
</span><del>- DebuggerAgent.getFunctionDetails(resolvedValue.objectId, function(error, response) {
</del><ins>+ resolvedValue.target.DebuggerAgent.getFunctionDetails(resolvedValue.objectId, function(error, response) {
</ins><span class="cx"> if (error)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> let location = response.location;
</span><del>- let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId);
</del><ins>+ let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId, resolvedValue.target);
</ins><span class="cx"> if (!sourceCode)
</span><span class="cx"> return;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsOpenResourceDialogjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -122,6 +122,7 @@
</span><span class="cx"> {
</span><span class="cx"> WebInspector.Frame.removeEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainResourceDidChange, this);
</span><span class="cx"> WebInspector.Frame.removeEventListener(WebInspector.Frame.Event.ResourceWasAdded, this._resourceWasAdded, this);
</span><ins>+ WebInspector.debuggerManager.removeEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, this._scriptAdded, this);
</ins><span class="cx">
</span><span class="cx"> this._queryController.reset();
</span><span class="cx"> }
</span><span class="lines">@@ -130,10 +131,18 @@
</span><span class="cx"> {
</span><span class="cx"> WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainResourceDidChange, this);
</span><span class="cx"> WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded, this._resourceWasAdded, this);
</span><ins>+ WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, this._scriptAdded, this);
</ins><span class="cx">
</span><span class="cx"> if (WebInspector.frameResourceManager.mainFrame)
</span><span class="cx"> this._addResourcesForFrame(WebInspector.frameResourceManager.mainFrame);
</span><span class="cx">
</span><ins>+ for (let target of WebInspector.targets) {
+ if (target !== WebInspector.mainTarget)
+ this._addScriptsForTarget(target);
+ }
+
+ this._updateFilter();
+
</ins><span class="cx"> this._inputElement.focus();
</span><span class="cx"> this._clear();
</span><span class="cx"> }
</span><span class="lines">@@ -274,8 +283,18 @@
</span><span class="cx">
</span><span class="cx"> frames = frames.concat(currentFrame.childFrameCollection.toArray());
</span><span class="cx"> }
</span><ins>+ }
</ins><span class="cx">
</span><del>- this._updateFilter();
</del><ins>+ _addScriptsForTarget(target)
+ {
+ const suppressFilterUpdate = true;
+
+ let targetData = WebInspector.debuggerManager.dataForTarget(target);
+ for (let script of targetData.scripts) {
+ if (isWebKitInternalScript(script.sourceURL) || isWebInspectorConsoleEvaluationScript(script.sourceURL))
+ continue;
+ this._addResource(script, suppressFilterUpdate);
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _mainResourceDidChange(event)
</span><span class="lines">@@ -290,6 +309,15 @@
</span><span class="cx"> {
</span><span class="cx"> this._addResource(event.data.resource);
</span><span class="cx"> }
</span><ins>+
+ _scriptAdded(event)
+ {
+ let script = event.data.script;
+ if (script.target === WebInspector.mainTarget)
+ return;
+
+ this._addResource(script);
+ }
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> WebInspector.OpenResourceDialog.ResourceMatchCookieDataSymbol = Symbol("open-resource-dialog-resource-match-cookie-data");
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsProfileDataGridNodejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ProfileDataGridNode.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ProfileDataGridNode.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ProfileDataGridNode.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">
</span><span class="cx"> iconClassName()
</span><span class="cx"> {
</span><del>- let script = WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID);
</del><ins>+ let script = WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID, WebInspector.assumingMainTarget());
</ins><span class="cx"> if (!script || !script.url)
</span><span class="cx"> return "native-icon";
</span><span class="cx"> if (this._node.name === "(program)")
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (columnIdentifier === "function") {
</span><span class="cx"> let filterableData = [this.displayName()];
</span><del>- let script = WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID);
</del><ins>+ let script = WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID, WebInspector.assumingMainTarget());
</ins><span class="cx"> if (script && script.url && this._node.line >= 0 && this._node.column >= 0)
</span><span class="cx"> filterableData.push(script.url);
</span><span class="cx"> return filterableData;
</span><span class="lines">@@ -232,7 +232,7 @@
</span><span class="cx"> let titleElement = fragment.appendChild(document.createElement("span"));
</span><span class="cx"> titleElement.textContent = title;
</span><span class="cx">
</span><del>- let script = WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID);
</del><ins>+ let script = WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID, WebInspector.assumingMainTarget());
</ins><span class="cx"> if (script && script.url && this._node.line >= 0 && this._node.column >= 0) {
</span><span class="cx"> // Convert from 1-based line and column to 0-based.
</span><span class="cx"> let sourceCodeLocation = script.createSourceCodeLocation(this._node.line - 1, this._node.column - 1);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsResourceIconscss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourceIcons.css (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourceIcons.css        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourceIcons.css        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -63,6 +63,11 @@
</span><span class="cx"> content: image-set(url(../Images/ClippingJS.png) 1x, url(../Images/ClippingJS@2x.png) 2x);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+/* FIXME: <https://webkit.org/b/164138> [GTK] Web Inspector: Add new GTK+ icons for Worker Scripts */
+body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon {
+ content: image-set(url(../Images/WorkerScript.png) 1x, url(../Images/WorkerScript@2x.png) 2x);
+}
+
</ins><span class="cx"> .large .resource-icon .icon {
</span><span class="cx"> content: image-set(url(../Images/DocumentGenericLarge.png) 1x, url(../Images/DocumentGenericLarge@2x.png) 2x);
</span><span class="cx"> }
</span><span class="lines">@@ -102,3 +107,8 @@
</span><span class="cx"> .large .source-map-resource.resource-icon.resource-type-script .icon {
</span><span class="cx"> content: image-set(url(../Images/ClippingJSLarge.png) 1x, url(../Images/ClippingJSLarge@2x.png) 2x);
</span><span class="cx"> }
</span><ins>+
+/* FIXME: <https://webkit.org/b/164138> [GTK] Web Inspector: Add new GTK+ icons for Worker Scripts */
+body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon {
+ content: image-set(url(../Images/WorkerScriptLarge.png) 1x, url(../Images/WorkerScriptLarge@2x.png) 2x);
+}
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsResourceSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -36,6 +36,9 @@
</span><span class="cx"> this._navigationBar = new WebInspector.NavigationBar;
</span><span class="cx"> this.addSubview(this._navigationBar);
</span><span class="cx">
</span><ins>+ this._targetTreeElementMap = new Map;
+ this._deferredTargetScripts = [];
+
</ins><span class="cx"> var scopeItemPrefix = "resource-sidebar-";
</span><span class="cx"> var scopeBarItems = [];
</span><span class="cx">
</span><span class="lines">@@ -61,6 +64,8 @@
</span><span class="cx"> WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptRemoved, this._scriptWasRemoved, this);
</span><span class="cx"> WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptsCleared, this._scriptsCleared, this);
</span><span class="cx">
</span><ins>+ WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetRemoved, this._targetRemoved, this);
+
</ins><span class="cx"> WebInspector.notifications.addEventListener(WebInspector.Notification.ExtraDomainsActivated, this._extraDomainsActivated, this);
</span><span class="cx">
</span><span class="cx"> this.contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange, this._treeSelectionDidChange, this);
</span><span class="lines">@@ -282,6 +287,12 @@
</span><span class="cx"> if (script.resource || script.dynamicallyAddedScriptElement)
</span><span class="cx"> return;
</span><span class="cx">
</span><ins>+ // Worker script.
+ if (script.target !== WebInspector.mainTarget) {
+ this._addScriptForNonMainTarget(script);
+ return;
+ }
+
</ins><span class="cx"> var insertIntoTopLevel = false;
</span><span class="cx">
</span><span class="cx"> if (script.injected) {
</span><span class="lines">@@ -349,8 +360,64 @@
</span><span class="cx"> this._anonymousScriptsFolderTreeElement.parent.removeChild(this._anonymousScriptsFolderTreeElement, suppressOnDeselect, suppressSelectSibling);
</span><span class="cx"> this._anonymousScriptsFolderTreeElement = null;
</span><span class="cx"> }
</span><ins>+
+ this._deferredTargetScripts = [];
+ if (this._targetTreeElementMap.size) {
+ for (let treeElement of this._targetTreeElementMap)
+ treeElement.parent.removeChild(treeElement, suppressOnDeselect, suppressSelectSibling);
+ this._targetTreeElementMap.clear();
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+ _addScriptForNonMainTarget(script)
+ {
+ let targetTreeElement = this._targetTreeElementMap.get(script.target);
+ if (!targetTreeElement) {
+ // Defer adding this script until we have the main resource for the Target.
+ // This can happen when opening the inspector after a page has already loaded,
+ // in those cases the scriptDidParse events are in random order.
+ if (script.isMainResource())
+ this._addTargetWithMainResource(script.target);
+ else
+ this._deferredTargetScripts.push(script);
+ return;
+ }
+
+ let scriptTreeElement = new WebInspector.ScriptTreeElement(script);
+ let index = insertionIndexForObjectInListSortedByFunction(scriptTreeElement, targetTreeElement.children, this._compareTreeElements);
+ targetTreeElement.insertChild(scriptTreeElement, index);
+ }
+
+ _addTargetWithMainResource(target)
+ {
+ console.assert(target.type === WebInspector.Target.Type.Worker);
+
+ let targetTreeElement = new WebInspector.TargetTreeElement(target);
+ this._targetTreeElementMap.set(target, targetTreeElement);
+
+ let index = insertionIndexForObjectInListSortedByFunction(targetTreeElement, this.contentTreeOutline.children, this._compareTreeElements);
+ this.contentTreeOutline.insertChild(targetTreeElement, index);
+
+ let [deferredScriptsForThisTarget, deferredScriptsForAnotherTarget] = this._deferredTargetScripts.partition((script) => script.target === target);
+ this._deferredTargetScripts = deferredScriptsForAnotherTarget;
+ for (let script of deferredScriptsForThisTarget) {
+ let scriptTreeElement = new WebInspector.ScriptTreeElement(script);
+ let index = insertionIndexForObjectInListSortedByFunction(scriptTreeElement, targetTreeElement.children, this._compareTreeElements);
+ targetTreeElement.insertChild(scriptTreeElement, index);
+ }
+ }
+
+ _targetRemoved(event)
+ {
+ let removedTarget = event.data.target;
+
+ let targetTreeElement = this._targetTreeElementMap.take(removedTarget);
+ if (targetTreeElement)
+ targetTreeElement.parent.removeChild(targetTreeElement);
+
+ this._deferredTargetScripts = this._deferredTargetScripts.filter((script) => script.target !== removedTarget);
+ }
+
</ins><span class="cx"> _treeSelectionDidChange(event)
</span><span class="cx"> {
</span><span class="cx"> let treeElement = event.data.selectedElement;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsScriptTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTreeElement.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTreeElement.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTreeElement.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -45,6 +45,11 @@
</span><span class="cx"> } else
</span><span class="cx"> this.addClassName(WebInspector.ScriptTreeElement.AnonymousScriptIconStyleClassName);
</span><span class="cx">
</span><ins>+ if (script.isMainResource()) {
+ console.assert(script.target.type === WebInspector.Target.Type.Worker);
+ this.addClassName("worker-icon");
+ }
+
</ins><span class="cx"> this._script = script;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsSearchSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SearchSidebarPanel.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/SearchSidebarPanel.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SearchSidebarPanel.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -195,8 +195,8 @@
</span><span class="cx"> updateEmptyContentPlaceholder.call(this);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- for (var script of scriptsToSearch)
- DebuggerAgent.searchInContent(script.id, searchQuery, isCaseSensitive, isRegex, scriptCallback.bind(this, script));
</del><ins>+ for (let script of scriptsToSearch)
+ script.target.DebuggerAgent.searchInContent(script.id, searchQuery, isCaseSensitive, isRegex, scriptCallback.bind(this, script));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function domCallback(error, searchId, resultsCount)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsSourceCodeTextEditorjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js (208303 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js        2016-11-02 21:37:55 UTC (rev 208303)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -101,6 +101,19 @@
</span><span class="cx"> return this._sourceCode;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ get target()
+ {
+ if (this._sourceCode instanceof WebInspector.SourceMapResource) {
+ if (this._sourceCode.sourceMap.originalSourceCode instanceof WebInspector.Script)
+ return this._sourceCode.sourceMap.originalSourceCode.target;
+ }
+
+ if (this._sourceCode instanceof WebInspector.Script)
+ return this._sourceCode.target;
+
+ return WebInspector.mainTarget;
+ }
+
</ins><span class="cx"> shown()
</span><span class="cx"> {
</span><span class="cx"> super.shown();
</span><span class="lines">@@ -236,7 +249,7 @@
</span><span class="cx"> if (this._sourceCode instanceof WebInspector.Resource)
</span><span class="cx"> PageAgent.searchInResource(this._sourceCode.parentFrame.id, this._sourceCode.url, query, false, false, searchResultCallback.bind(this));
</span><span class="cx"> else if (this._sourceCode instanceof WebInspector.Script)
</span><del>- DebuggerAgent.searchInContent(this._sourceCode.id, query, false, false, searchResultCallback.bind(this));
</del><ins>+ this._sourceCode.target.DebuggerAgent.searchInContent(this._sourceCode.id, query, false, false, searchResultCallback.bind(this));
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1037,7 +1050,7 @@
</span><span class="cx">
</span><span class="cx"> if (script) {
</span><span class="cx"> contextMenu.appendItem(WebInspector.UIString("Continue to Here"), () => {
</span><del>- WebInspector.debuggerManager.continueToLocation(script.id, sourceCodeLocation.lineNumber, sourceCodeLocation.columnNumber);
</del><ins>+ WebInspector.debuggerManager.continueToLocation(script, sourceCodeLocation.lineNumber, sourceCodeLocation.columnNumber);
</ins><span class="cx"> });
</span><span class="cx"> contextMenu.appendSeparator();
</span><span class="cx"> }
</span><span class="lines">@@ -1510,7 +1523,7 @@
</span><span class="cx"> if (candidate !== this.tokenTrackingController.candidate)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- var data = WebInspector.RemoteObject.fromPayload(result);
</del><ins>+ let data = WebInspector.RemoteObject.fromPayload(result, this.target);
</ins><span class="cx"> switch (data.type) {
</span><span class="cx"> case "function":
</span><span class="cx"> this._showPopoverForFunction(data);
</span><span class="lines">@@ -1531,15 +1544,16 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var expression = appendWebInspectorSourceURL(candidate.expression);
</del><ins>+ let target = WebInspector.debuggerManager.activeCallFrame ? WebInspector.debuggerManager.activeCallFrame.target : this.target;
+ let expression = appendWebInspectorSourceURL(candidate.expression);
</ins><span class="cx">
</span><span class="cx"> if (WebInspector.debuggerManager.activeCallFrame) {
</span><del>- DebuggerAgent.evaluateOnCallFrame.invoke({callFrameId: WebInspector.debuggerManager.activeCallFrame.id, expression, objectGroup: "popover", doNotPauseOnExceptionsAndMuteConsole: true}, populate.bind(this));
</del><ins>+ target.DebuggerAgent.evaluateOnCallFrame.invoke({callFrameId: WebInspector.debuggerManager.activeCallFrame.id, expression, objectGroup: "popover", doNotPauseOnExceptionsAndMuteConsole: true}, populate.bind(this), target.DebuggerAgent);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // No call frame available. Use the main page's context.
- RuntimeAgent.evaluate.invoke({expression, objectGroup: "popover", doNotPauseOnExceptionsAndMuteConsole: true}, populate.bind(this));
</del><ins>+ // No call frame available. Use the SourceCode's page's context.
+ target.RuntimeAgent.evaluate.invoke({expression, objectGroup: "popover", doNotPauseOnExceptionsAndMuteConsole: true}, populate.bind(this), target.RuntimeAgent);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _tokenTrackingControllerHighlightedJavaScriptTypeInformation(candidate)
</span><span class="lines">@@ -1632,7 +1646,7 @@
</span><span class="cx"> content.appendChild(title);
</span><span class="cx">
</span><span class="cx"> let location = response.location;
</span><del>- let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId);
</del><ins>+ let sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId, this.target);
</ins><span class="cx"> let sourceCodeLocation = sourceCode.createSourceCodeLocation(location.lineNumber, location.columnNumber);
</span><span class="cx"> let functionSourceCodeLink = WebInspector.createSourceCodeLocationLink(sourceCodeLocation);
</span><span class="cx"> title.appendChild(functionSourceCodeLink);
</span><span class="lines">@@ -1659,7 +1673,8 @@
</span><span class="cx">
</span><span class="cx"> this._showPopover(content);
</span><span class="cx"> }
</span><del>- DebuggerAgent.getFunctionDetails(data.objectId, didGetDetails.bind(this));
</del><ins>+
+ data.target.DebuggerAgent.getFunctionDetails(data.objectId, didGetDetails.bind(this));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _showPopoverForObject(data)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsTargetTreeElementjsfromrev208303trunkSourceWebInspectorUIUserInterfaceViewsScriptTreeElementjs"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebInspectorUI/UserInterface/Views/TargetTreeElement.js (from rev 208303, trunk/Source/WebInspectorUI/UserInterface/Views/ScriptTreeElement.js) (0 => 208304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/TargetTreeElement.js         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TargetTreeElement.js        2016-11-02 21:51:36 UTC (rev 208304)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.TargetTreeElement = class TargetTreeElement extends WebInspector.ScriptTreeElement
+{
+ constructor(target)
+ {
+ super(target.mainResource);
+
+ console.assert(target instanceof WebInspector.Target);
+ console.assert(target.type === WebInspector.Target.Type.Worker);
+ console.assert(target.mainResource instanceof WebInspector.Script);
+
+ this._target = target;
+
+ this._expandedSetting = new WebInspector.Setting("target-expanded-" + this.target.name.hash, true);
+
+ if (this._expandedSetting.value)
+ this.expand();
+ }
+
+ // Public
+
+ get target() { return this._target; }
+
+ // Protected (TreeElement)
+
+ onexpand()
+ {
+ this._expandedSetting.value = true;
+ }
+
+ oncollapse()
+ {
+ if (this.hasChildren)
+ this._expandedSetting.value = false;
+ }
+};
</ins></span></pre>
</div>
</div>
</body>
</html>