| 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 |