Chromium Code Reviews| 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 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 284 blink::Platform::current()->histogramCustomCounts(histogramName, contextCrea tionDurationInMilliseconds, 0, 10000, 50); | 284 blink::Platform::current()->histogramCustomCounts(histogramName, contextCrea tionDurationInMilliseconds, 0, 10000, 50); |
| 285 } | 285 } |
| 286 | 286 |
| 287 static v8::Handle<v8::Object> toInnerGlobalObject(v8::Handle<v8::Context> contex t) | 287 static v8::Handle<v8::Object> toInnerGlobalObject(v8::Handle<v8::Context> contex t) |
| 288 { | 288 { |
| 289 return v8::Handle<v8::Object>::Cast(context->Global()->GetPrototype()); | 289 return v8::Handle<v8::Object>::Cast(context->Global()->GetPrototype()); |
| 290 } | 290 } |
| 291 | 291 |
| 292 bool WindowProxy::installDOMWindow() | 292 bool WindowProxy::installDOMWindow() |
| 293 { | 293 { |
| 294 LocalDOMWindow* window = m_frame->domWindow(); | 294 DOMWindow* window = m_frame->domWindow(); |
|
Yuki
2014/10/23 06:03:34
ScriptWrappable* scriptWrappable = m_frame->domWin
dcheng
2014/10/23 06:48:46
Yeah, makes sense to alias it. Done.
| |
| 295 const WrapperTypeInfo* wrapperTypeInfo = window->wrapperTypeInfo(); | 295 const WrapperTypeInfo* wrapperTypeInfo = window->toScriptWrappable()->wrappe rTypeInfo(); |
| 296 v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(m_iso late, m_scriptState->perContextData()->constructorForType(wrapperTypeInfo)); | 296 v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(m_iso late, m_scriptState->perContextData()->constructorForType(wrapperTypeInfo)); |
| 297 if (windowWrapper.IsEmpty()) | 297 if (windowWrapper.IsEmpty()) |
| 298 return false; | 298 return false; |
| 299 | 299 |
| 300 V8DOMWrapper::setNativeInfo(v8::Handle<v8::Object>::Cast(windowWrapper->GetP rototype()), wrapperTypeInfo, window->toScriptWrappableBase()); | 300 V8DOMWrapper::setNativeInfo(v8::Handle<v8::Object>::Cast(windowWrapper->GetP rototype()), wrapperTypeInfo, window->toScriptWrappable()->toScriptWrappableBase ()); |
| 301 | 301 |
| 302 // Install the windowWrapper as the prototype of the innerGlobalObject. | 302 // Install the windowWrapper as the prototype of the innerGlobalObject. |
| 303 // The full structure of the global object is as follows: | 303 // The full structure of the global object is as follows: |
| 304 // | 304 // |
| 305 // outerGlobalObject (Empty object, remains after navigation) | 305 // outerGlobalObject (Empty object, remains after navigation) |
| 306 // -- has prototype --> innerGlobalObject (Holds global variables, changes during navigation) | 306 // -- has prototype --> innerGlobalObject (Holds global variables, changes during navigation) |
| 307 // -- has prototype --> LocalDOMWindow instance | 307 // -- has prototype --> LocalDOMWindow instance |
| 308 // -- has prototype --> Window.prototype | 308 // -- has prototype --> Window.prototype |
| 309 // -- has prototype --> Object.prototype | 309 // -- has prototype --> Object.prototype |
| 310 // | 310 // |
| 311 // Note: Much of this prototype structure is hidden from web content. The | 311 // Note: Much of this prototype structure is hidden from web content. The |
| 312 // outer, inner, and LocalDOMWindow instance all appear to be the same | 312 // outer, inner, and LocalDOMWindow instance all appear to be the same |
| 313 // JavaScript object. | 313 // JavaScript object. |
| 314 v8::Handle<v8::Object> innerGlobalObject = toInnerGlobalObject(m_scriptState ->context()); | 314 v8::Handle<v8::Object> innerGlobalObject = toInnerGlobalObject(m_scriptState ->context()); |
| 315 V8DOMWrapper::setNativeInfo(innerGlobalObject, wrapperTypeInfo, window->toSc riptWrappableBase()); | 315 V8DOMWrapper::setNativeInfo(innerGlobalObject, wrapperTypeInfo, window->toSc riptWrappable()->toScriptWrappableBase()); |
| 316 innerGlobalObject->SetPrototype(windowWrapper); | 316 innerGlobalObject->SetPrototype(windowWrapper); |
| 317 V8DOMWrapper::associateObjectWithWrapperNonTemplate(window, wrapperTypeInfo, windowWrapper, m_isolate); | 317 V8DOMWrapper::associateObjectWithWrapperNonTemplate(window->toScriptWrappabl e(), wrapperTypeInfo, windowWrapper, m_isolate); |
| 318 wrapperTypeInfo->installConditionallyEnabledProperties(windowWrapper, m_isol ate); | 318 wrapperTypeInfo->installConditionallyEnabledProperties(windowWrapper, m_isol ate); |
| 319 return true; | 319 return true; |
| 320 } | 320 } |
| 321 | 321 |
| 322 void WindowProxy::updateDocumentWrapper(v8::Handle<v8::Object> wrapper) | 322 void WindowProxy::updateDocumentWrapper(v8::Handle<v8::Object> wrapper) |
| 323 { | 323 { |
| 324 ASSERT(m_world->isMainWorld()); | 324 ASSERT(m_world->isMainWorld()); |
| 325 m_document.set(m_isolate, wrapper); | 325 m_document.set(m_isolate, wrapper); |
| 326 } | 326 } |
| 327 | 327 |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 488 | 488 |
| 489 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) | 489 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) |
| 490 { | 490 { |
| 491 ASSERT(m_world->isMainWorld()); | 491 ASSERT(m_world->isMainWorld()); |
| 492 if (!isContextInitialized()) | 492 if (!isContextInitialized()) |
| 493 return; | 493 return; |
| 494 setSecurityToken(origin); | 494 setSecurityToken(origin); |
| 495 } | 495 } |
| 496 | 496 |
| 497 } // namespace blink | 497 } // namespace blink |
| OLD | NEW |