| 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(); |
| 295 const WrapperTypeInfo* wrapperTypeInfo = window->wrapperTypeInfo(); | 295 ScriptWrappable* scriptWrappable = window->toScriptWrappable(); |
| 296 const WrapperTypeInfo* wrapperTypeInfo = scriptWrappable->wrapperTypeInfo(); |
| 296 v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(m_iso
late, m_scriptState->perContextData()->constructorForType(wrapperTypeInfo)); | 297 v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(m_iso
late, m_scriptState->perContextData()->constructorForType(wrapperTypeInfo)); |
| 297 if (windowWrapper.IsEmpty()) | 298 if (windowWrapper.IsEmpty()) |
| 298 return false; | 299 return false; |
| 299 | 300 |
| 300 V8DOMWrapper::setNativeInfo(v8::Handle<v8::Object>::Cast(windowWrapper->GetP
rototype()), wrapperTypeInfo, window->toScriptWrappableBase()); | 301 V8DOMWrapper::setNativeInfo(v8::Handle<v8::Object>::Cast(windowWrapper->GetP
rototype()), wrapperTypeInfo, scriptWrappable->toScriptWrappableBase()); |
| 301 | 302 |
| 302 // Install the windowWrapper as the prototype of the innerGlobalObject. | 303 // Install the windowWrapper as the prototype of the innerGlobalObject. |
| 303 // The full structure of the global object is as follows: | 304 // The full structure of the global object is as follows: |
| 304 // | 305 // |
| 305 // outerGlobalObject (Empty object, remains after navigation) | 306 // outerGlobalObject (Empty object, remains after navigation) |
| 306 // -- has prototype --> innerGlobalObject (Holds global variables, changes
during navigation) | 307 // -- has prototype --> innerGlobalObject (Holds global variables, changes
during navigation) |
| 307 // -- has prototype --> LocalDOMWindow instance | 308 // -- has prototype --> LocalDOMWindow instance |
| 308 // -- has prototype --> Window.prototype | 309 // -- has prototype --> Window.prototype |
| 309 // -- has prototype --> Object.prototype | 310 // -- has prototype --> Object.prototype |
| 310 // | 311 // |
| 311 // Note: Much of this prototype structure is hidden from web content. The | 312 // Note: Much of this prototype structure is hidden from web content. The |
| 312 // outer, inner, and LocalDOMWindow instance all appear to be the same | 313 // outer, inner, and LocalDOMWindow instance all appear to be the same |
| 313 // JavaScript object. | 314 // JavaScript object. |
| 314 v8::Handle<v8::Object> innerGlobalObject = toInnerGlobalObject(m_scriptState
->context()); | 315 v8::Handle<v8::Object> innerGlobalObject = toInnerGlobalObject(m_scriptState
->context()); |
| 315 V8DOMWrapper::setNativeInfo(innerGlobalObject, wrapperTypeInfo, window->toSc
riptWrappableBase()); | 316 V8DOMWrapper::setNativeInfo(innerGlobalObject, wrapperTypeInfo, scriptWrappa
ble->toScriptWrappableBase()); |
| 316 innerGlobalObject->SetPrototype(windowWrapper); | 317 innerGlobalObject->SetPrototype(windowWrapper); |
| 317 V8DOMWrapper::associateObjectWithWrapperNonTemplate(window, wrapperTypeInfo,
windowWrapper, m_isolate); | 318 V8DOMWrapper::associateObjectWithWrapperNonTemplate(scriptWrappable, wrapper
TypeInfo, windowWrapper, m_isolate); |
| 318 wrapperTypeInfo->installConditionallyEnabledProperties(windowWrapper, m_isol
ate); | 319 wrapperTypeInfo->installConditionallyEnabledProperties(windowWrapper, m_isol
ate); |
| 319 return true; | 320 return true; |
| 320 } | 321 } |
| 321 | 322 |
| 322 void WindowProxy::updateDocumentWrapper(v8::Handle<v8::Object> wrapper) | 323 void WindowProxy::updateDocumentWrapper(v8::Handle<v8::Object> wrapper) |
| 323 { | 324 { |
| 324 ASSERT(m_world->isMainWorld()); | 325 ASSERT(m_world->isMainWorld()); |
| 325 m_document.set(m_isolate, wrapper); | 326 m_document.set(m_isolate, wrapper); |
| 326 } | 327 } |
| 327 | 328 |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 | 489 |
| 489 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) | 490 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) |
| 490 { | 491 { |
| 491 ASSERT(m_world->isMainWorld()); | 492 ASSERT(m_world->isMainWorld()); |
| 492 if (!isContextInitialized()) | 493 if (!isContextInitialized()) |
| 493 return; | 494 return; |
| 494 setSecurityToken(origin); | 495 setSecurityToken(origin); |
| 495 } | 496 } |
| 496 | 497 |
| 497 } // namespace blink | 498 } // namespace blink |
| OLD | NEW |