OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008, 2009, 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "platform/wtf/Assertions.h" | 42 #include "platform/wtf/Assertions.h" |
43 #include "v8/include/v8.h" | 43 #include "v8/include/v8.h" |
44 | 44 |
45 namespace blink { | 45 namespace blink { |
46 | 46 |
47 RemoteWindowProxy::RemoteWindowProxy(v8::Isolate* isolate, | 47 RemoteWindowProxy::RemoteWindowProxy(v8::Isolate* isolate, |
48 RemoteFrame& frame, | 48 RemoteFrame& frame, |
49 RefPtr<DOMWrapperWorld> world) | 49 RefPtr<DOMWrapperWorld> world) |
50 : WindowProxy(isolate, frame, std::move(world)) {} | 50 : WindowProxy(isolate, frame, std::move(world)) {} |
51 | 51 |
52 void RemoteWindowProxy::DisposeContext(GlobalDetachmentBehavior behavior) { | 52 void RemoteWindowProxy::DisposeContext(Lifecycle next_status) { |
| 53 DCHECK(next_status == Lifecycle::kGlobalObjectIsDetached || |
| 54 next_status == Lifecycle::kFrameIsDetached); |
| 55 |
53 if (lifecycle_ != Lifecycle::kContextIsInitialized) | 56 if (lifecycle_ != Lifecycle::kContextIsInitialized) |
54 return; | 57 return; |
55 | 58 |
56 if (behavior == kDetachGlobal && !global_proxy_.IsEmpty()) { | 59 if (next_status == Lifecycle::kGlobalObjectIsDetached && |
| 60 !global_proxy_.IsEmpty()) { |
57 global_proxy_.Get().SetWrapperClassId(0); | 61 global_proxy_.Get().SetWrapperClassId(0); |
58 V8DOMWrapper::ClearNativeInfo(GetIsolate(), | 62 V8DOMWrapper::ClearNativeInfo(GetIsolate(), |
59 global_proxy_.NewLocal(GetIsolate())); | 63 global_proxy_.NewLocal(GetIsolate())); |
60 #if DCHECK_IS_ON() | 64 #if DCHECK_IS_ON() |
61 DidDetachGlobalObject(); | 65 DidDetachGlobalObject(); |
62 #endif | 66 #endif |
63 } | 67 } |
64 | 68 |
65 DCHECK_EQ(lifecycle_, Lifecycle::kContextIsInitialized); | 69 DCHECK_EQ(lifecycle_, Lifecycle::kContextIsInitialized); |
66 lifecycle_ = behavior == kDetachGlobal ? Lifecycle::kGlobalObjectIsDetached | 70 lifecycle_ = next_status; |
67 : Lifecycle::kFrameIsDetached; | |
68 } | 71 } |
69 | 72 |
70 void RemoteWindowProxy::Initialize() { | 73 void RemoteWindowProxy::Initialize() { |
71 TRACE_EVENT1("v8", "RemoteWindowProxy::initialize", "isMainWindow", | 74 TRACE_EVENT1("v8", "RemoteWindowProxy::initialize", "isMainWindow", |
72 GetFrame()->IsMainFrame()); | 75 GetFrame()->IsMainFrame()); |
73 SCOPED_BLINK_UMA_HISTOGRAM_TIMER( | 76 SCOPED_BLINK_UMA_HISTOGRAM_TIMER( |
74 GetFrame()->IsMainFrame() | 77 GetFrame()->IsMainFrame() |
75 ? "Blink.Binding.InitializeMainRemoteWindowProxy" | 78 ? "Blink.Binding.InitializeMainRemoteWindowProxy" |
76 : "Blink.Binding.InitializeNonMainRemoteWindowProxy"); | 79 : "Blink.Binding.InitializeNonMainRemoteWindowProxy"); |
77 | 80 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 | 128 |
126 // The global object, aka window wrapper object. | 129 // The global object, aka window wrapper object. |
127 v8::Local<v8::Object> window_wrapper = | 130 v8::Local<v8::Object> window_wrapper = |
128 global_proxy->GetPrototype().As<v8::Object>(); | 131 global_proxy->GetPrototype().As<v8::Object>(); |
129 v8::Local<v8::Object> associated_wrapper = | 132 v8::Local<v8::Object> associated_wrapper = |
130 AssociateWithWrapper(window, wrapper_type_info, window_wrapper); | 133 AssociateWithWrapper(window, wrapper_type_info, window_wrapper); |
131 DCHECK(associated_wrapper == window_wrapper); | 134 DCHECK(associated_wrapper == window_wrapper); |
132 } | 135 } |
133 | 136 |
134 } // namespace blink | 137 } // namespace blink |
OLD | NEW |