Changeset 224368 in webkit
- Timestamp:
- Nov 2, 2017, 6:30:01 PM (8 years ago)
- Location:
- trunk/Source
- Files:
-
- 3 added
- 29 edited
- 1 copied
-
JavaScriptCore/ChangeLog (modified) (1 diff)
-
JavaScriptCore/inspector/remote/RemoteControllableTarget.h (modified) (1 diff)
-
JavaScriptCore/inspector/remote/RemoteInspectionTarget.h (modified) (1 diff)
-
JavaScriptCore/inspector/remote/RemoteInspectorConstants.h (modified) (1 diff)
-
JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm (modified) (1 diff)
-
JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp (modified) (1 diff)
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/Sources.txt (modified) (1 diff)
-
WebCore/WebCore.xcodeproj/project.pbxproj (modified) (4 diffs)
-
WebCore/workers/service/context/ServiceWorkerDebuggable.cpp (added)
-
WebCore/workers/service/context/ServiceWorkerDebuggable.h (added)
-
WebCore/workers/service/context/ServiceWorkerInspectorProxy.cpp (added)
-
WebCore/workers/service/context/ServiceWorkerInspectorProxy.h (copied) (copied from trunk/Source/WebInspectorUI/UserInterface/Controllers/AppController.js ) (1 diff)
-
WebCore/workers/service/context/ServiceWorkerThread.cpp (modified) (4 diffs)
-
WebCore/workers/service/context/ServiceWorkerThread.h (modified) (1 diff)
-
WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp (modified) (2 diffs)
-
WebCore/workers/service/context/ServiceWorkerThreadProxy.h (modified) (3 diffs)
-
WebInspectorUI/ChangeLog (modified) (1 diff)
-
WebInspectorUI/Localizations/en.lproj/localizedStrings.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Controllers/AppController.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Controllers/AppControllerBase.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Controllers/DebuggerManager.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Controllers/TimelineManager.js (modified) (2 diffs)
-
WebInspectorUI/UserInterface/Models/TimelineRecording.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Protocol/MainTarget.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Test/TestAppController.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Views/DashboardContainerView.css (modified) (1 diff)
-
WebInspectorUI/UserInterface/Views/DefaultDashboardView.css (modified) (1 diff)
-
WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js (modified) (4 diffs)
-
WebInspectorUI/UserInterface/Views/Toolbar.js (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h (modified) (1 diff)
-
WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r224366 r224368 1 2017-11-02 Joseph Pecoraro <pecoraro@apple.com> 2 3 Make ServiceWorker a Remote Inspector debuggable target 4 https://bugs.webkit.org/show_bug.cgi?id=179043 5 <rdar://problem/34126008> 6 7 Reviewed by Brian Burg. 8 9 * inspector/remote/RemoteControllableTarget.h: 10 * inspector/remote/RemoteInspectionTarget.h: 11 * inspector/remote/RemoteInspectorConstants.h: 12 Include a new ServiceWorker remote inspector target type. 13 14 * inspector/remote/cocoa/RemoteInspectorCocoa.mm: 15 (Inspector::RemoteInspector::listingForInspectionTarget const): 16 Implement listing for a ServiceWorker to include a URL like a page. 17 18 * inspector/remote/glib/RemoteInspectorGlib.cpp: 19 (Inspector::RemoteInspector::listingForInspectionTarget const): 20 Bail for ServiceWorker support in glib. They will need to implement their support. 21 1 22 2017-11-02 Michael Saboff <msaboff@apple.com> 2 23 -
trunk/Source/JavaScriptCore/inspector/remote/RemoteControllableTarget.h
r217509 r224368 52 52 void setTargetIdentifier(unsigned identifier) { m_identifier = identifier; } 53 53 54 enum class Type { JavaScript, Web, Automation };54 enum class Type { JavaScript, ServiceWorker, Web, Automation }; 55 55 virtual Type type() const = 0; 56 56 virtual bool remoteControlAllowed() const = 0; -
trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectionTarget.h
r217509 r224368 72 72 { \ 73 73 return target.type() == Inspector::RemoteControllableTarget::Type::JavaScript \ 74 || target.type() == Inspector::RemoteControllableTarget::Type::ServiceWorker \ 74 75 || target.type() == Inspector::RemoteControllableTarget::Type::Web; \ 75 76 } -
trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h
r221208 r224368 73 73 #define WIRTypeKey @"WIRTypeKey" 74 74 #define WIRTypeJavaScript @"WIRTypeJavaScript" 75 #define WIRTypeServiceWorker @"WIRTypeServiceWorker" 75 76 #define WIRTypeWeb @"WIRTypeWeb" 76 77 #define WIRTypeAutomation @"WIRTypeAutomation" -
trunk/Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm
r221204 r224368 393 393 [listing setObject:WIRTypeJavaScript forKey:WIRTypeKey]; 394 394 break; 395 case RemoteInspectionTarget::Type::ServiceWorker: 396 [listing setObject:target.url() forKey:WIRURLKey]; 397 [listing setObject:target.name() forKey:WIRTitleKey]; 398 [listing setObject:WIRTypeServiceWorker forKey:WIRTypeKey]; 399 break; 395 400 case RemoteInspectionTarget::Type::Web: 396 401 [listing setObject:target.url() forKey:WIRURLKey]; -
trunk/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp
r220860 r224368 187 187 return nullptr; 188 188 189 // FIXME: Support remote debugging of a ServiceWorker. 190 if (target.type() == RemoteInspectionTarget::Type::ServiceWorker) 191 return nullptr; 192 189 193 ASSERT(target.type() == RemoteInspectionTarget::Type::Web || target.type() == RemoteInspectionTarget::Type::JavaScript); 190 194 return g_variant_new("(tsssb)", static_cast<guint64>(target.targetIdentifier()), -
trunk/Source/WebCore/ChangeLog
r224360 r224368 1 2017-11-02 Joseph Pecoraro <pecoraro@apple.com> 2 3 Make ServiceWorker a Remote Inspector debuggable target 4 https://bugs.webkit.org/show_bug.cgi?id=179043 5 <rdar://problem/34126008> 6 7 Reviewed by Brian Burg. 8 9 * Sources.txt: 10 * WebCore.xcodeproj/project.pbxproj: 11 New files. 12 13 * workers/service/context/ServiceWorkerDebuggable.h: Added. 14 * workers/service/context/ServiceWorkerDebuggable.cpp: Added. 15 (WebCore::ServiceWorkerDebuggable::ServiceWorkerDebuggable): 16 (WebCore::ServiceWorkerDebuggable::connect): 17 (WebCore::ServiceWorkerDebuggable::disconnect): 18 (WebCore::ServiceWorkerDebuggable::dispatchMessageFromRemote): 19 ServiceWorker remote inspector target, exposes the script url to debuggers. 20 Pass the channel on to the inspector proxy to hook it up to the worker. 21 22 * workers/service/context/ServiceWorkerInspectorProxy.h: 23 * workers/service/context/ServiceWorkerInspectorProxy.cpp: Added. 24 (WebCore::ServiceWorkerInspectorProxy::ServiceWorkerInspectorProxy): 25 (WebCore::ServiceWorkerInspectorProxy::~ServiceWorkerInspectorProxy): 26 (WebCore::ServiceWorkerInspectorProxy::serviceWorkerTerminated): 27 Handle interesting events throughout a Service Worker life cycle. 28 29 (WebCore::ServiceWorkerInspectorProxy::connectToWorker): 30 (WebCore::ServiceWorkerInspectorProxy::disconnectFromWorker): 31 (WebCore::ServiceWorkerInspectorProxy::sendMessageToWorker): 32 (WebCore::ServiceWorkerInspectorProxy::sendMessageFromWorkerToFrontend): 33 Implement existing worker debugger hooks for connection setup and sending messages. 34 Inspector protocol messages come in on the MainThread and hop over to the 35 WorkerThread to be handled on the expected context thread. Likewise outgoing 36 messages hop back to be sent through the InspectorFrontend channel on MainThread. 37 38 * workers/service/context/ServiceWorkerThread.cpp: 39 (WebCore::ServiceWorkerThread::ServiceWorkerThread): 40 * workers/service/context/ServiceWorkerThread.h: 41 * workers/service/context/ServiceWorkerThreadProxy.h: 42 * workers/service/context/ServiceWorkerThreadProxy.cpp: 43 (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): 44 (WebCore::ServiceWorkerThreadProxy::postMessageToDebugger): 45 Construct the new inspector proxy and debuggable registration. 46 Call lifecycle events and debugger hooks when appropriate. 47 1 48 2017-11-02 Antti Koivisto <antti@apple.com> 2 49 -
trunk/Source/WebCore/Sources.txt
r224345 r224368 2171 2171 workers/service/ServiceWorkerWindowClient.cpp 2172 2172 2173 workers/service/context/ServiceWorkerDebuggable.cpp 2173 2174 workers/service/context/ServiceWorkerFetch.cpp 2175 workers/service/context/ServiceWorkerInspectorProxy.cpp 2174 2176 workers/service/context/ServiceWorkerThread.cpp 2175 2177 workers/service/context/ServiceWorkerThreadProxy.cpp -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r224345 r224368 2819 2819 A513B3D7114B1666001C429B /* KeyEventCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C974CF11485FF10066F2AB /* KeyEventCocoa.h */; }; 2820 2820 A516E8B7136E04DB0076C3C0 /* LocalizedDateCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A516E8B4136E04DB0076C3C0 /* LocalizedDateCache.h */; }; 2821 A52B349E1FA41703008B6246 /* WorkerDebuggerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = A52B349C1FA416F8008B6246 /* WorkerDebuggerProxy.h */; }; 2821 A52B348F1FA3BDA6008B6246 /* ServiceWorkerDebuggable.h in Headers */ = {isa = PBXBuildFile; fileRef = A52B348C1FA3BD79008B6246 /* ServiceWorkerDebuggable.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2822 A52B34961FA3E290008B6246 /* ServiceWorkerInspectorProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = A52B34931FA3E286008B6246 /* ServiceWorkerInspectorProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2823 A52B349E1FA41703008B6246 /* WorkerDebuggerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = A52B349C1FA416F8008B6246 /* WorkerDebuggerProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2822 2824 A5416FE618810EF80009FC5F /* YouTubeEmbedShadowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A5416FE418810EF80009FC5F /* YouTubeEmbedShadowElement.h */; }; 2823 2825 A54A0C621DB7F8C10017A90B /* WorkerInspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = A54A0C601DB7F8B70017A90B /* WorkerInspectorController.h */; }; … … 10678 10680 A518225417E2A0D400A9BA1D /* InspectorOverlayPage.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = InspectorOverlayPage.css; sourceTree = "<group>"; }; 10679 10681 A518225517E2A0D400A9BA1D /* InspectorOverlayPage.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = InspectorOverlayPage.js; sourceTree = "<group>"; }; 10682 A52B348C1FA3BD79008B6246 /* ServiceWorkerDebuggable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerDebuggable.h; sourceTree = "<group>"; }; 10683 A52B348E1FA3BD79008B6246 /* ServiceWorkerDebuggable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorkerDebuggable.cpp; sourceTree = "<group>"; }; 10684 A52B34931FA3E286008B6246 /* ServiceWorkerInspectorProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerInspectorProxy.h; sourceTree = "<group>"; }; 10685 A52B34951FA3E286008B6246 /* ServiceWorkerInspectorProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorkerInspectorProxy.cpp; sourceTree = "<group>"; }; 10680 10686 A52B349C1FA416F8008B6246 /* WorkerDebuggerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerDebuggerProxy.h; sourceTree = "<group>"; }; 10681 10687 A5416FE318810EF80009FC5F /* YouTubeEmbedShadowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = YouTubeEmbedShadowElement.cpp; sourceTree = "<group>"; }; … … 17101 17107 isa = PBXGroup; 17102 17108 children = ( 17109 A52B348E1FA3BD79008B6246 /* ServiceWorkerDebuggable.cpp */, 17110 A52B348C1FA3BD79008B6246 /* ServiceWorkerDebuggable.h */, 17103 17111 419ACF901F97E7D6009F1A83 /* ServiceWorkerFetch.cpp */, 17104 17112 419ACF8E1F97E7D5009F1A83 /* ServiceWorkerFetch.h */, 17113 A52B34951FA3E286008B6246 /* ServiceWorkerInspectorProxy.cpp */, 17114 A52B34931FA3E286008B6246 /* ServiceWorkerInspectorProxy.h */, 17105 17115 517C87111F8EE72F00EB8076 /* ServiceWorkerThread.cpp */, 17106 17116 517C87101F8EE72E00EB8076 /* ServiceWorkerThread.h */, … … 28881 28891 51F1755F1F3EBC8300C74950 /* ServiceWorkerContainer.h in Headers */, 28882 28892 51CA7EE91F883390003D3131 /* ServiceWorkerContextData.h in Headers */, 28893 A52B348F1FA3BDA6008B6246 /* ServiceWorkerDebuggable.h in Headers */, 28883 28894 419ACF921F97E7DA009F1A83 /* ServiceWorkerFetch.h in Headers */, 28884 28895 517A535D1F5899FE00DCDC0A /* ServiceWorkerFetchResult.h in Headers */, 28885 28896 51F175611F3EBC8300C74950 /* ServiceWorkerGlobalScope.h in Headers */, 28897 A52B34961FA3E290008B6246 /* ServiceWorkerInspectorProxy.h in Headers */, 28886 28898 51F175631F3EBC8300C74950 /* ServiceWorkerJob.h in Headers */, 28887 28899 51F175641F3EBC8300C74950 /* ServiceWorkerJobClient.h in Headers */, -
trunk/Source/WebCore/workers/service/context/ServiceWorkerInspectorProxy.h
r224367 r224368 24 24 */ 25 25 26 WI.AppController = class AppController extends WI.AppControllerBase 27 { 28 constructor() 29 { 30 super(); 26 #pragma once 31 27 32 this._hasExtraDomains = false; 33 this._debuggableType = InspectorFrontendHost.debuggableType() === "web" ? WI.DebuggableType.Web : WI.DebuggableType.JavaScript; 34 } 28 #if ENABLE(SERVICE_WORKER) 35 29 36 // Properties. 30 #include <wtf/Forward.h> 37 31 38 get hasExtraDomains() { return this._hasExtraDomains; } 39 get debuggableType() { return this._debuggableType; } 32 // All of these methods should be called on the Main Thread. 33 // Used to send messages to the WorkerInspector on the WorkerThread. 40 34 41 // API. 35 namespace Inspector { 36 class FrontendChannel; 37 } 42 38 43 activateExtraDomains(domains) 44 { 45 if (this._hasExtraDomains) 46 throw new Error("Extra domains have already been activated, cannot activate again."); 39 namespace WebCore { 47 40 48 this._hasExtraDomains = true;41 class ServiceWorkerThreadProxy; 49 42 50 for (let domain of domains) { 51 let agent = InspectorBackend.activateDomain(domain); 52 if (agent.enable) 53 agent.enable(); 54 } 43 class ServiceWorkerInspectorProxy { 44 WTF_MAKE_NONCOPYABLE(ServiceWorkerInspectorProxy); 45 WTF_MAKE_FAST_ALLOCATED; 46 public: 47 explicit ServiceWorkerInspectorProxy(ServiceWorkerThreadProxy&); 48 ~ServiceWorkerInspectorProxy(); 55 49 56 // FIXME: all code within WI.activateExtraDomains should be distributed elsewhere. 57 WI.activateExtraDomains(domains); 58 } 50 void serviceWorkerTerminated(); 51 52 void connectToWorker(Inspector::FrontendChannel*); 53 void disconnectFromWorker(Inspector::FrontendChannel*); 54 void sendMessageToWorker(const String&); 55 void sendMessageFromWorkerToFrontend(const String&); 56 57 private: 58 ServiceWorkerThreadProxy& m_serviceWorkerThreadProxy; 59 Inspector::FrontendChannel* m_channel { nullptr }; 59 60 }; 61 62 } // namespace WebCore 63 64 #endif // ENABLE(SERVICE_WORKER) -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp
r224321 r224368 47 47 namespace WebCore { 48 48 49 class DummyServiceWorkerThreadProxy : public WorkerObjectProxy , public WorkerDebuggerProxy{49 class DummyServiceWorkerThreadProxy : public WorkerObjectProxy { 50 50 public: 51 51 static DummyServiceWorkerThreadProxy& shared() … … 57 57 private: 58 58 void postExceptionToWorkerObject(const String&, int, int, const String&) final { }; 59 void postMessageToDebugger(const String&) final { }60 59 void workerGlobalScopeDestroyed() final { }; 61 60 void postMessageToWorkerObject(Ref<SerializedScriptValue>&&, std::unique_ptr<MessagePortChannelArray>&&) final { }; … … 65 64 66 65 // FIXME: Use a valid WorkerReportingProxy 67 // FIXME: Use a valid WorkerDebuggerProxy68 66 // FIXME: Use a valid WorkerObjectProxy 69 67 // FIXME: Use a valid IDBConnection … … 73 71 // FIXME: Use valid runtime flags 74 72 75 ServiceWorkerThread::ServiceWorkerThread(uint64_t serverConnectionIdentifier, const ServiceWorkerContextData& data, PAL::SessionID, WorkerLoaderProxy& loaderProxy )76 : WorkerThread(data.scriptURL, data.workerID, ASCIILiteral("WorkerUserAgent"), /* isOnline */ false, data.script, loaderProxy, DummyServiceWorkerThreadProxy::shared(), DummyServiceWorkerThreadProxy::shared(), WorkerThreadStartMode::Normal, ContentSecurityPolicyResponseHeaders { }, false, SecurityOrigin::create(data.scriptURL).get(), MonotonicTime::now(), nullptr, nullptr, JSC::RuntimeFlags::createAllEnabled(), SessionID::defaultSessionID())73 ServiceWorkerThread::ServiceWorkerThread(uint64_t serverConnectionIdentifier, const ServiceWorkerContextData& data, PAL::SessionID, WorkerLoaderProxy& loaderProxy, WorkerDebuggerProxy& debuggerProxy) 74 : WorkerThread(data.scriptURL, data.workerID, ASCIILiteral("WorkerUserAgent"), /* isOnline */ false, data.script, loaderProxy, debuggerProxy, DummyServiceWorkerThreadProxy::shared(), WorkerThreadStartMode::Normal, ContentSecurityPolicyResponseHeaders { }, false, SecurityOrigin::create(data.scriptURL).get(), MonotonicTime::now(), nullptr, nullptr, JSC::RuntimeFlags::createAllEnabled(), SessionID::defaultSessionID()) 77 75 , m_serverConnectionIdentifier(serverConnectionIdentifier) 78 76 , m_data(data.isolatedCopy()) -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h
r224321 r224368 66 66 67 67 private: 68 WEBCORE_EXPORT ServiceWorkerThread(uint64_t serverConnectionIdentifier, const ServiceWorkerContextData&, PAL::SessionID, WorkerLoaderProxy& );68 WEBCORE_EXPORT ServiceWorkerThread(uint64_t serverConnectionIdentifier, const ServiceWorkerContextData&, PAL::SessionID, WorkerLoaderProxy&, WorkerDebuggerProxy&); 69 69 70 70 uint64_t m_serverConnectionIdentifier; -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp
r224295 r224368 56 56 : m_page(createPageForServiceWorker(WTFMove(pageConfiguration), data.scriptURL)) 57 57 , m_document(*m_page->mainFrame().document()) 58 , m_serviceWorkerThread(ServiceWorkerThread::create(serverConnectionIdentifier, data, sessionID, *this ))58 , m_serviceWorkerThread(ServiceWorkerThread::create(serverConnectionIdentifier, data, sessionID, *this, *this)) 59 59 , m_cacheStorageProvider(cacheStorageProvider) 60 60 , m_sessionID(sessionID) 61 , m_inspectorProxy(*this) 61 62 { 63 #if ENABLE(REMOTE_INSPECTOR) 64 m_remoteDebuggable = std::make_unique<ServiceWorkerDebuggable>(*this, data); 65 m_remoteDebuggable->setRemoteDebuggingAllowed(true); 66 m_remoteDebuggable->init(); 67 #endif 62 68 } 63 69 … … 76 82 } 77 83 84 void ServiceWorkerThreadProxy::postMessageToDebugger(const String& message) 85 { 86 RunLoop::main().dispatch([this, protectedThis = makeRef(*this), message = message.isolatedCopy()] { 87 // FIXME: Handle terminated case. 88 m_inspectorProxy.sendMessageFromWorkerToFrontend(message); 89 }); 90 } 91 78 92 Ref<CacheStorageConnection> ServiceWorkerThreadProxy::createCacheStorageConnection() 79 93 { -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h
r223981 r224368 31 31 #include "Document.h" 32 32 #include "Page.h" 33 #include "ServiceWorkerDebuggable.h" 34 #include "ServiceWorkerInspectorProxy.h" 33 35 #include "ServiceWorkerThread.h" 36 #include "WorkerDebuggerProxy.h" 34 37 #include "WorkerLoaderProxy.h" 35 38 #include <wtf/HashMap.h> 36 39 37 40 namespace WebCore { 41 38 42 class CacheStorageProvider; 39 43 class PageConfiguration; 44 class ServiceWorkerInspectorProxy; 40 45 struct ServiceWorkerContextData; 41 46 42 class ServiceWorkerThreadProxy final : public ThreadSafeRefCounted<ServiceWorkerThreadProxy>, public WorkerLoaderProxy {47 class ServiceWorkerThreadProxy final : public ThreadSafeRefCounted<ServiceWorkerThreadProxy>, public WorkerLoaderProxy, public WorkerDebuggerProxy { 43 48 public: 44 49 WEBCORE_EXPORT static Ref<ServiceWorkerThreadProxy> create(PageConfiguration&&, uint64_t serverConnectionIdentifier, const ServiceWorkerContextData&, PAL::SessionID, CacheStorageProvider&); … … 46 51 uint64_t identifier() const { return m_serviceWorkerThread->identifier(); } 47 52 ServiceWorkerThread& thread() { return m_serviceWorkerThread.get(); } 53 ServiceWorkerInspectorProxy& inspectorProxy() { return m_inspectorProxy; } 48 54 49 55 private: 50 56 ServiceWorkerThreadProxy(PageConfiguration&&, uint64_t serverConnectionIdentifier, const ServiceWorkerContextData&, PAL::SessionID, CacheStorageProvider&); 57 58 // WorkerLoaderProxy 51 59 bool postTaskForModeToWorkerGlobalScope(ScriptExecutionContext::Task&&, const String& mode) final; 52 60 void postTaskToLoader(ScriptExecutionContext::Task&&) final; 53 61 Ref<CacheStorageConnection> createCacheStorageConnection() final; 62 63 // WorkerDebuggerProxy 64 void postMessageToDebugger(const String&) final; 54 65 55 66 UniqueRef<Page> m_page; … … 59 70 RefPtr<CacheStorageConnection> m_cacheStorageConnection; 60 71 PAL::SessionID m_sessionID; 72 ServiceWorkerInspectorProxy m_inspectorProxy; 73 #if ENABLE(REMOTE_INSPECTOR) 74 std::unique_ptr<ServiceWorkerDebuggable> m_remoteDebuggable; 75 #endif 61 76 }; 62 77 -
trunk/Source/WebInspectorUI/ChangeLog
r224367 r224368 1 2017-11-02 Joseph Pecoraro <pecoraro@apple.com> 2 3 Make ServiceWorker a Remote Inspector debuggable target 4 https://bugs.webkit.org/show_bug.cgi?id=179043 5 <rdar://problem/34126008> 6 7 Reviewed by Brian Burg. 8 9 Customize the Web Inspector frontend for a ServiceWorker target. 10 Currently this just behaves like a JavaScript Context target because 11 we haven't yet added support for Networking capabilities. 12 13 * UserInterface/Controllers/DebuggerManager.js: 14 (WI.DebuggerManager.prototype.get knownNonResourceScripts): 15 Drive-by fix a bug where lazily initializing the Resources / Debugger tabs 16 would show Console evaluation scripts. We should ignore them, like we 17 do in other places. 18 19 * Localizations/en.lproj/localizedStrings.js: 20 * UserInterface/Controllers/AppController.js: 21 (WI.AppController): 22 (WI.AppController.debuggableTypeFromHost): 23 * UserInterface/Controllers/AppControllerBase.js: 24 * UserInterface/Controllers/TimelineManager.js: 25 (WI.TimelineManager.defaultTimelineTypes): 26 (WI.TimelineManager.availableTimelineTypes): 27 * UserInterface/Models/TimelineRecording.js: 28 (WI.TimelineRecording.sourceCodeTimelinesSupported): 29 * UserInterface/Protocol/MainTarget.js: 30 (WI.MainTarget.prototype.get displayName): 31 * UserInterface/Test/TestAppController.js: 32 * UserInterface/Views/DashboardContainerView.css: 33 (body:not(.web) .toolbar .dashboard-container): 34 (body.javascript .toolbar .dashboard-container): Deleted. 35 * UserInterface/Views/DefaultDashboardView.css: 36 (body:not(.web) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): 37 (body.javascript .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Deleted. 38 * UserInterface/Views/ResourceSidebarPanel.js: 39 (WI.ResourceSidebarPanel): 40 (WI.ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel): 41 (WI.ResourceSidebarPanel.prototype.initialLayout): 42 (WI.ResourceSidebarPanel.prototype._addScript): 43 (WI.ResourceSidebarPanel.prototype._extraDomainsActivated): 44 * UserInterface/Views/Toolbar.js: 45 1 46 2017-11-02 Devin Rousso <webkit@devinrousso.com> 2 47 -
trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
r224367 r224368 819 819 localizedStrings["Semantic Issue"] = "Semantic Issue"; 820 820 localizedStrings["Service Worker"] = "Service Worker"; 821 localizedStrings["ServiceWorker"] = "ServiceWorker"; 821 822 localizedStrings["Session"] = "Session"; 822 823 localizedStrings["Session Storage"] = "Session Storage"; -
trunk/Source/WebInspectorUI/UserInterface/Controllers/AppController.js
r223948 r224368 31 31 32 32 this._hasExtraDomains = false; 33 this._debuggableType = InspectorFrontendHost.debuggableType() === "web" ? WI.DebuggableType.Web : WI.DebuggableType.JavaScript; 33 this._debuggableType = AppController.debuggableTypeFromHost(); 34 } 35 36 // Static 37 38 static debuggableTypeFromHost() 39 { 40 let type = InspectorFrontendHost.debuggableType(); 41 switch (type) { 42 case "javascript": 43 return WI.DebuggableType.JavaScript; 44 case "service-worker": 45 return WI.DebuggableType.ServiceWorker; 46 case "web": 47 return WI.DebuggableType.Web; 48 default: 49 console.assert(false, "Unexpected debuggable type", type); 50 return WI.DebuggableType.JavaScript; 51 } 34 52 } 35 53 -
trunk/Source/WebInspectorUI/UserInterface/Controllers/AppControllerBase.js
r223308 r224368 25 25 26 26 WI.DebuggableType = { 27 JavaScript: "javascript", 28 ServiceWorker: "service-worker", 27 29 Web: "web", 28 JavaScript: "javascript"29 30 }; 30 31 -
trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js
r221308 r224368 286 286 if (script.resource) 287 287 continue; 288 if (isWebInspectorConsoleEvaluationScript(script.sourceURL)) 289 continue; 288 290 if (!WI.isDebugUIEnabled() && isWebKitInternalScript(script.sourceURL)) 289 291 continue; -
trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js
r222181 r224368 74 74 } 75 75 76 if (WI.sharedApp.debuggableType === WI.DebuggableType.ServiceWorker) { 77 // FIXME: Support Network Timeline in ServiceWorker. 78 let defaultTypes = [WI.TimelineRecord.Type.Script]; 79 if (WI.HeapAllocationsInstrument.supported()) 80 defaultTypes.push(WI.TimelineRecord.Type.HeapAllocations); 81 return defaultTypes; 82 } 83 76 84 let defaultTypes = [ 77 85 WI.TimelineRecord.Type.Network, … … 89 97 { 90 98 let types = WI.TimelineManager.defaultTimelineTypes(); 91 if (WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript )99 if (WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript || WI.sharedApp.debuggableType === WI.DebuggableType.ServiceWorker) 92 100 return types; 93 101 -
trunk/Source/WebInspectorUI/UserInterface/Models/TimelineRecording.js
r222181 r224368 57 57 static sourceCodeTimelinesSupported() 58 58 { 59 // FIXME: Support Network Timeline in ServiceWorker. 59 60 return WI.sharedApp.debuggableType === WI.DebuggableType.Web; 60 61 } -
trunk/Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js
r222181 r224368 39 39 { 40 40 switch (WI.sharedApp.debuggableType) { 41 case WI.DebuggableType.JavaScript: 42 return WI.UIString("JavaScript Context"); 43 case WI.DebuggableType.ServiceWorker: 44 return WI.UIString("ServiceWorker"); 41 45 case WI.DebuggableType.Web: 42 46 return WI.UIString("Page"); 43 case WI.DebuggableType.JavaScript:44 return WI.UIString("JavaScript Context");45 47 default: 46 48 console.error("Unexpected debuggable type: ", WI.sharedApp.debuggableType); -
trunk/Source/WebInspectorUI/UserInterface/Test/TestAppController.js
r222181 r224368 26 26 WI.TestAppController = class TestAppController extends WI.AppControllerBase 27 27 { 28 constructor()29 {30 super();31 }32 33 28 get hasExtraDomains() { return false; } 34 29 get debuggableType() { return WI.DebuggableType.Web; } -
trunk/Source/WebInspectorUI/UserInterface/Views/DashboardContainerView.css
r216628 r224368 38 38 } 39 39 40 body .javascript.toolbar .dashboard-container {40 body:not(.web) .toolbar .dashboard-container { 41 41 width: 25vw; 42 42 min-width: 175px; -
trunk/Source/WebInspectorUI/UserInterface/Views/DefaultDashboardView.css
r223694 r224368 28 28 } 29 29 30 body .javascript.toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time) {30 body:not(.web) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time) { 31 31 display: none; 32 32 } -
trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js
r223997 r224368 71 71 this.contentTreeOutline.includeSourceMapResourceChildren = true; 72 72 73 if ( WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript) {73 if (ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel()) { 74 74 this.contentTreeOutline.disclosureButtons = false; 75 75 WI.SourceCode.addEventListener(WI.SourceCode.Event.SourceMapAdded, () => { this.contentTreeOutline.disclosureButtons = true; }, this); 76 76 } 77 } 78 79 // Static 80 81 static shouldPlaceResourcesAtTopLevel() 82 { 83 return (WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript && !WI.sharedApp.hasExtraDomains) 84 || WI.sharedApp.debuggableType === WI.DebuggableType.ServiceWorker; 77 85 } 78 86 … … 198 206 this._addScript(script); 199 207 200 if (script.sourceMaps.length && WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript)208 if (script.sourceMaps.length && ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel()) 201 209 this.contentTreeOutline.disclosureButtons = true; 202 210 } … … 327 335 parentFolderTreeElement = this._extensionScriptsFolderTreeElement; 328 336 } else { 329 if ( WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript && !WI.sharedApp.hasExtraDomains)337 if (ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel()) 330 338 insertIntoTopLevel = true; 331 339 else { … … 485 493 _extraDomainsActivated() 486 494 { 487 if ( WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript)495 if (ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel()) 488 496 this.contentTreeOutline.disclosureButtons = true; 489 497 } -
trunk/Source/WebInspectorUI/UserInterface/Views/Toolbar.js
r222181 r224368 101 101 return; 102 102 103 // Force collapsed style for JavaScriptdebuggables.104 if (WI.sharedApp.debuggableType === WI.DebuggableType.JavaScript) {103 // Force collapsed style for non-Web debuggables. 104 if (WI.sharedApp.debuggableType !== WI.DebuggableType.Web) { 105 105 this.element.classList.add(WI.NavigationBar.CollapsedStyleClassName); 106 106 return; -
trunk/Source/WebKit/ChangeLog
r224358 r224368 1 2017-11-02 Joseph Pecoraro <pecoraro@apple.com> 2 3 Make ServiceWorker a Remote Inspector debuggable target 4 https://bugs.webkit.org/show_bug.cgi?id=179043 5 <rdar://problem/34126008> 6 7 Reviewed by Brian Burg. 8 9 * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h: 10 * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm: 11 (debuggableTypeString): 12 Provide a way to start a Remote Web Inspector frontend for a ServiceWorker target type. 13 1 14 2017-11-02 Ryan Haddad <ryanhaddad@apple.com> 2 15 -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h
r218444 r224368 37 37 typedef NS_ENUM(NSInteger, WKRemoteWebInspectorDebuggableType) { 38 38 WKRemoteWebInspectorDebuggableTypeJavaScript, 39 WKRemoteWebInspectorDebuggableTypeServiceWorker WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)), 39 40 WKRemoteWebInspectorDebuggableTypeWeb, 40 41 } WK_API_AVAILABLE(macosx(10.12.3), ios(10.3)); -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm
r205369 r224368 100 100 case WKRemoteWebInspectorDebuggableTypeJavaScript: 101 101 return ASCIILiteral("javascript"); 102 case WKRemoteWebInspectorDebuggableTypeServiceWorker: 103 return ASCIILiteral("service-worker"); 102 104 case WKRemoteWebInspectorDebuggableTypeWeb: 103 105 return ASCIILiteral("web");
Note:
See TracChangeset
for help on using the changeset viewer.