Skip to content

Commit

Permalink
ShadowRealm: Implement ShadowRealm global object in Blink (5/N)
Browse files Browse the repository at this point in the history
Supports ShadowRealmGlobalScope in ToExecutionContext.

Bug: 1281880
Change-Id: Ic1db96241db8fd46ee15fd3d63ffa11d3acf8bea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4047422
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Yuki Shiino <yukishiino@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1075727}
  • Loading branch information
yuki3 authored and Chromium LUCI CQ committed Nov 25, 2022
1 parent 1bdac80 commit b18ef66
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.cc
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@
#include "third_party/blink/renderer/bindings/core/v8/v8_object_builder.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_script_runner.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_window.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_worker_global_scope.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_worklet_global_scope.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_xpath_ns_resolver.h"
#include "third_party/blink/renderer/bindings/core/v8/window_proxy.h"
#include "third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.h"
Expand All @@ -55,6 +53,7 @@
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/inspector/inspector_trace_events.h"
#include "third_party/blink/renderer/core/loader/frame_loader.h"
#include "third_party/blink/renderer/core/shadow_realm/shadow_realm_global_scope.h"
#include "third_party/blink/renderer/core/typed_arrays/flexible_array_buffer_view.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h"
Expand Down Expand Up @@ -696,13 +695,15 @@ ExecutionContext* ToExecutionContext(v8::Local<v8::Context> context) {
if (global_proxy->InternalFieldCount() == 0)
return nullptr;

const WrapperTypeInfo* wrapper_type_info = ToWrapperTypeInfo(global_proxy);
if (wrapper_type_info->Equals(V8Window::GetWrapperTypeInfo()))
return V8Window::ToImpl(global_proxy)->GetExecutionContext();
if (wrapper_type_info->IsSubclass(V8WorkerGlobalScope::GetWrapperTypeInfo()))
return V8WorkerGlobalScope::ToImpl(global_proxy)->GetExecutionContext();
if (wrapper_type_info->IsSubclass(V8WorkletGlobalScope::GetWrapperTypeInfo()))
return V8WorkletGlobalScope::ToImpl(global_proxy)->GetExecutionContext();
ScriptWrappable::TypeDispatcher dispatcher(ToScriptWrappable(global_proxy));
if (auto* x = dispatcher.ToMostDerived<DOMWindow>())
return x->GetExecutionContext();
if (auto* x = dispatcher.DowncastTo<WorkerGlobalScope>())
return x->GetExecutionContext();
if (auto* x = dispatcher.DowncastTo<WorkletGlobalScope>())
return x->GetExecutionContext();
if (auto* x = dispatcher.ToMostDerived<ShadowRealmGlobalScope>())
return x->GetExecutionContext();

NOTREACHED();
return nullptr;
Expand Down

0 comments on commit b18ef66

Please sign in to comment.