| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/renderer/dispatcher.h" | 5 #include "extensions/renderer/dispatcher.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 #include "extensions/renderer/render_frame_observer_natives.h" | 80 #include "extensions/renderer/render_frame_observer_natives.h" |
| 81 #include "extensions/renderer/renderer_extension_registry.h" | 81 #include "extensions/renderer/renderer_extension_registry.h" |
| 82 #include "extensions/renderer/request_sender.h" | 82 #include "extensions/renderer/request_sender.h" |
| 83 #include "extensions/renderer/runtime_custom_bindings.h" | 83 #include "extensions/renderer/runtime_custom_bindings.h" |
| 84 #include "extensions/renderer/safe_builtins.h" | 84 #include "extensions/renderer/safe_builtins.h" |
| 85 #include "extensions/renderer/script_context.h" | 85 #include "extensions/renderer/script_context.h" |
| 86 #include "extensions/renderer/script_context_set.h" | 86 #include "extensions/renderer/script_context_set.h" |
| 87 #include "extensions/renderer/script_injection.h" | 87 #include "extensions/renderer/script_injection.h" |
| 88 #include "extensions/renderer/script_injection_manager.h" | 88 #include "extensions/renderer/script_injection_manager.h" |
| 89 #include "extensions/renderer/send_request_natives.h" | 89 #include "extensions/renderer/send_request_natives.h" |
| 90 #include "extensions/renderer/service_worker_request_sender.h" |
| 90 #include "extensions/renderer/set_icon_natives.h" | 91 #include "extensions/renderer/set_icon_natives.h" |
| 91 #include "extensions/renderer/static_v8_external_one_byte_string_resource.h" | 92 #include "extensions/renderer/static_v8_external_one_byte_string_resource.h" |
| 92 #include "extensions/renderer/test_features_native_handler.h" | 93 #include "extensions/renderer/test_features_native_handler.h" |
| 93 #include "extensions/renderer/test_native_handler.h" | 94 #include "extensions/renderer/test_native_handler.h" |
| 94 #include "extensions/renderer/user_gestures_native_handler.h" | 95 #include "extensions/renderer/user_gestures_native_handler.h" |
| 95 #include "extensions/renderer/utils_native_handler.h" | 96 #include "extensions/renderer/utils_native_handler.h" |
| 96 #include "extensions/renderer/v8_context_native_handler.h" | 97 #include "extensions/renderer/v8_context_native_handler.h" |
| 97 #include "extensions/renderer/v8_helpers.h" | 98 #include "extensions/renderer/v8_helpers.h" |
| 98 #include "extensions/renderer/wake_event_page.h" | 99 #include "extensions/renderer/wake_event_page.h" |
| 99 #include "extensions/renderer/worker_script_context_set.h" | 100 #include "extensions/renderer/worker_script_context_set.h" |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 // Handled in DidInitializeServiceWorkerContextOnWorkerThread(). | 391 // Handled in DidInitializeServiceWorkerContextOnWorkerThread(). |
| 391 NOTREACHED(); | 392 NOTREACHED(); |
| 392 break; | 393 break; |
| 393 } | 394 } |
| 394 | 395 |
| 395 VLOG(1) << "Num tracked contexts: " << script_context_set_->size(); | 396 VLOG(1) << "Num tracked contexts: " << script_context_set_->size(); |
| 396 } | 397 } |
| 397 | 398 |
| 398 void Dispatcher::DidInitializeServiceWorkerContextOnWorkerThread( | 399 void Dispatcher::DidInitializeServiceWorkerContextOnWorkerThread( |
| 399 v8::Local<v8::Context> v8_context, | 400 v8::Local<v8::Context> v8_context, |
| 400 int embedded_worker_id, | 401 int64_t service_worker_version_id, |
| 401 const GURL& url) { | 402 const GURL& url) { |
| 402 const base::TimeTicks start_time = base::TimeTicks::Now(); | 403 const base::TimeTicks start_time = base::TimeTicks::Now(); |
| 403 | 404 |
| 404 if (!url.SchemeIs(kExtensionScheme) && | 405 if (!url.SchemeIs(kExtensionScheme) && |
| 405 !url.SchemeIs(kExtensionResourceScheme)) { | 406 !url.SchemeIs(kExtensionResourceScheme)) { |
| 406 // Early-out if this isn't a chrome-extension:// or resource scheme, | 407 // Early-out if this isn't a chrome-extension:// or resource scheme, |
| 407 // because looking up the extension registry is unnecessary if it's not. | 408 // because looking up the extension registry is unnecessary if it's not. |
| 408 // Checking this will also skip over hosted apps, which is the desired | 409 // Checking this will also skip over hosted apps, which is the desired |
| 409 // behavior - hosted app service workers are not our concern. | 410 // behavior - hosted app service workers are not our concern. |
| 410 return; | 411 return; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 436 // won't work before that event has fired? | 437 // won't work before that event has fired? |
| 437 return; | 438 return; |
| 438 } | 439 } |
| 439 | 440 |
| 440 ScriptContext* context = new ScriptContext( | 441 ScriptContext* context = new ScriptContext( |
| 441 v8_context, nullptr, extension, Feature::SERVICE_WORKER_CONTEXT, | 442 v8_context, nullptr, extension, Feature::SERVICE_WORKER_CONTEXT, |
| 442 extension, Feature::SERVICE_WORKER_CONTEXT); | 443 extension, Feature::SERVICE_WORKER_CONTEXT); |
| 443 context->set_url(url); | 444 context->set_url(url); |
| 444 | 445 |
| 445 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) { | 446 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) { |
| 446 WorkerThreadDispatcher::Get()->AddWorkerData(embedded_worker_id); | 447 WorkerThreadDispatcher::Get()->AddWorkerData(service_worker_version_id); |
| 447 { | 448 { |
| 448 // TODO(lazyboy): Make sure accessing |source_map_| in worker thread is | 449 // TODO(lazyboy): Make sure accessing |source_map_| in worker thread is |
| 449 // safe. | 450 // safe. |
| 450 std::unique_ptr<ModuleSystem> module_system( | 451 std::unique_ptr<ModuleSystem> module_system( |
| 451 new ModuleSystem(context, &source_map_)); | 452 new ModuleSystem(context, &source_map_)); |
| 452 context->set_module_system(std::move(module_system)); | 453 context->set_module_system(std::move(module_system)); |
| 453 } | 454 } |
| 454 | 455 |
| 455 ModuleSystem* module_system = context->module_system(); | 456 ModuleSystem* module_system = context->module_system(); |
| 456 // Enable natives in startup. | 457 // Enable natives in startup. |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 // In fact |request_sender_| should really be owned by ScriptContext. | 531 // In fact |request_sender_| should really be owned by ScriptContext. |
| 531 request_sender_->InvalidateSource(context); | 532 request_sender_->InvalidateSource(context); |
| 532 | 533 |
| 533 script_context_set_->Remove(context); | 534 script_context_set_->Remove(context); |
| 534 VLOG(1) << "Num tracked contexts: " << script_context_set_->size(); | 535 VLOG(1) << "Num tracked contexts: " << script_context_set_->size(); |
| 535 } | 536 } |
| 536 | 537 |
| 537 // static | 538 // static |
| 538 void Dispatcher::WillDestroyServiceWorkerContextOnWorkerThread( | 539 void Dispatcher::WillDestroyServiceWorkerContextOnWorkerThread( |
| 539 v8::Local<v8::Context> v8_context, | 540 v8::Local<v8::Context> v8_context, |
| 540 int embedded_worker_id, | 541 int64_t service_worker_version_id, |
| 541 const GURL& url) { | 542 const GURL& url) { |
| 542 if (url.SchemeIs(kExtensionScheme) || | 543 if (url.SchemeIs(kExtensionScheme) || |
| 543 url.SchemeIs(kExtensionResourceScheme)) { | 544 url.SchemeIs(kExtensionResourceScheme)) { |
| 544 // See comment in DidInitializeServiceWorkerContextOnWorkerThread. | 545 // See comment in DidInitializeServiceWorkerContextOnWorkerThread. |
| 545 g_worker_script_context_set.Get().Remove(v8_context, url); | 546 g_worker_script_context_set.Get().Remove(v8_context, url); |
| 546 } | 547 } |
| 547 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) | 548 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) |
| 548 WorkerThreadDispatcher::Get()->RemoveWorkerData(embedded_worker_id); | 549 WorkerThreadDispatcher::Get()->RemoveWorkerData(service_worker_version_id); |
| 549 } | 550 } |
| 550 | 551 |
| 551 void Dispatcher::DidCreateDocumentElement(blink::WebLocalFrame* frame) { | 552 void Dispatcher::DidCreateDocumentElement(blink::WebLocalFrame* frame) { |
| 552 // Note: use GetEffectiveDocumentURL not just frame->document()->url() | 553 // Note: use GetEffectiveDocumentURL not just frame->document()->url() |
| 553 // so that this also injects the stylesheet on about:blank frames that | 554 // so that this also injects the stylesheet on about:blank frames that |
| 554 // are hosted in the extension process. | 555 // are hosted in the extension process. |
| 555 GURL effective_document_url = ScriptContext::GetEffectiveDocumentURL( | 556 GURL effective_document_url = ScriptContext::GetEffectiveDocumentURL( |
| 556 frame, frame->document().url(), true /* match_about_blank */); | 557 frame, frame->document().url(), true /* match_about_blank */); |
| 557 | 558 |
| 558 const Extension* extension = | 559 const Extension* extension = |
| (...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1651 // The "guestViewDeny" module must always be loaded last. It registers | 1652 // The "guestViewDeny" module must always be loaded last. It registers |
| 1652 // error-providing custom elements for the GuestView types that are not | 1653 // error-providing custom elements for the GuestView types that are not |
| 1653 // available, and thus all of those types must have been checked and loaded | 1654 // available, and thus all of those types must have been checked and loaded |
| 1654 // (or not loaded) beforehand. | 1655 // (or not loaded) beforehand. |
| 1655 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { | 1656 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { |
| 1656 module_system->Require("guestViewDeny"); | 1657 module_system->Require("guestViewDeny"); |
| 1657 } | 1658 } |
| 1658 } | 1659 } |
| 1659 | 1660 |
| 1660 } // namespace extensions | 1661 } // namespace extensions |
| OLD | NEW |