Index: third_party/WebKit/Source/core/inspector/InspectorPageAgent.cpp |
diff --git a/third_party/WebKit/Source/core/inspector/InspectorPageAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorPageAgent.cpp |
index e43f9c7389194a7b613c350553ddde8e307738b5..c60904ee16a5843ceb5c50fa0ede958b43ba58d3 100644 |
--- a/third_party/WebKit/Source/core/inspector/InspectorPageAgent.cpp |
+++ b/third_party/WebKit/Source/core/inspector/InspectorPageAgent.cpp |
@@ -909,6 +909,29 @@ Response InspectorPageAgent::getLayoutMetrics( |
return Response::OK(); |
} |
+protocol::Response InspectorPageAgent::createIsolatedWorld( |
+ const String& frame_id, |
+ const String& world_name, |
+ Maybe<bool> grant_universal_access) { |
+ LocalFrame* frame = |
+ IdentifiersFactory::FrameById(inspected_frames_, frame_id); |
+ if (!frame) |
+ return Response::Error("No frame for given id found"); |
+ |
+ int world_id = |
+ frame->GetScriptController().CreateNewDevToolsIsolatedWorld(world_name); |
+ if (world_id == DOMWrapperWorld::kInvalidWorldId) |
+ return Response::Error("Could not create isolated world"); |
+ |
+ if (grant_universal_access.fromMaybe(false)) { |
+ RefPtr<SecurityOrigin> security_origin = |
+ frame->GetSecurityContext()->GetSecurityOrigin()->IsolatedCopy(); |
+ security_origin->GrantUniversalAccess(); |
+ DOMWrapperWorld::SetIsolatedWorldSecurityOrigin(world_id, security_origin); |
+ } |
+ return Response::OK(); |
+} |
+ |
DEFINE_TRACE(InspectorPageAgent) { |
visitor->Trace(inspected_frames_); |
visitor->Trace(inspector_resource_content_loader_); |