browser(webkit): return page proxy id from Browser.createPage (#393)

This commit is contained in:
Yury Semikhatsky 2020-01-07 09:50:45 -08:00 committed by GitHub
parent edccb57b13
commit a4919b7e1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 54 deletions

View File

@ -1 +1 @@
1065 1066

View File

@ -176,10 +176,10 @@ index 95d9d81188e735e8f1b70cc0deee2682cb6714f0..4c67ce34302f74e0d07f64ae53a4eaf1
// Note that 'unused' is a workaround so the compiler can pick the right sendResponse based on arity. // Note that 'unused' is a workaround so the compiler can pick the right sendResponse based on arity.
// When <http://webkit.org/b/179847> is fixed or this class is renamed for the JSON::Object case, // When <http://webkit.org/b/179847> is fixed or this class is renamed for the JSON::Object case,
diff --git a/Source/JavaScriptCore/inspector/InspectorTarget.h b/Source/JavaScriptCore/inspector/InspectorTarget.h diff --git a/Source/JavaScriptCore/inspector/InspectorTarget.h b/Source/JavaScriptCore/inspector/InspectorTarget.h
index 4b95964db4d902b4b7f4b0b4c40afea51654ff2f..cecc44dd00bab6aa4f302274cc88af41bf0a8c03 100644 index 4b95964db4d902b4b7f4b0b4c40afea51654ff2f..78455c32fc5ddb0f1b9a828233a652d4f86b4d90 100644
--- a/Source/JavaScriptCore/inspector/InspectorTarget.h --- a/Source/JavaScriptCore/inspector/InspectorTarget.h
+++ b/Source/JavaScriptCore/inspector/InspectorTarget.h +++ b/Source/JavaScriptCore/inspector/InspectorTarget.h
@@ -45,8 +45,11 @@ public: @@ -45,8 +45,10 @@ public:
// State. // State.
virtual String identifier() const = 0; virtual String identifier() const = 0;
virtual InspectorTargetType type() const = 0; virtual InspectorTargetType type() const = 0;
@ -187,11 +187,10 @@ index 4b95964db4d902b4b7f4b0b4c40afea51654ff2f..cecc44dd00bab6aa4f302274cc88af41
virtual bool isProvisional() const { return false; } virtual bool isProvisional() const { return false; }
+ virtual String oldTargetID() const { return String(); } + virtual String oldTargetID() const { return String(); }
+ virtual String openerID() const { return String(); }
bool isPaused() const { return m_isPaused; } bool isPaused() const { return m_isPaused; }
void pause(); void pause();
void resume(); void resume();
@@ -56,6 +59,8 @@ public: @@ -56,6 +58,8 @@ public:
virtual void connect(FrontendChannel::ConnectionType) = 0; virtual void connect(FrontendChannel::ConnectionType) = 0;
virtual void disconnect() = 0; virtual void disconnect() = 0;
virtual void sendMessageToTargetBackend(const String&) = 0; virtual void sendMessageToTargetBackend(const String&) = 0;
@ -201,7 +200,7 @@ index 4b95964db4d902b4b7f4b0b4c40afea51654ff2f..cecc44dd00bab6aa4f302274cc88af41
private: private:
WTF::Function<void()> m_resumeCallback; WTF::Function<void()> m_resumeCallback;
diff --git a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp b/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp diff --git a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp b/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp
index 8fcb5a1e55750d325a84824d86c49cfe6fb04268..b0e22f247818f981e9dbd0981c09d46830cd338e 100644 index 8fcb5a1e55750d325a84824d86c49cfe6fb04268..02b7eae77c4d4636ca9079f89bad24874acafb1c 100644
--- a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp --- a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp
+++ b/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp +++ b/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp
@@ -30,11 +30,12 @@ @@ -30,11 +30,12 @@
@ -247,7 +246,7 @@ index 8fcb5a1e55750d325a84824d86c49cfe6fb04268..b0e22f247818f981e9dbd0981c09d468
void InspectorTargetAgent::sendMessageFromTargetToFrontend(const String& targetId, const String& message) void InspectorTargetAgent::sendMessageFromTargetToFrontend(const String& targetId, const String& message)
{ {
ASSERT_WITH_MESSAGE(m_targets.get(targetId), "Sending a message from an untracked target to the frontend."); ASSERT_WITH_MESSAGE(m_targets.get(targetId), "Sending a message from an untracked target to the frontend.");
@@ -109,16 +132,23 @@ static Protocol::Target::TargetInfo::Type targetTypeToProtocolType(InspectorTarg @@ -109,16 +132,21 @@ static Protocol::Target::TargetInfo::Type targetTypeToProtocolType(InspectorTarg
return Protocol::Target::TargetInfo::Type::Page; return Protocol::Target::TargetInfo::Type::Page;
} }
@ -268,12 +267,10 @@ index 8fcb5a1e55750d325a84824d86c49cfe6fb04268..b0e22f247818f981e9dbd0981c09d468
result->setIsPaused(true); result->setIsPaused(true);
+ if (!browserContextID.isEmpty()) + if (!browserContextID.isEmpty())
+ result->setBrowserContextId(browserContextID); + result->setBrowserContextId(browserContextID);
+ if (!target.openerID().isEmpty())
+ result->setOpenerId(target.openerID());
return result; return result;
} }
@@ -134,7 +164,7 @@ void InspectorTargetAgent::targetCreated(InspectorTarget& target) @@ -134,7 +162,7 @@ void InspectorTargetAgent::targetCreated(InspectorTarget& target)
target.pause(); target.pause();
target.connect(connectionType()); target.connect(connectionType());
@ -282,7 +279,7 @@ index 8fcb5a1e55750d325a84824d86c49cfe6fb04268..b0e22f247818f981e9dbd0981c09d468
} }
void InspectorTargetAgent::targetDestroyed(InspectorTarget& target) void InspectorTargetAgent::targetDestroyed(InspectorTarget& target)
@@ -144,7 +174,17 @@ void InspectorTargetAgent::targetDestroyed(InspectorTarget& target) @@ -144,7 +172,17 @@ void InspectorTargetAgent::targetDestroyed(InspectorTarget& target)
if (!m_isConnected) if (!m_isConnected)
return; return;
@ -301,7 +298,7 @@ index 8fcb5a1e55750d325a84824d86c49cfe6fb04268..b0e22f247818f981e9dbd0981c09d468
} }
void InspectorTargetAgent::didCommitProvisionalTarget(const String& oldTargetID, const String& committedTargetID) void InspectorTargetAgent::didCommitProvisionalTarget(const String& oldTargetID, const String& committedTargetID)
@@ -159,6 +199,18 @@ void InspectorTargetAgent::didCommitProvisionalTarget(const String& oldTargetID, @@ -159,6 +197,18 @@ void InspectorTargetAgent::didCommitProvisionalTarget(const String& oldTargetID,
m_frontendDispatcher->didCommitProvisionalTarget(oldTargetID, committedTargetID); m_frontendDispatcher->didCommitProvisionalTarget(oldTargetID, committedTargetID);
} }
@ -320,7 +317,7 @@ index 8fcb5a1e55750d325a84824d86c49cfe6fb04268..b0e22f247818f981e9dbd0981c09d468
FrontendChannel::ConnectionType InspectorTargetAgent::connectionType() const FrontendChannel::ConnectionType InspectorTargetAgent::connectionType() const
{ {
return m_router.hasLocalFrontend() ? Inspector::FrontendChannel::ConnectionType::Local : Inspector::FrontendChannel::ConnectionType::Remote; return m_router.hasLocalFrontend() ? Inspector::FrontendChannel::ConnectionType::Local : Inspector::FrontendChannel::ConnectionType::Remote;
@@ -168,7 +220,7 @@ void InspectorTargetAgent::connectToTargets() @@ -168,7 +218,7 @@ void InspectorTargetAgent::connectToTargets()
{ {
for (InspectorTarget* target : m_targets.values()) { for (InspectorTarget* target : m_targets.values()) {
target->connect(connectionType()); target->connect(connectionType());
@ -374,10 +371,10 @@ index 1eb7abb2fa21d7a8ec0833160f53e5c523ec4317..b10dd23de692fd5f447a9b845b5695ac
bool m_shouldPauseOnStart { false }; bool m_shouldPauseOnStart { false };
diff --git a/Source/JavaScriptCore/inspector/protocol/Browser.json b/Source/JavaScriptCore/inspector/protocol/Browser.json diff --git a/Source/JavaScriptCore/inspector/protocol/Browser.json b/Source/JavaScriptCore/inspector/protocol/Browser.json
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..a0b5806920078bbaa0bd5efb6f589bf1da461b4a index 0000000000000000000000000000000000000000..f58236088a813e1e4afc2d7a315c20676efeeb4b
--- /dev/null --- /dev/null
+++ b/Source/JavaScriptCore/inspector/protocol/Browser.json +++ b/Source/JavaScriptCore/inspector/protocol/Browser.json
@@ -0,0 +1,177 @@ @@ -0,0 +1,178 @@
+{ +{
+ "domain": "Browser", + "domain": "Browser",
+ "availability": ["web"], + "availability": ["web"],
@ -398,7 +395,8 @@ index 0000000000000000000000000000000000000000..a0b5806920078bbaa0bd5efb6f589bf1
+ "description": "Tab info object", + "description": "Tab info object",
+ "properties": [ + "properties": [
+ { "name": "pageProxyId", "$ref": "PageProxyID" }, + { "name": "pageProxyId", "$ref": "PageProxyID" },
+ { "name": "browserContextId", "$ref": "ContextID", "description": "Unique identifier of the context." } + { "name": "browserContextId", "$ref": "ContextID", "description": "Unique identifier of the context." },
+ { "name": "openerId", "$ref": "PageProxyID", "optional": true, "description": "Unique identifier of the opening page. Only set for pages created by window.open()." }
+ ] + ]
+ }, + },
+ { + {
@ -476,7 +474,7 @@ index 0000000000000000000000000000000000000000..a0b5806920078bbaa0bd5efb6f589bf1
+ { "name": "browserContextId", "$ref": "ContextID", "optional": true, "description": "JSON Inspector Protocol message (command) to be dispatched on the backend." } + { "name": "browserContextId", "$ref": "ContextID", "optional": true, "description": "JSON Inspector Protocol message (command) to be dispatched on the backend." }
+ ], + ],
+ "returns": [ + "returns": [
+ { "name": "targetId", "type": "string", "description": "Unique identifier for the page target." } + { "name": "pageProxyId", "$ref": "PageProxyID", "description": "Unique identifier of the page proxy." }
+ ] + ]
+ }, + },
+ { + {
@ -1142,10 +1140,10 @@ index a8fc5332ac92424b00a3dec62152fd3c5f28544e..f68b0722868fbfb449354dead34def54
] ]
} }
diff --git a/Source/JavaScriptCore/inspector/protocol/Target.json b/Source/JavaScriptCore/inspector/protocol/Target.json diff --git a/Source/JavaScriptCore/inspector/protocol/Target.json b/Source/JavaScriptCore/inspector/protocol/Target.json
index 52920cded24a9c6b0ef6fb4e518664955db4f9fa..a1bf5f930ac3d58a97397a7a6b918919b4d55c60 100644 index 52920cded24a9c6b0ef6fb4e518664955db4f9fa..a2dd59e44b43b5e44eaa4530a143a408e6411e0a 100644
--- a/Source/JavaScriptCore/inspector/protocol/Target.json --- a/Source/JavaScriptCore/inspector/protocol/Target.json
+++ b/Source/JavaScriptCore/inspector/protocol/Target.json +++ b/Source/JavaScriptCore/inspector/protocol/Target.json
@@ -10,8 +10,12 @@ @@ -10,8 +10,11 @@
"properties": [ "properties": [
{ "name": "targetId", "type": "string", "description": "Unique identifier for the target." }, { "name": "targetId", "type": "string", "description": "Unique identifier for the target." },
{ "name": "type", "type": "string", "enum": ["page", "service-worker", "worker"] }, { "name": "type", "type": "string", "enum": ["page", "service-worker", "worker"] },
@ -1153,14 +1151,13 @@ index 52920cded24a9c6b0ef6fb4e518664955db4f9fa..a1bf5f930ac3d58a97397a7a6b918919
- { "name": "isPaused", "type": "boolean", "optional": true, "description": "Whether the target is paused on start and has to be explicitely resumed by inspector." } - { "name": "isPaused", "type": "boolean", "optional": true, "description": "Whether the target is paused on start and has to be explicitely resumed by inspector." }
+ { "name": "isProvisional", "type": "boolean", "optional": true, "description": "True value indicates that this is a provisional page target i.e. Such target may be created when current page starts cross-origin navigation. Eventually each provisional target is either committed and swaps with the current target or gets destroyed, e.g. in case of load request failure." }, + { "name": "isProvisional", "type": "boolean", "optional": true, "description": "True value indicates that this is a provisional page target i.e. Such target may be created when current page starts cross-origin navigation. Eventually each provisional target is either committed and swaps with the current target or gets destroyed, e.g. in case of load request failure." },
+ { "name": "oldTargetId", "type": "string", "optional": true, "description": "Unique identifier of the target which is going to be replaced if this target is committed. Only set for provisional targets." }, + { "name": "oldTargetId", "type": "string", "optional": true, "description": "Unique identifier of the target which is going to be replaced if this target is committed. Only set for provisional targets." },
+ { "name": "openerId", "type": "string", "optional": true, "description": "Unique identifier of the opening target. Only set for pages created by window.open()." },
+ { "name": "isPaused", "type": "boolean", "optional": true, "description": "Whether the target is paused on start and has to be explicitely resumed by inspector." }, + { "name": "isPaused", "type": "boolean", "optional": true, "description": "Whether the target is paused on start and has to be explicitely resumed by inspector." },
+ { "name": "url", "type": "string" }, + { "name": "url", "type": "string" },
+ { "name": "browserContextId", "$ref": "Browser.ContextID", "optional": true } + { "name": "browserContextId", "$ref": "Browser.ContextID", "optional": true }
] ]
} }
], ],
@@ -37,6 +41,21 @@ @@ -37,6 +40,21 @@
{ "name": "targetId", "type": "string" }, { "name": "targetId", "type": "string" },
{ "name": "message", "type": "string", "description": "JSON Inspector Protocol message (command) to be dispatched on the backend." } { "name": "message", "type": "string", "description": "JSON Inspector Protocol message (command) to be dispatched on the backend." }
] ]
@ -1182,7 +1179,7 @@ index 52920cded24a9c6b0ef6fb4e518664955db4f9fa..a1bf5f930ac3d58a97397a7a6b918919
} }
], ],
"events": [ "events": [
@@ -49,7 +68,8 @@ @@ -49,7 +67,8 @@
{ {
"name": "targetDestroyed", "name": "targetDestroyed",
"parameters": [ "parameters": [
@ -5164,7 +5161,7 @@ index 15a4c1ff1c4aeee7d807856db0b3a74002e421dd..92212f1b5befe0f3b8c5222e81221a8a
#include <wpe/WebKitContextMenuItem.h> #include <wpe/WebKitContextMenuItem.h>
diff --git a/Source/WebKit/UIProcess/BrowserInspectorController.cpp b/Source/WebKit/UIProcess/BrowserInspectorController.cpp diff --git a/Source/WebKit/UIProcess/BrowserInspectorController.cpp b/Source/WebKit/UIProcess/BrowserInspectorController.cpp
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..59252db1b9ac816a7e19cf4568e3f7863fef683d index 0000000000000000000000000000000000000000..feab2598082445b3e9b46b339f0dbf39913bcf61
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/BrowserInspectorController.cpp +++ b/Source/WebKit/UIProcess/BrowserInspectorController.cpp
@@ -0,0 +1,230 @@ @@ -0,0 +1,230 @@
@ -5385,7 +5382,7 @@ index 0000000000000000000000000000000000000000..59252db1b9ac816a7e19cf4568e3f786
+ +
+ String pageProxyID = InspectorBrowserAgent::toPageProxyIDProtocolString(page); + String pageProxyID = InspectorBrowserAgent::toPageProxyIDProtocolString(page);
+ auto it = m_pageProxyChannels.find(pageProxyID); + auto it = m_pageProxyChannels.find(pageProxyID);
+ ASSERT(ti != m_pageProxyChannels.end()); + ASSERT(it != m_pageProxyChannels.end());
+ it->value->disconnect(); + it->value->disconnect();
+ m_pageProxyChannels.remove(it); + m_pageProxyChannels.remove(it);
+} +}
@ -5986,10 +5983,10 @@ index d7695088e7cfc4f638f157338754f9f157489749..fd0e1db93b4b6fc094ff47565ca19e83
std::unique_ptr<BackingStore> m_backingStore; std::unique_ptr<BackingStore> m_backingStore;
diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..cafedaffaccb0dcc293681dcfa90f50203d35119 index 0000000000000000000000000000000000000000..7d060ae3774d2d07a9352226c603413bc2d7ade4
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp +++ b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp
@@ -0,0 +1,383 @@ @@ -0,0 +1,388 @@
+/* +/*
+ * Copyright (C) 2019 Microsoft Corporation. + * Copyright (C) 2019 Microsoft Corporation.
+ * + *
@ -6020,6 +6017,7 @@ index 0000000000000000000000000000000000000000..cafedaffaccb0dcc293681dcfa90f502
+ +
+#if ENABLE(REMOTE_INSPECTOR) +#if ENABLE(REMOTE_INSPECTOR)
+ +
+#include "APIPageConfiguration.h"
+#include "InspectorBrowserAgentClient.h" +#include "InspectorBrowserAgentClient.h"
+#include "InspectorTargetProxy.h" +#include "InspectorTargetProxy.h"
+#include "NetworkProcessMessages.h" +#include "NetworkProcessMessages.h"
@ -6072,10 +6070,14 @@ index 0000000000000000000000000000000000000000..cafedaffaccb0dcc293681dcfa90f502
+} +}
+ +
+Ref<Inspector::Protocol::Browser::PageProxyInfo> buildPageProxyInfo(const WebPageProxy& page) { +Ref<Inspector::Protocol::Browser::PageProxyInfo> buildPageProxyInfo(const WebPageProxy& page) {
+ return Inspector::Protocol::Browser::PageProxyInfo::create() + auto result = Inspector::Protocol::Browser::PageProxyInfo::create()
+ .setPageProxyId(InspectorBrowserAgent::toPageProxyIDProtocolString(page)) + .setPageProxyId(InspectorBrowserAgent::toPageProxyIDProtocolString(page))
+ .setBrowserContextId(InspectorBrowserAgent::toBrowserContextIDProtocolString(page.sessionID())) + .setBrowserContextId(InspectorBrowserAgent::toBrowserContextIDProtocolString(page.sessionID()))
+ .release(); + .release();
+ auto* opener = page.configuration().relatedPage();
+ if (opener)
+ result->setOpenerId(InspectorBrowserAgent::toPageProxyIDProtocolString(*opener));
+ return result;
+} +}
+ +
+} // namespace +} // namespace
@ -6153,17 +6155,17 @@ index 0000000000000000000000000000000000000000..cafedaffaccb0dcc293681dcfa90f502
+ m_browserContexts.remove(browserContextID); + m_browserContexts.remove(browserContextID);
+} +}
+ +
+void InspectorBrowserAgent::createPage(ErrorString& errorString, const String* browserContextID, String* targetID) +void InspectorBrowserAgent::createPage(ErrorString& errorString, const String* browserContextID, String* pageProxyID)
+{ +{
+ BrowserContext browserContext = lookupBrowserContext(errorString, browserContextID); + BrowserContext browserContext = lookupBrowserContext(errorString, browserContextID);
+ if (!errorString.isEmpty()) + if (!errorString.isEmpty())
+ return; + return;
+ PAL::SessionID sessionID = browserContext.dataStore->sessionID(); + PAL::SessionID sessionID = browserContext.dataStore->sessionID();
+ RefPtr<WebPageProxy> page = m_client->createPage(errorString, sessionID); + RefPtr<WebPageProxy> page = m_client->createPage(errorString, sessionID);
+ if (page == nullptr) + if (!page)
+ return; + return;
+ page->setPermissionsForAutomation(m_permissions.get(browserContextID ? *browserContextID : "")); + page->setPermissionsForAutomation(m_permissions.get(browserContextID ? *browserContextID : ""));
+ *targetID = WebPageInspectorTarget::toTargetID(page->webPageID()); + *pageProxyID = toPageProxyIDProtocolString(*page);
+} +}
+ +
+void InspectorBrowserAgent::setIgnoreCertificateErrors(Inspector::ErrorString& errorString, const String* browserContextID, bool ignore) +void InspectorBrowserAgent::setIgnoreCertificateErrors(Inspector::ErrorString& errorString, const String* browserContextID, bool ignore)
@ -6375,7 +6377,7 @@ index 0000000000000000000000000000000000000000..cafedaffaccb0dcc293681dcfa90f502
+#endif // ENABLE(REMOTE_INSPECTOR) +#endif // ENABLE(REMOTE_INSPECTOR)
diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgent.h b/Source/WebKit/UIProcess/InspectorBrowserAgent.h diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgent.h b/Source/WebKit/UIProcess/InspectorBrowserAgent.h
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..dee9b991757106fc33fd466d70f97ac922c60f42 index 0000000000000000000000000000000000000000..f3ce61c55f58a638e435bf7da5a541a7c58acef8
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/InspectorBrowserAgent.h +++ b/Source/WebKit/UIProcess/InspectorBrowserAgent.h
@@ -0,0 +1,99 @@ @@ -0,0 +1,99 @@
@ -6450,7 +6452,7 @@ index 0000000000000000000000000000000000000000..dee9b991757106fc33fd466d70f97ac9
+ void close(Inspector::ErrorString&) override; + void close(Inspector::ErrorString&) override;
+ void createContext(Inspector::ErrorString&, String* browserContextID) override; + void createContext(Inspector::ErrorString&, String* browserContextID) override;
+ void deleteContext(Inspector::ErrorString&, const String& browserContextID) override; + void deleteContext(Inspector::ErrorString&, const String& browserContextID) override;
+ void createPage(Inspector::ErrorString&, const String* browserContextID, String* targetId) override; + void createPage(Inspector::ErrorString&, const String* browserContextID, String* pageProxyID) override;
+ void setIgnoreCertificateErrors(Inspector::ErrorString&, const String* browserContextID, bool ignore) override; + void setIgnoreCertificateErrors(Inspector::ErrorString&, const String* browserContextID, bool ignore) override;
+ +
+ void getAllCookies(const String* browserContextID, Ref<GetAllCookiesCallback>&&) override; + void getAllCookies(const String* browserContextID, Ref<GetAllCookiesCallback>&&) override;
@ -6708,17 +6710,10 @@ index 0000000000000000000000000000000000000000..227655daf8eba6c5852189fd929979d9
+ +
+} // namespace WebKit +} // namespace WebKit
diff --git a/Source/WebKit/UIProcess/InspectorTargetProxy.cpp b/Source/WebKit/UIProcess/InspectorTargetProxy.cpp diff --git a/Source/WebKit/UIProcess/InspectorTargetProxy.cpp b/Source/WebKit/UIProcess/InspectorTargetProxy.cpp
index 6928ca2fbfb6939062e3cd14bb7ba6f2fdc87f5f..a80eef613f485a84e523b4365ebab298104fe512 100644 index 6928ca2fbfb6939062e3cd14bb7ba6f2fdc87f5f..b27bcc5026bdf788222ef38b7525fc247997e8b4 100644
--- a/Source/WebKit/UIProcess/InspectorTargetProxy.cpp --- a/Source/WebKit/UIProcess/InspectorTargetProxy.cpp
+++ b/Source/WebKit/UIProcess/InspectorTargetProxy.cpp +++ b/Source/WebKit/UIProcess/InspectorTargetProxy.cpp
@@ -26,12 +26,15 @@ @@ -32,6 +32,8 @@
#include "config.h"
#include "InspectorTargetProxy.h"
+#include "APIPageConfiguration.h"
#include "ProvisionalPageProxy.h"
#include "WebFrameProxy.h"
#include "WebPageInspectorTarget.h"
#include "WebPageMessages.h" #include "WebPageMessages.h"
#include "WebPageProxy.h" #include "WebPageProxy.h"
#include "WebProcessProxy.h" #include "WebProcessProxy.h"
@ -6727,7 +6722,7 @@ index 6928ca2fbfb6939062e3cd14bb7ba6f2fdc87f5f..a80eef613f485a84e523b4365ebab298
namespace WebKit { namespace WebKit {
@@ -39,23 +42,29 @@ using namespace Inspector; @@ -39,23 +41,29 @@ using namespace Inspector;
std::unique_ptr<InspectorTargetProxy> InspectorTargetProxy::create(WebPageProxy& page, const String& targetId, Inspector::InspectorTargetType type) std::unique_ptr<InspectorTargetProxy> InspectorTargetProxy::create(WebPageProxy& page, const String& targetId, Inspector::InspectorTargetType type)
{ {
@ -6762,7 +6757,7 @@ index 6928ca2fbfb6939062e3cd14bb7ba6f2fdc87f5f..a80eef613f485a84e523b4365ebab298
void InspectorTargetProxy::connect(Inspector::FrontendChannel::ConnectionType connectionType) void InspectorTargetProxy::connect(Inspector::FrontendChannel::ConnectionType connectionType)
{ {
if (m_provisionalPage) { if (m_provisionalPage) {
@@ -102,4 +111,19 @@ bool InspectorTargetProxy::isProvisional() const @@ -102,4 +110,11 @@ bool InspectorTargetProxy::isProvisional() const
return !!m_provisionalPage; return !!m_provisionalPage;
} }
@ -6772,21 +6767,13 @@ index 6928ca2fbfb6939062e3cd14bb7ba6f2fdc87f5f..a80eef613f485a84e523b4365ebab298
+ return String(); + return String();
+ return WebPageInspectorTarget::toTargetID(m_page.webPageID()); + return WebPageInspectorTarget::toTargetID(m_page.webPageID());
+} +}
+
+String InspectorTargetProxy::openerID() const
+{
+ auto* opener = m_page.configuration().relatedPage();
+ if (!opener)
+ return String();
+ return WebPageInspectorTarget::toTargetID(opener->webPageID());
+}
+ +
} // namespace WebKit } // namespace WebKit
diff --git a/Source/WebKit/UIProcess/InspectorTargetProxy.h b/Source/WebKit/UIProcess/InspectorTargetProxy.h diff --git a/Source/WebKit/UIProcess/InspectorTargetProxy.h b/Source/WebKit/UIProcess/InspectorTargetProxy.h
index a2239cec8e18850f35f7f88a9c4ebadc62bf4023..3985edf2081566b3dee85273b326e0fa81b16863 100644 index a2239cec8e18850f35f7f88a9c4ebadc62bf4023..7a9df22fd418553a64de267d58b165abfb09dc8a 100644
--- a/Source/WebKit/UIProcess/InspectorTargetProxy.h --- a/Source/WebKit/UIProcess/InspectorTargetProxy.h
+++ b/Source/WebKit/UIProcess/InspectorTargetProxy.h +++ b/Source/WebKit/UIProcess/InspectorTargetProxy.h
@@ -37,30 +37,35 @@ class WebPageProxy; @@ -37,30 +37,34 @@ class WebPageProxy;
// NOTE: This UIProcess side InspectorTarget doesn't care about the frontend channel, since // NOTE: This UIProcess side InspectorTarget doesn't care about the frontend channel, since
// any target -> frontend messages will be routed to the WebPageProxy with a targetId. // any target -> frontend messages will be routed to the WebPageProxy with a targetId.
@ -6808,7 +6795,6 @@ index a2239cec8e18850f35f7f88a9c4ebadc62bf4023..3985edf2081566b3dee85273b326e0fa
void didCommitProvisionalTarget(); void didCommitProvisionalTarget();
bool isProvisional() const override; bool isProvisional() const override;
+ String oldTargetID() const override; + String oldTargetID() const override;
+ String openerID() const override;
void connect(Inspector::FrontendChannel::ConnectionType) override; void connect(Inspector::FrontendChannel::ConnectionType) override;
void disconnect() override; void disconnect() override;