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 28 matching lines...) Expand all Loading... | |
| 39 #include "bindings/core/v8/V8Document.h" | 39 #include "bindings/core/v8/V8Document.h" |
| 40 #include "bindings/core/v8/V8GCForContextDispose.h" | 40 #include "bindings/core/v8/V8GCForContextDispose.h" |
| 41 #include "bindings/core/v8/V8HTMLCollection.h" | 41 #include "bindings/core/v8/V8HTMLCollection.h" |
| 42 #include "bindings/core/v8/V8HTMLDocument.h" | 42 #include "bindings/core/v8/V8HTMLDocument.h" |
| 43 #include "bindings/core/v8/V8HiddenValue.h" | 43 #include "bindings/core/v8/V8HiddenValue.h" |
| 44 #include "bindings/core/v8/V8Initializer.h" | 44 #include "bindings/core/v8/V8Initializer.h" |
| 45 #include "bindings/core/v8/V8ObjectConstructor.h" | 45 #include "bindings/core/v8/V8ObjectConstructor.h" |
| 46 #include "bindings/core/v8/V8PagePopupControllerBinding.h" | 46 #include "bindings/core/v8/V8PagePopupControllerBinding.h" |
| 47 #include "bindings/core/v8/V8PrivateProperty.h" | 47 #include "bindings/core/v8/V8PrivateProperty.h" |
| 48 #include "bindings/core/v8/V8Window.h" | 48 #include "bindings/core/v8/V8Window.h" |
| 49 #include "core/dom/Modulator.h" | |
| 49 #include "core/frame/LocalFrame.h" | 50 #include "core/frame/LocalFrame.h" |
| 50 #include "core/frame/csp/ContentSecurityPolicy.h" | 51 #include "core/frame/csp/ContentSecurityPolicy.h" |
| 51 #include "core/html/DocumentNameCollection.h" | 52 #include "core/html/DocumentNameCollection.h" |
| 52 #include "core/html/HTMLCollection.h" | 53 #include "core/html/HTMLCollection.h" |
| 53 #include "core/html/HTMLIFrameElement.h" | 54 #include "core/html/HTMLIFrameElement.h" |
| 54 #include "core/inspector/InspectorInstrumentation.h" | 55 #include "core/inspector/InspectorInstrumentation.h" |
| 55 #include "core/inspector/MainThreadDebugger.h" | 56 #include "core/inspector/MainThreadDebugger.h" |
| 56 #include "core/loader/DocumentLoader.h" | 57 #include "core/loader/DocumentLoader.h" |
| 57 #include "core/loader/FrameLoader.h" | 58 #include "core/loader/FrameLoader.h" |
| 58 #include "core/loader/FrameLoaderClient.h" | 59 #include "core/loader/FrameLoaderClient.h" |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 402 | 403 |
| 403 void WindowProxy::updateActivityLogger() { | 404 void WindowProxy::updateActivityLogger() { |
| 404 m_scriptState->perContextData()->setActivityLogger( | 405 m_scriptState->perContextData()->setActivityLogger( |
| 405 V8DOMActivityLogger::activityLogger( | 406 V8DOMActivityLogger::activityLogger( |
| 406 m_world->worldId(), | 407 m_world->worldId(), |
| 407 m_frame->isLocalFrame() && toLocalFrame(m_frame)->document() | 408 m_frame->isLocalFrame() && toLocalFrame(m_frame)->document() |
| 408 ? toLocalFrame(m_frame)->document()->baseURI() | 409 ? toLocalFrame(m_frame)->document()->baseURI() |
| 409 : KURL())); | 410 : KURL())); |
| 410 } | 411 } |
| 411 | 412 |
| 413 void WindowProxy::updateModuleResolver() { | |
| 414 if (!m_frame->isLocalFrame()) | |
| 415 return; | |
| 416 if (Document* document = toLocalFrame(m_frame)->document()) { | |
| 417 if (Modulator* modulator = document->ensureModulator()) { | |
|
haraken
2017/01/06 05:47:58
I'm wondering if Modulator is a per-document thing
kouhei (in TOK)
2017/01/11 01:41:57
Done.
| |
| 418 m_scriptState->perContextData()->setModuleResolver( | |
| 419 modulator->scriptModuleResolver()); | |
| 420 } | |
| 421 } | |
| 422 } | |
| 423 | |
| 412 void WindowProxy::setSecurityToken(SecurityOrigin* origin) { | 424 void WindowProxy::setSecurityToken(SecurityOrigin* origin) { |
| 413 // If two tokens are equal, then the SecurityOrigins canAccess each other. | 425 // If two tokens are equal, then the SecurityOrigins canAccess each other. |
| 414 // If two tokens are not equal, then we have to call canAccess. | 426 // If two tokens are not equal, then we have to call canAccess. |
| 415 // Note: we can't use the HTTPOrigin if it was set from the DOM. | 427 // Note: we can't use the HTTPOrigin if it was set from the DOM. |
| 416 String token; | 428 String token; |
| 417 // There are two situations where v8 needs to do a full canAccess check, | 429 // There are two situations where v8 needs to do a full canAccess check, |
| 418 // so set an empty security token instead: | 430 // so set an empty security token instead: |
| 419 // - document.domain was modified | 431 // - document.domain was modified |
| 420 // - the frame is remote | 432 // - the frame is remote |
| 421 bool delaySet = m_frame->isRemoteFrame() || | 433 bool delaySet = m_frame->isRemoteFrame() || |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 457 // as the security token. | 469 // as the security token. |
| 458 context->SetSecurityToken(v8AtomicString(m_isolate, token)); | 470 context->SetSecurityToken(v8AtomicString(m_isolate, token)); |
| 459 } | 471 } |
| 460 | 472 |
| 461 void WindowProxy::updateDocument() { | 473 void WindowProxy::updateDocument() { |
| 462 DCHECK(m_world->isMainWorld()); | 474 DCHECK(m_world->isMainWorld()); |
| 463 if (!isContextInitialized()) | 475 if (!isContextInitialized()) |
| 464 return; | 476 return; |
| 465 | 477 |
| 466 updateActivityLogger(); | 478 updateActivityLogger(); |
| 479 updateModuleResolver(); | |
| 467 updateDocumentProperty(); | 480 updateDocumentProperty(); |
| 468 updateSecurityOrigin(m_frame->securityContext()->getSecurityOrigin()); | 481 updateSecurityOrigin(m_frame->securityContext()->getSecurityOrigin()); |
| 469 } | 482 } |
| 470 | 483 |
| 471 static v8::Local<v8::Value> getNamedProperty( | 484 static v8::Local<v8::Value> getNamedProperty( |
| 472 HTMLDocument* htmlDocument, | 485 HTMLDocument* htmlDocument, |
| 473 const AtomicString& key, | 486 const AtomicString& key, |
| 474 v8::Local<v8::Object> creationContext, | 487 v8::Local<v8::Object> creationContext, |
| 475 v8::Isolate* isolate) { | 488 v8::Isolate* isolate) { |
| 476 if (!htmlDocument->hasNamedItem(key) && !htmlDocument->hasExtraNamedItem(key)) | 489 if (!htmlDocument->hasNamedItem(key) && !htmlDocument->hasExtraNamedItem(key)) |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 550 .ToChecked(); | 563 .ToChecked(); |
| 551 } | 564 } |
| 552 | 565 |
| 553 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) { | 566 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) { |
| 554 if (!isContextInitialized()) | 567 if (!isContextInitialized()) |
| 555 return; | 568 return; |
| 556 setSecurityToken(origin); | 569 setSecurityToken(origin); |
| 557 } | 570 } |
| 558 | 571 |
| 559 } // namespace blink | 572 } // namespace blink |
| OLD | NEW |