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 "chrome/browser/extensions/api/management/management_api.h" | 5 #include "chrome/browser/extensions/api/management/management_api.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 } | 573 } |
574 | 574 |
575 // static | 575 // static |
576 void ManagementUninstallFunctionBase::SetAutoConfirmForTest( | 576 void ManagementUninstallFunctionBase::SetAutoConfirmForTest( |
577 bool should_proceed) { | 577 bool should_proceed) { |
578 auto_confirm_for_test = should_proceed ? PROCEED : ABORT; | 578 auto_confirm_for_test = should_proceed ? PROCEED : ABORT; |
579 } | 579 } |
580 | 580 |
581 void ManagementUninstallFunctionBase::Finish(bool should_uninstall) { | 581 void ManagementUninstallFunctionBase::Finish(bool should_uninstall) { |
582 if (should_uninstall) { | 582 if (should_uninstall) { |
583 bool success = service()->UninstallExtension( | 583 // The extension can be uninstalled in another window while the UI was |
584 extension_id_, | 584 // showing. Do nothing in that case. |
585 false, /* external uninstall */ | 585 ExtensionRegistry* registry = ExtensionRegistry::Get(GetProfile()); |
586 NULL); | 586 const Extension* extension = registry->GetExtensionById( |
| 587 extension_id_, ExtensionRegistry::EVERYTHING); |
| 588 if (!extension) { |
| 589 error_ = ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, |
| 590 extension_id_); |
| 591 SendResponse(false); |
| 592 } else { |
| 593 bool success = |
| 594 service()->UninstallExtension(extension_id_, |
| 595 false, /* external uninstall */ |
| 596 NULL); |
587 | 597 |
588 // TODO set error_ if !success | 598 // TODO set error_ if !success |
589 SendResponse(success); | 599 SendResponse(success); |
| 600 } |
590 } else { | 601 } else { |
591 error_ = ErrorUtils::FormatErrorMessage( | 602 error_ = ErrorUtils::FormatErrorMessage( |
592 keys::kUninstallCanceledError, extension_id_); | 603 keys::kUninstallCanceledError, extension_id_); |
593 SendResponse(false); | 604 SendResponse(false); |
594 } | 605 } |
595 | 606 |
596 } | 607 } |
597 | 608 |
598 void ManagementUninstallFunctionBase::ExtensionUninstallAccepted() { | 609 void ManagementUninstallFunctionBase::ExtensionUninstallAccepted() { |
599 Finish(true); | 610 Finish(true); |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
814 return g_factory.Pointer(); | 825 return g_factory.Pointer(); |
815 } | 826 } |
816 | 827 |
817 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 828 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
818 management_event_router_.reset( | 829 management_event_router_.reset( |
819 new ManagementEventRouter(Profile::FromBrowserContext(browser_context_))); | 830 new ManagementEventRouter(Profile::FromBrowserContext(browser_context_))); |
820 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 831 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
821 } | 832 } |
822 | 833 |
823 } // namespace extensions | 834 } // namespace extensions |
OLD | NEW |