| 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 <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 bool currently_enabled = | 444 bool currently_enabled = |
| 445 registry->enabled_extensions().Contains(extension_id_) || | 445 registry->enabled_extensions().Contains(extension_id_) || |
| 446 registry->terminated_extensions().Contains(extension_id_); | 446 registry->terminated_extensions().Contains(extension_id_); |
| 447 | 447 |
| 448 if (!currently_enabled && enabled) { | 448 if (!currently_enabled && enabled) { |
| 449 ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context()); | 449 ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context()); |
| 450 if (prefs->DidExtensionEscalatePermissions(extension_id_)) { | 450 if (prefs->DidExtensionEscalatePermissions(extension_id_)) { |
| 451 if (!user_gesture()) | 451 if (!user_gesture()) |
| 452 return RespondNow(Error(keys::kGestureNeededForEscalationError)); | 452 return RespondNow(Error(keys::kGestureNeededForEscalationError)); |
| 453 | 453 |
| 454 AddRef(); // Matched in InstallUIProceed/InstallUIAbort | 454 AddRef(); // Matched in OnInstallPromptDone(). |
| 455 install_prompt_ = delegate->SetEnabledFunctionDelegate(this, extension); | 455 install_prompt_ = delegate->SetEnabledFunctionDelegate( |
| 456 GetSenderWebContents(), browser_context(), extension, |
| 457 base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this)); |
| 456 return RespondLater(); | 458 return RespondLater(); |
| 457 } | 459 } |
| 458 if (prefs->GetDisableReasons(extension_id_) & | 460 if (prefs->GetDisableReasons(extension_id_) & |
| 459 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { | 461 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { |
| 460 // Recheck the requirements. | 462 // Recheck the requirements. |
| 461 requirements_checker_ = delegate->CreateRequirementsChecker(); | 463 requirements_checker_ = delegate->CreateRequirementsChecker(); |
| 462 requirements_checker_->Check( | 464 requirements_checker_->Check( |
| 463 extension, | 465 extension, |
| 464 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked, | 466 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked, |
| 465 this)); // This bind creates a reference. | 467 this)); // This bind creates a reference. |
| 466 return RespondLater(); | 468 return RespondLater(); |
| 467 } | 469 } |
| 468 delegate->EnableExtension(browser_context(), extension_id_); | 470 delegate->EnableExtension(browser_context(), extension_id_); |
| 469 } else if (currently_enabled && !params->enabled) { | 471 } else if (currently_enabled && !params->enabled) { |
| 470 delegate->DisableExtension(browser_context(), extension_id_, | 472 delegate->DisableExtension(browser_context(), extension_id_, |
| 471 Extension::DISABLE_USER_ACTION); | 473 Extension::DISABLE_USER_ACTION); |
| 472 } | 474 } |
| 473 | 475 |
| 474 return RespondNow(NoArguments()); | 476 return RespondNow(NoArguments()); |
| 475 } | 477 } |
| 476 | 478 |
| 477 void ManagementSetEnabledFunction::InstallUIProceed() { | 479 void ManagementSetEnabledFunction::OnInstallPromptDone(bool did_accept) { |
| 478 ManagementAPI::GetFactoryInstance() | 480 if (did_accept) { |
| 479 ->Get(browser_context()) | 481 ManagementAPI::GetFactoryInstance() |
| 480 ->GetDelegate() | 482 ->Get(browser_context()) |
| 481 ->EnableExtension(browser_context(), extension_id_); | 483 ->GetDelegate() |
| 482 Respond(OneArgument(new base::FundamentalValue(true))); | 484 ->EnableExtension(browser_context(), extension_id_); |
| 483 Release(); | 485 Respond(OneArgument(new base::FundamentalValue(true))); |
| 484 } | 486 } else { |
| 487 Respond(Error(keys::kUserDidNotReEnableError)); |
| 488 } |
| 485 | 489 |
| 486 void ManagementSetEnabledFunction::InstallUIAbort(bool user_initiated) { | 490 Release(); // Balanced in Run(). |
| 487 Respond(Error(keys::kUserDidNotReEnableError)); | |
| 488 Release(); | |
| 489 } | 491 } |
| 490 | 492 |
| 491 void ManagementSetEnabledFunction::OnRequirementsChecked( | 493 void ManagementSetEnabledFunction::OnRequirementsChecked( |
| 492 const std::vector<std::string>& requirements_errors) { | 494 const std::vector<std::string>& requirements_errors) { |
| 493 if (requirements_errors.empty()) { | 495 if (requirements_errors.empty()) { |
| 494 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()-> | 496 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()-> |
| 495 EnableExtension(browser_context(), extension_id_); | 497 EnableExtension(browser_context(), extension_id_); |
| 496 Respond(NoArguments()); | 498 Respond(NoArguments()); |
| 497 } else { | 499 } else { |
| 498 // TODO(devlin): Should we really be noisy here all the time? | 500 // TODO(devlin): Should we really be noisy here all the time? |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 ManagementAPI::GetFactoryInstance() { | 904 ManagementAPI::GetFactoryInstance() { |
| 903 return g_factory.Pointer(); | 905 return g_factory.Pointer(); |
| 904 } | 906 } |
| 905 | 907 |
| 906 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 908 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
| 907 management_event_router_.reset(new ManagementEventRouter(browser_context_)); | 909 management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
| 908 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 910 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
| 909 } | 911 } |
| 910 | 912 |
| 911 } // namespace extensions | 913 } // namespace extensions |
| OLD | NEW |