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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 // willReleaseScriptContext callback, so all disposing should happen after | 75 // willReleaseScriptContext callback, so all disposing should happen after |
76 // it returns. | 76 // it returns. |
77 frame()->loader().client()->willReleaseScriptContext(context, | 77 frame()->loader().client()->willReleaseScriptContext(context, |
78 m_world->worldId()); | 78 m_world->worldId()); |
79 MainThreadDebugger::instance()->contextWillBeDestroyed(m_scriptState.get()); | 79 MainThreadDebugger::instance()->contextWillBeDestroyed(m_scriptState.get()); |
80 | 80 |
81 if (behavior == DetachGlobal) { | 81 if (behavior == DetachGlobal) { |
82 v8::Local<v8::Context> context = m_scriptState->context(); | 82 v8::Local<v8::Context> context = m_scriptState->context(); |
83 // Clean up state on the global proxy, which will be reused. | 83 // Clean up state on the global proxy, which will be reused. |
84 if (!m_globalProxy.isEmpty()) { | 84 if (!m_globalProxy.isEmpty()) { |
85 // TODO(yukishiino): This DCHECK failed on Canary (M57) and Dev (M56). | 85 CHECK(m_globalProxy == context->Global()); |
86 // We need to figure out why m_globalProxy != context->Global(). | 86 CHECK_EQ(toScriptWrappable(context->Global()), |
87 DCHECK(m_globalProxy == context->Global()); | 87 toScriptWrappable( |
88 DCHECK_EQ(toScriptWrappable(context->Global()), | 88 context->Global()->GetPrototype().As<v8::Object>())); |
89 toScriptWrappable( | |
90 context->Global()->GetPrototype().As<v8::Object>())); | |
91 m_globalProxy.get().SetWrapperClassId(0); | 89 m_globalProxy.get().SetWrapperClassId(0); |
92 } | 90 } |
93 V8DOMWrapper::clearNativeInfo(isolate(), context->Global()); | 91 V8DOMWrapper::clearNativeInfo(isolate(), context->Global()); |
94 m_scriptState->detachGlobalObject(); | 92 m_scriptState->detachGlobalObject(); |
95 | 93 |
96 #if DCHECK_IS_ON() | 94 #if DCHECK_IS_ON() |
97 didDetachGlobalObject(); | 95 didDetachGlobalObject(); |
98 #endif | 96 #endif |
99 } | 97 } |
100 | 98 |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 | 437 |
440 setSecurityToken(origin); | 438 setSecurityToken(origin); |
441 } | 439 } |
442 | 440 |
443 LocalWindowProxy::LocalWindowProxy(v8::Isolate* isolate, | 441 LocalWindowProxy::LocalWindowProxy(v8::Isolate* isolate, |
444 LocalFrame& frame, | 442 LocalFrame& frame, |
445 RefPtr<DOMWrapperWorld> world) | 443 RefPtr<DOMWrapperWorld> world) |
446 : WindowProxy(isolate, frame, std::move(world)) {} | 444 : WindowProxy(isolate, frame, std::move(world)) {} |
447 | 445 |
448 } // namespace blink | 446 } // namespace blink |
OLD | NEW |