| 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/browser/api/runtime/runtime_api.h" | 5 #include "extensions/browser/api/runtime/runtime_api.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 return; | 88 return; |
| 89 | 89 |
| 90 // If this is a persistent background page, we want to wait for it to load | 90 // If this is a persistent background page, we want to wait for it to load |
| 91 // (it might not be ready, since this is startup). But only enqueue once. | 91 // (it might not be ready, since this is startup). But only enqueue once. |
| 92 // If it fails to load the first time, don't bother trying again. | 92 // If it fails to load the first time, don't bother trying again. |
| 93 const Extension* extension = | 93 const Extension* extension = |
| 94 ExtensionRegistry::Get(browser_context)->enabled_extensions().GetByID( | 94 ExtensionRegistry::Get(browser_context)->enabled_extensions().GetByID( |
| 95 extension_id); | 95 extension_id); |
| 96 if (extension && BackgroundInfo::HasPersistentBackgroundPage(extension) && | 96 if (extension && BackgroundInfo::HasPersistentBackgroundPage(extension) && |
| 97 first_call && | 97 first_call && |
| 98 system->lazy_background_task_queue()->ShouldEnqueueTask(browser_context, | 98 LazyBackgroundTaskQueue::Get(browser_context) |
| 99 extension)) { | 99 ->ShouldEnqueueTask(browser_context, extension)) { |
| 100 system->lazy_background_task_queue()->AddPendingTask( | 100 LazyBackgroundTaskQueue::Get(browser_context) |
| 101 browser_context, | 101 ->AddPendingTask(browser_context, extension_id, |
| 102 extension_id, | 102 base::Bind(&DispatchOnStartupEventImpl, |
| 103 base::Bind( | 103 browser_context, extension_id, false)); |
| 104 &DispatchOnStartupEventImpl, browser_context, extension_id, false)); | |
| 105 return; | 104 return; |
| 106 } | 105 } |
| 107 | 106 |
| 108 scoped_ptr<base::ListValue> event_args(new base::ListValue()); | 107 scoped_ptr<base::ListValue> event_args(new base::ListValue()); |
| 109 scoped_ptr<Event> event( | 108 scoped_ptr<Event> event( |
| 110 new Event(runtime::OnStartup::kEventName, event_args.Pass())); | 109 new Event(runtime::OnStartup::kEventName, event_args.Pass())); |
| 111 system->event_router()->DispatchEventToExtension(extension_id, event.Pass()); | 110 system->event_router()->DispatchEventToExtension(extension_id, event.Pass()); |
| 112 } | 111 } |
| 113 | 112 |
| 114 void SetUninstallURL(ExtensionPrefs* prefs, | 113 void SetUninstallURL(ExtensionPrefs* prefs, |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 GURL uninstall_url( | 396 GURL uninstall_url( |
| 398 GetUninstallURL(ExtensionPrefs::Get(context), extension_id)); | 397 GetUninstallURL(ExtensionPrefs::Get(context), extension_id)); |
| 399 | 398 |
| 400 if (uninstall_url.is_empty()) | 399 if (uninstall_url.is_empty()) |
| 401 return; | 400 return; |
| 402 | 401 |
| 403 RuntimeAPI::GetFactoryInstance()->Get(context)->OpenURL(uninstall_url); | 402 RuntimeAPI::GetFactoryInstance()->Get(context)->OpenURL(uninstall_url); |
| 404 } | 403 } |
| 405 | 404 |
| 406 ExtensionFunction::ResponseAction RuntimeGetBackgroundPageFunction::Run() { | 405 ExtensionFunction::ResponseAction RuntimeGetBackgroundPageFunction::Run() { |
| 407 ExtensionSystem* system = ExtensionSystem::Get(browser_context()); | |
| 408 ExtensionHost* host = ProcessManager::Get(browser_context()) | 406 ExtensionHost* host = ProcessManager::Get(browser_context()) |
| 409 ->GetBackgroundHostForExtension(extension_id()); | 407 ->GetBackgroundHostForExtension(extension_id()); |
| 410 if (system->lazy_background_task_queue()->ShouldEnqueueTask(browser_context(), | 408 if (LazyBackgroundTaskQueue::Get(browser_context()) |
| 411 extension())) { | 409 ->ShouldEnqueueTask(browser_context(), extension())) { |
| 412 system->lazy_background_task_queue()->AddPendingTask( | 410 LazyBackgroundTaskQueue::Get(browser_context()) |
| 413 browser_context(), | 411 ->AddPendingTask( |
| 414 extension_id(), | 412 browser_context(), extension_id(), |
| 415 base::Bind(&RuntimeGetBackgroundPageFunction::OnPageLoaded, this)); | 413 base::Bind(&RuntimeGetBackgroundPageFunction::OnPageLoaded, this)); |
| 416 } else if (host) { | 414 } else if (host) { |
| 417 OnPageLoaded(host); | 415 OnPageLoaded(host); |
| 418 } else { | 416 } else { |
| 419 return RespondNow(Error(kNoBackgroundPageError)); | 417 return RespondNow(Error(kNoBackgroundPageError)); |
| 420 } | 418 } |
| 421 | 419 |
| 422 return RespondLater(); | 420 return RespondLater(); |
| 423 } | 421 } |
| 424 | 422 |
| 425 void RuntimeGetBackgroundPageFunction::OnPageLoaded(ExtensionHost* host) { | 423 void RuntimeGetBackgroundPageFunction::OnPageLoaded(ExtensionHost* host) { |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 content::ChildProcessSecurityPolicy* policy = | 516 content::ChildProcessSecurityPolicy* policy = |
| 519 content::ChildProcessSecurityPolicy::GetInstance(); | 517 content::ChildProcessSecurityPolicy::GetInstance(); |
| 520 policy->GrantReadFileSystem(renderer_id, filesystem_id); | 518 policy->GrantReadFileSystem(renderer_id, filesystem_id); |
| 521 base::DictionaryValue* dict = new base::DictionaryValue(); | 519 base::DictionaryValue* dict = new base::DictionaryValue(); |
| 522 dict->SetString("fileSystemId", filesystem_id); | 520 dict->SetString("fileSystemId", filesystem_id); |
| 523 dict->SetString("baseName", relative_path); | 521 dict->SetString("baseName", relative_path); |
| 524 return RespondNow(OneArgument(dict)); | 522 return RespondNow(OneArgument(dict)); |
| 525 } | 523 } |
| 526 | 524 |
| 527 } // namespace extensions | 525 } // namespace extensions |
| OLD | NEW |