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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 #include "bindings/v8/V8ObjectConstructor.h" | 45 #include "bindings/v8/V8ObjectConstructor.h" |
46 #include "bindings/v8/V8PerContextData.h" | 46 #include "bindings/v8/V8PerContextData.h" |
47 #include "core/html/HTMLCollection.h" | 47 #include "core/html/HTMLCollection.h" |
48 #include "core/html/HTMLIFrameElement.h" | 48 #include "core/html/HTMLIFrameElement.h" |
49 #include "core/inspector/InspectorInstrumentation.h" | 49 #include "core/inspector/InspectorInstrumentation.h" |
50 #include "core/loader/DocumentLoader.h" | 50 #include "core/loader/DocumentLoader.h" |
51 #include "core/loader/FrameLoader.h" | 51 #include "core/loader/FrameLoader.h" |
52 #include "core/loader/FrameLoaderClient.h" | 52 #include "core/loader/FrameLoaderClient.h" |
53 #include "core/frame/LocalFrame.h" | 53 #include "core/frame/LocalFrame.h" |
54 #include "core/frame/csp/ContentSecurityPolicy.h" | 54 #include "core/frame/csp/ContentSecurityPolicy.h" |
| 55 #include "heap/Handle.h" |
55 #include "platform/TraceEvent.h" | 56 #include "platform/TraceEvent.h" |
56 #include "platform/weborigin/SecurityOrigin.h" | 57 #include "platform/weborigin/SecurityOrigin.h" |
57 #include "public/platform/Platform.h" | 58 #include "public/platform/Platform.h" |
58 #include "wtf/Assertions.h" | 59 #include "wtf/Assertions.h" |
59 #include "wtf/OwnPtr.h" | 60 #include "wtf/OwnPtr.h" |
60 #include "wtf/StringExtras.h" | 61 #include "wtf/StringExtras.h" |
61 #include "wtf/text/CString.h" | 62 #include "wtf/text/CString.h" |
62 #include <algorithm> | 63 #include <algorithm> |
63 #include <utility> | 64 #include <utility> |
64 #include <v8-debug.h> | 65 #include <v8-debug.h> |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 | 297 |
297 bool V8WindowShell::installDOMWindow() | 298 bool V8WindowShell::installDOMWindow() |
298 { | 299 { |
299 DOMWindow* window = m_frame->domWindow(); | 300 DOMWindow* window = m_frame->domWindow(); |
300 v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(V8Per
ContextData::from(m_perContextData->context())->constructorForType(&V8Window::wr
apperTypeInfo)); | 301 v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(V8Per
ContextData::from(m_perContextData->context())->constructorForType(&V8Window::wr
apperTypeInfo)); |
301 if (windowWrapper.IsEmpty()) | 302 if (windowWrapper.IsEmpty()) |
302 return false; | 303 return false; |
303 | 304 |
304 V8Window::installPerContextEnabledProperties(windowWrapper, window, m_isolat
e); | 305 V8Window::installPerContextEnabledProperties(windowWrapper, window, m_isolat
e); |
305 | 306 |
306 V8DOMWrapper::setNativeInfo(v8::Handle<v8::Object>::Cast(windowWrapper->GetP
rototype()), &V8Window::wrapperTypeInfo, window); | 307 V8DOMWrapper::setNativeInfoGarbageCollected(v8::Handle<v8::Object>::Cast(win
dowWrapper->GetPrototype()), &V8Window::wrapperTypeInfo, window); |
307 | 308 |
308 // Install the windowWrapper as the prototype of the innerGlobalObject. | 309 // Install the windowWrapper as the prototype of the innerGlobalObject. |
309 // The full structure of the global object is as follows: | 310 // The full structure of the global object is as follows: |
310 // | 311 // |
311 // outerGlobalObject (Empty object, remains after navigation) | 312 // outerGlobalObject (Empty object, remains after navigation) |
312 // -- has prototype --> innerGlobalObject (Holds global variables, changes
during navigation) | 313 // -- has prototype --> innerGlobalObject (Holds global variables, changes
during navigation) |
313 // -- has prototype --> DOMWindow instance | 314 // -- has prototype --> DOMWindow instance |
314 // -- has prototype --> Window.prototype | 315 // -- has prototype --> Window.prototype |
315 // -- has prototype --> Object.prototype | 316 // -- has prototype --> Object.prototype |
316 // | 317 // |
317 // Note: Much of this prototype structure is hidden from web content. The | 318 // Note: Much of this prototype structure is hidden from web content. The |
318 // outer, inner, and DOMWindow instance all appear to be the same | 319 // outer, inner, and DOMWindow instance all appear to be the same |
319 // JavaScript object. | 320 // JavaScript object. |
320 // | 321 // |
321 v8::Handle<v8::Object> innerGlobalObject = toInnerGlobalObject(m_perContextD
ata->context()); | 322 v8::Handle<v8::Object> innerGlobalObject = toInnerGlobalObject(m_perContextD
ata->context()); |
322 V8DOMWrapper::setNativeInfo(innerGlobalObject, &V8Window::wrapperTypeInfo, w
indow); | 323 V8DOMWrapper::setNativeInfoGarbageCollected(innerGlobalObject, &V8Window::wr
apperTypeInfo, window); |
323 innerGlobalObject->SetPrototype(windowWrapper); | 324 innerGlobalObject->SetPrototype(windowWrapper); |
324 V8DOMWrapper::associateObjectWithWrapper<V8Window>(PassRefPtr<DOMWindow>(win
dow), &V8Window::wrapperTypeInfo, windowWrapper, m_isolate, WrapperConfiguration
::Dependent); | 325 V8DOMWrapper::associateObjectWithWrapper<V8Window>(PassRefPtrWillBeRawPtr<DO
MWindow>(window), &V8Window::wrapperTypeInfo, windowWrapper, m_isolate, WrapperC
onfiguration::Dependent); |
325 return true; | 326 return true; |
326 } | 327 } |
327 | 328 |
328 void V8WindowShell::updateDocumentWrapper(v8::Handle<v8::Object> wrapper) | 329 void V8WindowShell::updateDocumentWrapper(v8::Handle<v8::Object> wrapper) |
329 { | 330 { |
330 ASSERT(m_world->isMainWorld()); | 331 ASSERT(m_world->isMainWorld()); |
331 m_document.set(m_isolate, wrapper); | 332 m_document.set(m_isolate, wrapper); |
332 } | 333 } |
333 | 334 |
334 void V8WindowShell::updateDocumentProperty() | 335 void V8WindowShell::updateDocumentProperty() |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 void V8WindowShell::updateSecurityOrigin(SecurityOrigin* origin) | 491 void V8WindowShell::updateSecurityOrigin(SecurityOrigin* origin) |
491 { | 492 { |
492 ASSERT(m_world->isMainWorld()); | 493 ASSERT(m_world->isMainWorld()); |
493 if (!m_perContextData) | 494 if (!m_perContextData) |
494 return; | 495 return; |
495 v8::HandleScope handleScope(m_isolate); | 496 v8::HandleScope handleScope(m_isolate); |
496 setSecurityToken(origin); | 497 setSecurityToken(origin); |
497 } | 498 } |
498 | 499 |
499 } // WebCore | 500 } // WebCore |
OLD | NEW |