OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/management/management_api.h" | 5 #include "extensions/browser/api/management/management_api.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/json/json_writer.h" | 13 #include "base/json/json_writer.h" |
14 #include "base/lazy_instance.h" | 14 #include "base/lazy_instance.h" |
15 #include "base/location.h" | 15 #include "base/location.h" |
16 #include "base/logging.h" | 16 #include "base/logging.h" |
17 #include "base/memory/ptr_util.h" | 17 #include "base/memory/ptr_util.h" |
18 #include "base/metrics/histogram.h" | 18 #include "base/metrics/histogram.h" |
19 #include "base/single_thread_task_runner.h" | 19 #include "base/single_thread_task_runner.h" |
20 #include "base/strings/string_number_conversions.h" | 20 #include "base/strings/string_number_conversions.h" |
21 #include "base/strings/string_util.h" | |
22 #include "base/strings/utf_string_conversions.h" | 21 #include "base/strings/utf_string_conversions.h" |
23 #include "base/threading/thread_task_runner_handle.h" | 22 #include "base/threading/thread_task_runner_handle.h" |
24 #include "build/build_config.h" | 23 #include "build/build_config.h" |
25 #include "content/public/browser/browser_context.h" | 24 #include "content/public/browser/browser_context.h" |
26 #include "extensions/browser/api/extensions_api_client.h" | 25 #include "extensions/browser/api/extensions_api_client.h" |
27 #include "extensions/browser/api/management/management_api_constants.h" | 26 #include "extensions/browser/api/management/management_api_constants.h" |
28 #include "extensions/browser/event_router.h" | 27 #include "extensions/browser/event_router.h" |
29 #include "extensions/browser/extension_prefs.h" | 28 #include "extensions/browser/extension_prefs.h" |
30 #include "extensions/browser/extension_registry.h" | 29 #include "extensions/browser/extension_registry.h" |
31 #include "extensions/browser/extension_system.h" | 30 #include "extensions/browser/extension_system.h" |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 | 439 |
441 AddRef(); // Matched in OnInstallPromptDone(). | 440 AddRef(); // Matched in OnInstallPromptDone(). |
442 install_prompt_ = delegate->SetEnabledFunctionDelegate( | 441 install_prompt_ = delegate->SetEnabledFunctionDelegate( |
443 GetSenderWebContents(), browser_context(), extension, | 442 GetSenderWebContents(), browser_context(), extension, |
444 base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this)); | 443 base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this)); |
445 return RespondLater(); | 444 return RespondLater(); |
446 } | 445 } |
447 if (prefs->GetDisableReasons(extension_id_) & | 446 if (prefs->GetDisableReasons(extension_id_) & |
448 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { | 447 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { |
449 // Recheck the requirements. | 448 // Recheck the requirements. |
450 requirements_checker_ = delegate->CreateRequirementsChecker(); | 449 requirements_checker_ = |
451 requirements_checker_->Check( | 450 base::MakeUnique<extensions::RequirementsChecker>(extension); |
452 extension, | 451 requirements_checker_->Start( |
453 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked, | 452 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked, |
454 this)); // This bind creates a reference. | 453 this)); // This bind creates a reference. |
455 return RespondLater(); | 454 return RespondLater(); |
456 } | 455 } |
457 delegate->EnableExtension(browser_context(), extension_id_); | 456 delegate->EnableExtension(browser_context(), extension_id_); |
458 } else if (currently_enabled && !params->enabled) { | 457 } else if (currently_enabled && !params->enabled) { |
459 delegate->DisableExtension(browser_context(), extension_id_, | 458 delegate->DisableExtension(browser_context(), extension_id_, |
460 Extension::DISABLE_USER_ACTION); | 459 Extension::DISABLE_USER_ACTION); |
461 } | 460 } |
462 | 461 |
463 return RespondNow(NoArguments()); | 462 return RespondNow(NoArguments()); |
464 } | 463 } |
465 | 464 |
466 void ManagementSetEnabledFunction::OnInstallPromptDone(bool did_accept) { | 465 void ManagementSetEnabledFunction::OnInstallPromptDone(bool did_accept) { |
467 if (did_accept) { | 466 if (did_accept) { |
468 ManagementAPI::GetFactoryInstance() | 467 ManagementAPI::GetFactoryInstance() |
469 ->Get(browser_context()) | 468 ->Get(browser_context()) |
470 ->GetDelegate() | 469 ->GetDelegate() |
471 ->EnableExtension(browser_context(), extension_id_); | 470 ->EnableExtension(browser_context(), extension_id_); |
472 Respond(OneArgument(base::MakeUnique<base::Value>(true))); | 471 Respond(OneArgument(base::MakeUnique<base::Value>(true))); |
473 } else { | 472 } else { |
474 Respond(Error(keys::kUserDidNotReEnableError)); | 473 Respond(Error(keys::kUserDidNotReEnableError)); |
475 } | 474 } |
476 | 475 |
477 Release(); // Balanced in Run(). | 476 Release(); // Balanced in Run(). |
478 } | 477 } |
479 | 478 |
480 void ManagementSetEnabledFunction::OnRequirementsChecked( | 479 void ManagementSetEnabledFunction::OnRequirementsChecked( |
481 const std::vector<std::string>& requirements_errors) { | 480 PreloadCheck::Errors requirements_errors) { |
482 if (requirements_errors.empty()) { | 481 if (requirements_errors.empty()) { |
483 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()-> | 482 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()-> |
484 EnableExtension(browser_context(), extension_id_); | 483 EnableExtension(browser_context(), extension_id_); |
485 Respond(NoArguments()); | 484 Respond(NoArguments()); |
486 } else { | 485 } else { |
487 // TODO(devlin): Should we really be noisy here all the time? | 486 // TODO(devlin): Should we really be noisy here all the time? |
488 Respond(Error(keys::kMissingRequirementsError, | 487 Respond(Error(keys::kMissingRequirementsError, |
489 base::JoinString(requirements_errors, " "))); | 488 base::UTF16ToUTF8(requirements_checker_->GetErrorMessage()))); |
490 } | 489 } |
491 } | 490 } |
492 | 491 |
493 ManagementUninstallFunctionBase::ManagementUninstallFunctionBase() { | 492 ManagementUninstallFunctionBase::ManagementUninstallFunctionBase() { |
494 } | 493 } |
495 | 494 |
496 ManagementUninstallFunctionBase::~ManagementUninstallFunctionBase() { | 495 ManagementUninstallFunctionBase::~ManagementUninstallFunctionBase() { |
497 } | 496 } |
498 | 497 |
499 ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall( | 498 ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall( |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
866 ManagementAPI::GetFactoryInstance() { | 865 ManagementAPI::GetFactoryInstance() { |
867 return g_factory.Pointer(); | 866 return g_factory.Pointer(); |
868 } | 867 } |
869 | 868 |
870 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 869 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
871 management_event_router_.reset(new ManagementEventRouter(browser_context_)); | 870 management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
872 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 871 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
873 } | 872 } |
874 | 873 |
875 } // namespace extensions | 874 } // namespace extensions |
OLD | NEW |