<!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>[173929] trunk/Source</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/173929">173929</a></dd>
<dt>Author</dt> <dd>timothy@apple.com</dd>
<dt>Date</dt> <dd>2014-09-24 12:58:08 -0700 (Wed, 24 Sep 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Make the Web Inspector use a separate web process.
https://bugs.webkit.org/show_bug.cgi?id=135120
Reviewed by Anders Carlsson.
Source/WebCore:
* English.lproj/Localizable.strings: Updated.
* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/ScriptGlobalObject.h:
* bindings/js/ScriptState.h:
* inspector/InspectorFrontendHost.h:
* inspector/InspectorPageAgent.h:
* page/Chrome.h:
Exported a few functions and private headers.
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::setInspectorFrontendClient):
(WebCore::InspectorController::hasInspectorFrontendClient):
(WebCore::InspectorController::show):
* inspector/InspectorController.h:
Make InspectorFrontendClient a pointer instead of a std::unique_ptr.
This makes it easier to implement InspectorFrontendClient as
part of an existing object that is externally owned.
* testing/Internals.cpp:
(WebCore::Internals::openDummyInspectorFrontend):
(WebCore::Internals::closeDummyInspectorFrontend):
* testing/Internals.h:
Change InspectorFrontendClientDummy from being moved to owned.
Source/WebInspectorUI:
* Localizations/en.lproj/localizedStrings.js: Updated.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
(WebInspector.contentLoaded):
Move InspectorFrontendHost.loaded to later in the load.
Calling it early just shows the window before we have
a user interface to show.
* UserInterface/Base/Test.js:
(WebInspector.loaded):
(WebInspector.contentLoaded):
Match the changes in Main.js.
* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.savedURL): Change comment.
(InspectorFrontendAPI.appendedToURL): Change comment.
(InspectorFrontendAPI.dispatch): Add an assert and early
return to be safe from unknown commands.
(InspectorFrontendAPI.loadCompleted): Delete _pendingCommands,
no need to keep an empty array around a one time use.
Source/WebKit/ios:
* WebCoreSupport/WebInspectorClientIOS.mm:
(WebInspectorClient::WebInspectorClient):
Removed m_frontendClient initialization since it is
now a std::unique_ptr that defaults to nullptr.
Source/WebKit/mac:
* WebCoreSupport/WebInspectorClient.h:
* WebCoreSupport/WebInspectorClient.mm:
(WebInspectorClient::WebInspectorClient):
(WebInspectorClient::openInspectorFrontend):
(WebInspectorClient::releaseFrontend):
Own WebInspectorFrontendClient instead of moving it.
Source/WebKit/win:
* WebCoreSupport/WebInspectorClient.cpp:
(WebInspectorClient::openInspectorFrontend):
* WebCoreSupport/WebInspectorClient.h:
(WebInspectorClient::frontendClient):
Own WebInspectorFrontendClient instead of moving it.
Source/WebKit2:
* CMakeLists.txt:
* DerivedSources.make:
* PlatformEfl.cmake:
* PlatformGTK.cmake:
* WebKit2.xcodeproj/project.pbxproj:
Added new WebInspectorUI files and removed WebInspectorFrontendClient.cpp.
* Shared/APIObject.h: Added BundleInspectorUI.
* Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.mm:
(WebKit::ChildProcessMainDelegate::getExtraInitializationData):
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
(WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
Add support for "inspector-process" data, a boolean that is used by
WebProcess::initializeProcessName.
* UIProcess/API/C/WKInspector.cpp:
(WKInspectorIsDebuggingJavaScript):
(WKInspectorToggleJavaScriptDebugging):
(WKInspectorIsProfilingJavaScript):
(WKInspectorToggleJavaScriptProfiling):
* UIProcess/API/C/WKInspector.h:
Stub out functions we don't support but need to keep for nightly compatibility.
* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorPageGroups::createInspectorPageGroup):
(WebKit::WebInspectorProxy::WebInspectorProxy):
(WebKit::WebInspectorProxy::invalidate):
(WebKit::WebInspectorProxy::connect):
(WebKit::WebInspectorProxy::showConsole):
(WebKit::WebInspectorProxy::showResources):
(WebKit::WebInspectorProxy::showMainResourceForFrame):
(WebKit::WebInspectorProxy::attach):
(WebKit::WebInspectorProxy::detach):
(WebKit::WebInspectorProxy::inspectorContext):
(WebKit::WebInspectorProxy::dispatchMessageFromRemoteFrontend):
(WebKit::WebInspectorProxy::eagerlyCreateInspectorPage):
(WebKit::WebInspectorProxy::createInspectorPage):
(WebKit::WebInspectorProxy::open):
(WebKit::WebInspectorProxy::didClose):
(WebKit::WebInspectorProxy::attachAvailabilityChanged):
* UIProcess/WebInspectorProxy.h:
(WebKit::WebInspectorProxy::isConnected):
(WebKit::WebInspectorProxy::canAttach):
* UIProcess/WebInspectorProxy.messages.in:
* UIProcess/efl/WebInspectorProxyEfl.cpp:
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
(WebKit::WebInspectorProxy::platformAttach):
* UIProcess/mac/WebInspectorProxyMac.mm:
(-[WKWebInspectorProxyObjCAdapter close]):
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
(WebKit::WebInspectorProxy::platformDidClose):
(WebKit::WebInspectorProxy::platformHide):
(WebKit::WebInspectorProxy::platformSave):
(WebKit::WebInspectorProxy::platformAppend):
(WebKit::WebInspectorProxy::platformAttach):
Changed how the Inspector page is created by making it in a new WebContext for
the Inspector. This removes us from the main process pool and guarantees no process
sharing for our user interface. Also send new WebInspectorUI messages to the Inspector
page and not the inspected page when appropriate.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getLaunchOptions): Add "inspector-process" to extraInitializationData
if the context is the Inspector context. This is used by WebProcess::initializeProcessName.
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
(WebKit::WebInspectorClient::openInspectorFrontend):
(WebKit::WebInspectorClient::closeInspectorFrontend):
(WebKit::WebInspectorClient::bringFrontendToFront):
* WebProcess/WebCoreSupport/WebInspectorClient.h:
Remove the InspectorFrontendChannel class from WebInspectorClient and clean up a little.
InspectorFrontendChannel implementation moved to WebInspector.
* WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp: Removed. Superseded by WebInspectorUI.
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::create):
(WebKit::WebInspector::WebInspector):
(WebKit::WebInspector::createInspectorPage):
(WebKit::WebInspector::closeFrontend):
(WebKit::WebInspector::openInNewTab):
(WebKit::WebInspector::showConsole):
(WebKit::WebInspector::showResources):
(WebKit::WebInspector::showMainResourceForFrame):
(WebKit::WebInspector::startPageProfiling):
(WebKit::WebInspector::stopPageProfiling):
(WebKit::WebInspector::canAttachWindow):
(WebKit::WebInspector::updateDockingAvailability):
(WebKit::WebInspector::sendMessageToBackend):
(WebKit::WebInspector::sendMessageToFrontend):
(WebKit::WebInspector::remoteFrontendConnected):
(WebKit::WebInspector::remoteFrontendDisconnected):
* WebProcess/WebPage/WebInspector.h:
(WebKit::WebInspector::didClose):
(WebKit::WebInspector::didReceiveInvalidMessage):
(WebKit::WebInspector::setAttached):
* WebProcess/WebPage/WebInspector.messages.in:
Stop taking an optional InspectorFrontendChannel and inherit it instead. Create a connection that
can be passed to the other web process for WebInspectorUI to use. Stop referencing Inspector's page
directly, since it is in another process now.
* WebProcess/WebPage/WebInspectorUI.cpp: Added.
(WebKit::WebInspectorUI::create):
(WebKit::WebInspectorUI::WebInspectorUI):
(WebKit::WebInspectorUI::establishConnection):
(WebKit::WebInspectorUI::windowObjectCleared):
(WebKit::WebInspectorUI::frontendLoaded):
(WebKit::WebInspectorUI::moveWindowBy):
(WebKit::WebInspectorUI::bringToFront):
(WebKit::WebInspectorUI::closeWindow):
(WebKit::WebInspectorUI::requestSetDockSide):
(WebKit::WebInspectorUI::setDockSide):
(WebKit::WebInspectorUI::changeAttachedWindowHeight):
(WebKit::WebInspectorUI::changeAttachedWindowWidth):
(WebKit::WebInspectorUI::setToolbarHeight):
(WebKit::WebInspectorUI::openInNewTab):
(WebKit::WebInspectorUI::save):
(WebKit::WebInspectorUI::append):
(WebKit::WebInspectorUI::inspectedURLChanged):
(WebKit::WebInspectorUI::showConsole):
(WebKit::WebInspectorUI::showResources):
(WebKit::WebInspectorUI::showMainResourceForFrame):
(WebKit::WebInspectorUI::startPageProfiling):
(WebKit::WebInspectorUI::stopPageProfiling):
(WebKit::WebInspectorUI::didSave):
(WebKit::WebInspectorUI::didAppend):
(WebKit::WebInspectorUI::sendMessageToFrontend):
(WebKit::WebInspectorUI::sendMessageToBackend):
(WebKit::WebInspectorUI::evaluateCommandOnLoad):
(WebKit::WebInspectorUI::evaluateExpressionOnLoad):
(WebKit::WebInspectorUI::evaluatePendingExpressions):
* WebProcess/WebPage/WebInspectorUI.h: Added.
(WebKit::WebInspectorUI::page):
(WebKit::WebInspectorUI::didClose):
(WebKit::WebInspectorUI::didReceiveInvalidMessage):
(WebKit::WebInspectorUI::attachedBottom):
(WebKit::WebInspectorUI::attachedRight):
(WebKit::WebInspectorUI::detached):
(WebKit::WebInspectorUI::evaluateCommandOnLoad):
* WebProcess/WebPage/WebInspectorUI.messages.in: Added.
* WebProcess/WebPage/efl/WebInspectorUIEfl.cpp: Added.
(WebKit::WebInspectorUI::canSave):
(WebKit::WebInspectorUI::localizedStringsURL):
* WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp: Added.
(WebKit::WebInspectorUI::canSave):
(WebKit::WebInspectorUI::localizedStringsURL):
* WebProcess/WebPage/mac/WebInspectorUIMac.mm: Added.
(WebKit::WebInspectorUI::canSave):
(WebKit::WebInspectorUI::localizedStringsURL):
Implement the InspectorFrontendClient and handle a connection to the inspected page's WebInspector.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::~WebPage):
(WebKit::WebPage::inspector):
(WebKit::WebPage::inspectorUI):
(WebKit::WebPage::didReceiveMessage):
Setup as a listener for WebInspectorUI messages.
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::isInspectorPage): It is an Inspector page if we have a m_inspectorUI.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::initializeProcessName):
Name the process "%@ Web Inspector" if it is an Inspector content process. Processes in that
context are not shared with multiple pages.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreEnglishlprojLocalizablestrings">trunk/Source/WebCore/English.lproj/Localizable.strings</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptGlobalObjecth">trunk/Source/WebCore/bindings/js/ScriptGlobalObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptStateh">trunk/Source/WebCore/bindings/js/ScriptState.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorControllercpp">trunk/Source/WebCore/inspector/InspectorController.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorControllerh">trunk/Source/WebCore/inspector/InspectorController.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorFrontendHosth">trunk/Source/WebCore/inspector/InspectorFrontendHost.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgenth">trunk/Source/WebCore/inspector/InspectorPageAgent.h</a></li>
<li><a href="#trunkSourceWebCorepageChromeh">trunk/Source/WebCore/page/Chrome.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsh">trunk/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs">trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseMainjs">trunk/Source/WebInspectorUI/UserInterface/Base/Main.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseTestjs">trunk/Source/WebInspectorUI/UserInterface/Base/Test.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceProtocolInspectorFrontendAPIjs">trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js</a></li>
<li><a href="#trunkSourceWebKitWebKitvcxprojWebKitExportGeneratorWebKitExportsdefin">trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in</a></li>
<li><a href="#trunkSourceWebKitiosChangeLog">trunk/Source/WebKit/ios/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitiosWebCoreSupportWebInspectorClientIOSmm">trunk/Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebInspectorClienth">trunk/Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebInspectorClientmm">trunk/Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebInspectorClientcpp">trunk/Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebInspectorClienth">trunk/Source/WebKit/win/WebCoreSupport/WebInspectorClient.h</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2DerivedSourcesmake">trunk/Source/WebKit2/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebKit2PlatformEflcmake">trunk/Source/WebKit2/PlatformEfl.cmake</a></li>
<li><a href="#trunkSourceWebKit2PlatformGTKcmake">trunk/Source/WebKit2/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIObjecth">trunk/Source/WebKit2/Shared/APIObject.h</a></li>
<li><a href="#trunkSourceWebKit2SharedEntryPointUtilitiesmacLegacyProcessChildProcessEntryPointmm">trunk/Source/WebKit2/Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.mm</a></li>
<li><a href="#trunkSourceWebKit2SharedEntryPointUtilitiesmacXPCServiceXPCServiceEntryPointmm">trunk/Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKInspectorcpp">trunk/Source/WebKit2/UIProcess/API/C/WKInspector.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKInspectorh">trunk/Source/WebKit2/UIProcess/API/C/WKInspector.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebInspectorProxycpp">trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebInspectorProxyh">trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebInspectorProxymessagesin">trunk/Source/WebKit2/UIProcess/WebInspectorProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebProcessProxycpp">trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcesseflWebInspectorProxyEflcpp">trunk/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessgtkWebInspectorProxyGtkcpp">trunk/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebInspectorProxyMacmm">trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorcpp">trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorh">trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectormessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcesscocoaWebProcessCocoamm">trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorUIcpp">trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorUIh">trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorUImessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageeflWebInspectorUIEflcpp">trunk/Source/WebKit2/WebProcess/WebPage/efl/WebInspectorUIEfl.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagegtkWebInspectorUIGtkcpp">trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacWebInspectorUIMacmm">trunk/Source/WebKit2/WebProcess/WebPage/mac/WebInspectorUIMac.mm</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorFrontendClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/ChangeLog        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2014-09-21 Timothy Hatcher <timothy@apple.com>
+
+ Make the Web Inspector use a separate web process.
+
+ https://bugs.webkit.org/show_bug.cgi?id=135120
+
+ Reviewed by Anders Carlsson.
+
+ * English.lproj/Localizable.strings: Updated.
+
+ * WebCore.exp.in:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/ScriptGlobalObject.h:
+ * bindings/js/ScriptState.h:
+ * inspector/InspectorFrontendHost.h:
+ * inspector/InspectorPageAgent.h:
+ * page/Chrome.h:
+ Exported a few functions and private headers.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::InspectorController):
+ (WebCore::InspectorController::setInspectorFrontendClient):
+ (WebCore::InspectorController::hasInspectorFrontendClient):
+ (WebCore::InspectorController::show):
+ * inspector/InspectorController.h:
+ Make InspectorFrontendClient a pointer instead of a std::unique_ptr.
+ This makes it easier to implement InspectorFrontendClient as
+ part of an existing object that is externally owned.
+
+ * testing/Internals.cpp:
+ (WebCore::Internals::openDummyInspectorFrontend):
+ (WebCore::Internals::closeDummyInspectorFrontend):
+ * testing/Internals.h:
+ Change InspectorFrontendClientDummy from being moved to owned.
+
</ins><span class="cx"> 2014-09-23 Dean Jackson <dino@apple.com>
</span><span class="cx">
</span><span class="cx"> [Yosemite] Button text doesn't go white while pushing the button, like it does for real buttons
</span></span></pre></div>
<a id="trunkSourceWebCoreEnglishlprojLocalizablestrings"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/English.lproj/Localizable.strings (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/English.lproj/Localizable.strings        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/English.lproj/Localizable.strings        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -49,6 +49,9 @@
</span><span class="cx"> /* Visible name of the web process. The argument is the application name. */
</span><span class="cx"> "%@ Web Content" = "%@ Web Content";
</span><span class="cx">
</span><ins>+/* Visible name of Web Inspector's web process. The argument is the application name. */
+"%@ Web Inspector" = "%@ Web Inspector";
+
</ins><span class="cx"> /* Name of application's single WebCrypto master key in Keychain */
</span><span class="cx"> "%@ WebCrypto Master Key" = "%@ WebCrypto Master Key";
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -770,6 +770,7 @@
</span><span class="cx"> __ZN7WebCore17SubresourceLoader6createEPNS_5FrameEPNS_14CachedResourceERKNS_15ResourceRequestERKNS_21ResourceLoaderOptionsE
</span><span class="cx"> __ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEPN3JSC9StructureEPKNS2_9ClassInfoE
</span><span class="cx"> __ZN7WebCore17encodeForFileNameERKN3WTF6StringE
</span><ins>+__ZN7WebCore17execStateFromPageERNS_15DOMWrapperWorldEPNS_4PageE
</ins><span class="cx"> __ZN7WebCore17languageDidChangeEv
</span><span class="cx"> __ZN7WebCore17openTemporaryFileERKN3WTF6StringERi
</span><span class="cx"> __ZN7WebCore17sRGBColorSpaceRefEv
</span><span class="lines">@@ -793,6 +794,7 @@
</span><span class="cx"> __ZN7WebCore18PlatformPasteboard8getTypesERN3WTF6VectorINS1_6StringELm0ENS1_15CrashOnOverflowEEE
</span><span class="cx"> __ZN7WebCore18PlatformPasteboard8setTypesERKN3WTF6VectorINS1_6StringELm0ENS1_15CrashOnOverflowEEE
</span><span class="cx"> __ZN7WebCore18PlatformPasteboardC1ERKN3WTF6StringE
</span><ins>+__ZN7WebCore18ScriptGlobalObject3setEPN3JSC9ExecStateEPKcPNS_21InspectorFrontendHostE
</ins><span class="cx"> __ZN7WebCore18StyleSheetContents11parseStringERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore18StyleSheetContentsC1EPNS_15StyleRuleImportERKN3WTF6StringERKNS_16CSSParserContextE
</span><span class="cx"> __ZN7WebCore18StyleSheetContentsD1Ev
</span><span class="lines">@@ -1925,7 +1927,10 @@
</span><span class="cx"> __ZNK7WebCore5Range9firstNodeEv
</span><span class="cx"> __ZNK7WebCore5Range9textQuadsERN3WTF6VectorINS_9FloatQuadELm0ENS1_15CrashOnOverflowEEEbPNS0_20RangeInFixedPositionE
</span><span class="cx"> __ZNK7WebCore5Range9textRectsERN3WTF6VectorINS_7IntRectELm0ENS1_15CrashOnOverflowEEEbPNS0_20RangeInFixedPositionE
</span><ins>+__ZNK7WebCore6Chrome10windowRectEv
</ins><span class="cx"> __ZNK7WebCore6Chrome12createWindowEPNS_5FrameERKNS_16FrameLoadRequestERKNS_14WindowFeaturesERKNS_16NavigationActionE
</span><ins>+__ZNK7WebCore6Chrome13setWindowRectERKNS_9FloatRectE
+__ZNK7WebCore6Chrome4showEv
</ins><span class="cx"> __ZNK7WebCore6Editor12selectedTextEv
</span><span class="cx"> __ZNK7WebCore6Editor13canEditRichlyEv
</span><span class="cx"> __ZNK7WebCore6Editor16compositionRangeEv
</span><span class="lines">@@ -3122,13 +3127,18 @@
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> __ZN7WebCore14SchemeRegistry27shouldTreatURLSchemeAsLocalERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore15InspectorClient31doDispatchMessageOnFrontendPageEPNS_4PageERKN3WTF6StringE
</span><ins>+__ZN7WebCore18InspectorPageAgent7frameIdEPNS_5FrameE
</ins><span class="cx"> __ZN7WebCore19InspectorController15connectFrontendEPN9Inspector24InspectorFrontendChannelEb
</span><span class="cx"> __ZN7WebCore19InspectorController18disconnectFrontendEN9Inspector25InspectorDisconnectReasonE
</span><span class="cx"> __ZN7WebCore19InspectorController18setProfilerEnabledEb
</span><span class="cx"> __ZN7WebCore19InspectorController25evaluateForTestInFrontendERKN3WTF6StringE
</span><del>-__ZN7WebCore19InspectorController26setInspectorFrontendClientENSt3__110unique_ptrINS_23InspectorFrontendClientENS1_14default_deleteIS3_EEEE
</del><ins>+__ZN7WebCore19InspectorController26setInspectorFrontendClientEPNS_23InspectorFrontendClientE
+__ZN7WebCore19InspectorController27dispatchMessageFromFrontendERKN3WTF6StringE
</ins><span class="cx"> __ZN7WebCore19InspectorController4showEv
</span><span class="cx"> __ZN7WebCore19InspectorController5closeEv
</span><ins>+__ZN7WebCore21InspectorFrontendHost16disconnectClientEv
+__ZN7WebCore21InspectorFrontendHostC1EPNS_23InspectorFrontendClientEPNS_4PageE
+__ZN7WebCore21InspectorFrontendHostD1Ev
</ins><span class="cx"> __ZN7WebCore22instrumentationForPageEPNS_4PageE
</span><span class="cx"> __ZN7WebCore24InspectorInstrumentation17s_frontendCounterE
</span><span class="cx"> __ZN7WebCore24InspectorInstrumentation26instrumentingAgentsForPageEPNS_4PageE
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -1761,7 +1761,7 @@
</span><span class="cx">                 4F1534E011B533020021FD86 /* EditingBehaviorTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 4F4F5FFB11CBD2E100A186BF /* InspectorWebFrontendDispatchers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F4F5FFA11CBD2D200A186BF /* InspectorWebFrontendDispatchers.cpp */; };
</span><span class="cx">                 4F6FDD641341DEDD001F8EE3 /* InspectorPageAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F6FDD621341DEDD001F8EE3 /* InspectorPageAgent.cpp */; };
</span><del>-                4F6FDD651341DEDD001F8EE3 /* InspectorPageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6FDD631341DEDD001F8EE3 /* InspectorPageAgent.h */; };
</del><ins>+                4F6FDD651341DEDD001F8EE3 /* InspectorPageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6FDD631341DEDD001F8EE3 /* InspectorPageAgent.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 4F707A9911EF679400ACDA69 /* InspectorWebBackendDispatchers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F707A9711EF679400ACDA69 /* InspectorWebBackendDispatchers.cpp */; };
</span><span class="cx">                 4F707A9A11EF679400ACDA69 /* InspectorWebBackendDispatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F707A9811EF679400ACDA69 /* InspectorWebBackendDispatchers.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 4FB390AD15EF61F3007AD51F /* GeneratedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FB390AC15EF61F3007AD51F /* GeneratedImage.cpp */; };
</span><span class="lines">@@ -2330,7 +2330,7 @@
</span><span class="cx">                 79F2F5A11091939A000D87CB /* CompositionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79F2F59E1091939A000D87CB /* CompositionEvent.cpp */; };
</span><span class="cx">                 79F2F5A21091939A000D87CB /* CompositionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F2F59F1091939A000D87CB /* CompositionEvent.h */; };
</span><span class="cx">                 7A0E770E10C00A8800A0276E /* InspectorFrontendHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A0E770B10C00A8800A0276E /* InspectorFrontendHost.cpp */; };
</span><del>-                7A0E770F10C00A8800A0276E /* InspectorFrontendHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0E770C10C00A8800A0276E /* InspectorFrontendHost.h */; };
</del><ins>+                7A0E770F10C00A8800A0276E /* InspectorFrontendHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0E770C10C00A8800A0276E /* InspectorFrontendHost.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 7A0E771E10C00DB100A0276E /* JSInspectorFrontendHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A0E771C10C00DB100A0276E /* JSInspectorFrontendHost.cpp */; };
</span><span class="cx">                 7A0E771F10C00DB100A0276E /* JSInspectorFrontendHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0E771D10C00DB100A0276E /* JSInspectorFrontendHost.h */; };
</span><span class="cx">                 7A1D7FCB18F85F0F00C385AD /* mediaControlsLocalizedStrings.js in Resources */ = {isa = PBXBuildFile; fileRef = 7A1D7FC918F85F0F00C385AD /* mediaControlsLocalizedStrings.js */; };
</span><span class="lines">@@ -2370,7 +2370,7 @@
</span><span class="cx">                 7AB0B1C11211A62200A76940 /* InspectorDatabaseAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB0B1BF1211A62200A76940 /* InspectorDatabaseAgent.h */; };
</span><span class="cx">                 7ACD88D314C08BD60084EDD2 /* InspectorIndexedDBAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7ACD88D114C08BD60084EDD2 /* InspectorIndexedDBAgent.cpp */; };
</span><span class="cx">                 7ACD88D414C08BD60084EDD2 /* InspectorIndexedDBAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ACD88D214C08BD60084EDD2 /* InspectorIndexedDBAgent.h */; };
</span><del>-                7ADE722610CBBB9B006B3B3A /* ContextMenuProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */; };
</del><ins>+                7ADE722610CBBB9B006B3B3A /* ContextMenuProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 7AF9B20218CFB2DF00C64BEF /* VTTRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AF9B1FC18CFB2DF00C64BEF /* VTTRegion.cpp */; };
</span><span class="cx">                 7AF9B20318CFB2DF00C64BEF /* VTTRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AF9B1FD18CFB2DF00C64BEF /* VTTRegion.h */; };
</span><span class="cx">                 7AF9B20518CFB2DF00C64BEF /* VTTRegionList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AF9B1FF18CFB2DF00C64BEF /* VTTRegionList.cpp */; };
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptGlobalObject.h (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptGlobalObject.h        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/bindings/js/ScriptGlobalObject.h        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> public:
</span><span class="cx"> static bool set(JSC::ExecState*, const char* name, const Deprecated::ScriptObject&);
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>- static bool set(JSC::ExecState*, const char* name, InspectorFrontendHost*);
</del><ins>+ WEBCORE_EXPORT static bool set(JSC::ExecState*, const char* name, InspectorFrontendHost*);
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> static bool get(JSC::ExecState*, const char* name, Deprecated::ScriptObject&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptState.h (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptState.h        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/bindings/js/ScriptState.h        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> JSC::ExecState* mainWorldExecState(Frame*);
</span><span class="cx">
</span><span class="cx"> JSC::ExecState* execStateFromNode(DOMWrapperWorld&, Node*);
</span><del>-JSC::ExecState* execStateFromPage(DOMWrapperWorld&, Page*);
</del><ins>+WEBCORE_EXPORT JSC::ExecState* execStateFromPage(DOMWrapperWorld&, Page*);
</ins><span class="cx"> JSC::ExecState* execStateFromWorkerGlobalScope(WorkerGlobalScope*);
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.cpp        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -86,6 +86,7 @@
</span><span class="cx"> , m_inspectorFrontendChannel(nullptr)
</span><span class="cx"> , m_page(page)
</span><span class="cx"> , m_inspectorClient(inspectorClient)
</span><ins>+ , m_inspectorFrontendClient(nullptr)
</ins><span class="cx"> , m_isUnderTest(false)
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span><span class="cx"> , m_hasRemoteFrontend(false)
</span><span class="lines">@@ -188,9 +189,9 @@
</span><span class="cx"> m_inspectorClient = nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void InspectorController::setInspectorFrontendClient(std::unique_ptr<InspectorFrontendClient> inspectorFrontendClient)
</del><ins>+void InspectorController::setInspectorFrontendClient(InspectorFrontendClient* inspectorFrontendClient)
</ins><span class="cx"> {
</span><del>- m_inspectorFrontendClient = WTF::move(inspectorFrontendClient);
</del><ins>+ m_inspectorFrontendClient = inspectorFrontendClient;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool InspectorController::hasLocalFrontend() const
</span><span class="lines">@@ -213,7 +214,7 @@
</span><span class="cx">
</span><span class="cx"> bool InspectorController::hasInspectorFrontendClient() const
</span><span class="cx"> {
</span><del>- return m_inspectorFrontendClient.get();
</del><ins>+ return m_inspectorFrontendClient;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorController::didClearWindowObjectInWorld(Frame* frame, DOMWrapperWorld& world)
</span><span class="lines">@@ -283,9 +284,10 @@
</span><span class="cx"> if (m_inspectorFrontendChannel)
</span><span class="cx"> m_inspectorClient->bringFrontendToFront();
</span><span class="cx"> else {
</span><del>- InspectorFrontendChannel* frontendChannel = m_inspectorClient->openInspectorFrontend(this);
- if (frontendChannel)
- connectFrontend(frontendChannel, false);
</del><ins>+ if (InspectorFrontendChannel* frontendChannel = m_inspectorClient->openInspectorFrontend(this)) {
+ bool isAutomaticInspection = false;
+ connectFrontend(frontendChannel, isAutomaticInspection);
+ }
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.h (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.h        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/inspector/InspectorController.h        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> WEBCORE_EXPORT void show();
</span><span class="cx"> WEBCORE_EXPORT void close();
</span><span class="cx">
</span><del>- WEBCORE_EXPORT void setInspectorFrontendClient(std::unique_ptr<InspectorFrontendClient>);
</del><ins>+ WEBCORE_EXPORT void setInspectorFrontendClient(InspectorFrontendClient*);
</ins><span class="cx"> bool hasInspectorFrontendClient() const;
</span><span class="cx"> void didClearWindowObjectInWorld(Frame*, DOMWrapperWorld&);
</span><span class="cx">
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> void resume();
</span><span class="cx">
</span><span class="cx"> InspectorClient* inspectorClient() const { return m_inspectorClient; }
</span><del>- InspectorPageAgent* pageAgent() const { return m_pageAgent; }
</del><ins>+ WEBCORE_EXPORT InspectorPageAgent* pageAgent() const { return m_pageAgent; }
</ins><span class="cx">
</span><span class="cx"> virtual bool developerExtrasEnabled() const override;
</span><span class="cx"> virtual bool canAccessInspectedScriptState(JSC::ExecState*) const override;
</span><span class="lines">@@ -146,10 +146,10 @@
</span><span class="cx"> InspectorTimelineAgent* m_timelineAgent;
</span><span class="cx">
</span><span class="cx"> RefPtr<Inspector::InspectorBackendDispatcher> m_inspectorBackendDispatcher;
</span><del>- std::unique_ptr<InspectorFrontendClient> m_inspectorFrontendClient;
</del><span class="cx"> Inspector::InspectorFrontendChannel* m_inspectorFrontendChannel;
</span><span class="cx"> Page& m_page;
</span><span class="cx"> InspectorClient* m_inspectorClient;
</span><ins>+ InspectorFrontendClient* m_inspectorFrontendClient;
</ins><span class="cx"> Inspector::InspectorAgentRegistry m_agents;
</span><span class="cx"> Vector<InspectorInstrumentationCookie, 2> m_injectedScriptInstrumentationCookies;
</span><span class="cx"> bool m_isUnderTest;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorFrontendHosth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorFrontendHost.h (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorFrontendHost.h        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/inspector/InspectorFrontendHost.h        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -50,8 +50,8 @@
</span><span class="cx"> return adoptRef(new InspectorFrontendHost(client, frontendPage));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ~InspectorFrontendHost();
- void disconnectClient();
</del><ins>+ WEBCORE_EXPORT ~InspectorFrontendHost();
+ WEBCORE_EXPORT void disconnectClient();
</ins><span class="cx">
</span><span class="cx"> void loaded();
</span><span class="cx"> void requestSetDockSide(const String&);
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> friend class FrontendMenuProvider;
</span><span class="cx"> #endif
</span><del>- InspectorFrontendHost(InspectorFrontendClient*, Page* frontendPage);
</del><ins>+ WEBCORE_EXPORT InspectorFrontendHost(InspectorFrontendClient*, Page* frontendPage);
</ins><span class="cx">
</span><span class="cx"> InspectorFrontendClient* m_client;
</span><span class="cx"> Page* m_frontendPage;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.h (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorPageAgent.h        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.h        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> Frame* mainFrame();
</span><span class="cx"> String createIdentifier();
</span><span class="cx"> Frame* frameForId(const String& frameId);
</span><del>- String frameId(Frame*);
</del><ins>+ WEBCORE_EXPORT String frameId(Frame*);
</ins><span class="cx"> bool hasIdForFrame(Frame*) const;
</span><span class="cx"> String loaderId(DocumentLoader*);
</span><span class="cx"> Frame* findFrameWithSecurityOrigin(const String& originRawString);
</span></span></pre></div>
<a id="trunkSourceWebCorepageChromeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Chrome.h (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Chrome.h        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/page/Chrome.h        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -102,8 +102,8 @@
</span><span class="cx">
</span><span class="cx"> void contentsSizeChanged(Frame*, const IntSize&) const;
</span><span class="cx">
</span><del>- void setWindowRect(const FloatRect&) const;
- FloatRect windowRect() const;
</del><ins>+ WEBCORE_EXPORT void setWindowRect(const FloatRect&) const;
+ WEBCORE_EXPORT FloatRect windowRect() const;
</ins><span class="cx">
</span><span class="cx"> FloatRect pageRect() const;
</span><span class="cx">
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx"> void focusedFrameChanged(Frame*) const;
</span><span class="cx">
</span><span class="cx"> WEBCORE_EXPORT Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) const;
</span><del>- void show() const;
</del><ins>+ WEBCORE_EXPORT void show() const;
</ins><span class="cx">
</span><span class="cx"> bool canRunModal() const;
</span><span class="cx"> bool canRunModalNow() const;
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/testing/Internals.cpp        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -1470,13 +1470,11 @@
</span><span class="cx"> Page* frontendPage = m_frontendWindow->document()->page();
</span><span class="cx"> ASSERT(frontendPage);
</span><span class="cx">
</span><del>- auto frontendClient = std::make_unique<InspectorFrontendClientDummy>(&page->inspectorController(), frontendPage);
</del><ins>+ m_frontendClient = std::make_unique<InspectorFrontendClientDummy>(&page->inspectorController(), frontendPage);
+ frontendPage->inspectorController().setInspectorFrontendClient(m_frontendClient.get());
</ins><span class="cx">
</span><del>- frontendPage->inspectorController().setInspectorFrontendClient(WTF::move(frontendClient));
-
- m_frontendChannel = adoptPtr(new InspectorFrontendChannelDummy(frontendPage));
-
</del><span class="cx"> bool isAutomaticInspection = false;
</span><ins>+ m_frontendChannel = std::make_unique<InspectorFrontendChannelDummy>(frontendPage);
</ins><span class="cx"> page->inspectorController().connectFrontend(m_frontendChannel.get(), isAutomaticInspection);
</span><span class="cx">
</span><span class="cx"> return m_frontendWindow;
</span><span class="lines">@@ -1490,10 +1488,11 @@
</span><span class="cx">
</span><span class="cx"> page->inspectorController().disconnectFrontend(InspectorDisconnectReason::InspectorDestroyed);
</span><span class="cx">
</span><del>- m_frontendChannel.release();
</del><ins>+ m_frontendClient = nullptr;
+ m_frontendChannel = nullptr;
</ins><span class="cx">
</span><span class="cx"> m_frontendWindow->close(m_frontendWindow->scriptExecutionContext());
</span><del>- m_frontendWindow.release();
</del><ins>+ m_frontendWindow.clear();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void Internals::setJavaScriptProfilingEnabled(bool enabled, ExceptionCode& ec)
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.h (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.h        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebCore/testing/Internals.h        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -50,6 +50,7 @@
</span><span class="cx"> class Element;
</span><span class="cx"> class Frame;
</span><span class="cx"> class InspectorFrontendChannelDummy;
</span><ins>+class InspectorFrontendClientDummy;
</ins><span class="cx"> class InternalSettings;
</span><span class="cx"> class MallocStatistics;
</span><span class="cx"> class MemoryInfo;
</span><span class="lines">@@ -350,7 +351,8 @@
</span><span class="cx"> DocumentMarker* markerAt(Node*, const String& markerType, unsigned index, ExceptionCode&);
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> RefPtr<DOMWindow> m_frontendWindow;
</span><del>- OwnPtr<InspectorFrontendChannelDummy> m_frontendChannel;
</del><ins>+ std::unique_ptr<InspectorFrontendClientDummy> m_frontendClient;
+ std::unique_ptr<InspectorFrontendChannelDummy> m_frontendChannel;
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebInspectorUI/ChangeLog        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -1,3 +1,33 @@
</span><ins>+2014-09-21 Timothy Hatcher <timothy@apple.com>
+
+ Make the Web Inspector use a separate web process.
+
+ https://bugs.webkit.org/show_bug.cgi?id=135120
+
+ Reviewed by Anders Carlsson.
+
+ * Localizations/en.lproj/localizedStrings.js: Updated.
+
+ * UserInterface/Base/Main.js:
+ (WebInspector.loaded):
+ (WebInspector.contentLoaded):
+ Move InspectorFrontendHost.loaded to later in the load.
+ Calling it early just shows the window before we have
+ a user interface to show.
+
+ * UserInterface/Base/Test.js:
+ (WebInspector.loaded):
+ (WebInspector.contentLoaded):
+ Match the changes in Main.js.
+
+ * UserInterface/Protocol/InspectorFrontendAPI.js:
+ (InspectorFrontendAPI.savedURL): Change comment.
+ (InspectorFrontendAPI.appendedToURL): Change comment.
+ (InspectorFrontendAPI.dispatch): Add an assert and early
+ return to be safe from unknown commands.
+ (InspectorFrontendAPI.loadCompleted): Delete _pendingCommands,
+ no need to keep an empty array around a one time use.
+
</ins><span class="cx"> 2014-09-24 Andres Gomez <agomez@igalia.com>
</span><span class="cx">
</span><span class="cx"> Unreviewed. Add more free icons for the Web Inspector in GTK+
</span></span></pre></div>
<a id="trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (173928 => 173929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2014-09-24 19:57:12 UTC (rev 173928)
+++ trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2014-09-24 19:58:08 UTC (rev 173929)
</span><span class="lines">@@ -10,7 +10,6 @@
</span><span class="cx">