| 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 "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" | 5 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" | 
| 6 | 6 | 
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" | 
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" | 
| 9 #include "chrome/browser/extensions/extension_service.h" | 9 #include "chrome/browser/extensions/extension_service.h" | 
| 10 #include "chrome/browser/media/router/media_router_feature.h" | 10 #include "chrome/browser/media/router/media_router_feature.h" | 
| 11 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" | 
| 12 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" | 
|  | 13 #include "chrome/browser/ui/toolbar/media_router_action.h" | 
|  | 14 #include "chrome/browser/ui/toolbar/media_router_action_controller.h" | 
| 13 #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h" | 15 #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h" | 
| 14 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" | 16 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" | 
| 15 #include "extensions/browser/extension_registry.h" | 17 #include "extensions/browser/extension_registry.h" | 
| 16 | 18 | 
| 17 #if defined(ENABLE_MEDIA_ROUTER) |  | 
| 18 #include "chrome/browser/ui/toolbar/media_router_action.h" |  | 
| 19 #include "chrome/browser/ui/toolbar/media_router_action_controller.h" |  | 
| 20 #endif |  | 
| 21 |  | 
| 22 // static | 19 // static | 
| 23 const char ComponentToolbarActionsFactory::kCastBetaExtensionId[] = | 20 const char ComponentToolbarActionsFactory::kCastBetaExtensionId[] = | 
| 24     "dliochdbjfkdbacpmhlcpmleaejidimm"; | 21     "dliochdbjfkdbacpmhlcpmleaejidimm"; | 
| 25 const char ComponentToolbarActionsFactory::kCastExtensionId[] = | 22 const char ComponentToolbarActionsFactory::kCastExtensionId[] = | 
| 26     "boadgeojelhgndaghljhdicfkmllpafd"; | 23     "boadgeojelhgndaghljhdicfkmllpafd"; | 
| 27 const char ComponentToolbarActionsFactory::kMediaRouterActionId[] = | 24 const char ComponentToolbarActionsFactory::kMediaRouterActionId[] = | 
| 28     "media_router_action"; | 25     "media_router_action"; | 
| 29 | 26 | 
| 30 ComponentToolbarActionsFactory::ComponentToolbarActionsFactory(Profile* profile) | 27 ComponentToolbarActionsFactory::ComponentToolbarActionsFactory(Profile* profile) | 
| 31     : profile_(profile) { | 28     : profile_(profile) { | 
| 32 #if defined(ENABLE_MEDIA_ROUTER) |  | 
| 33   if (media_router::MediaRouterEnabled(profile_) && | 29   if (media_router::MediaRouterEnabled(profile_) && | 
| 34       MediaRouterActionController::IsActionShownByPolicy(profile_)) { | 30       MediaRouterActionController::IsActionShownByPolicy(profile_)) { | 
| 35     initial_ids_.insert(kMediaRouterActionId); | 31     initial_ids_.insert(kMediaRouterActionId); | 
| 36   } | 32   } | 
| 37 #endif |  | 
| 38 } | 33 } | 
| 39 | 34 | 
| 40 ComponentToolbarActionsFactory::~ComponentToolbarActionsFactory() {} | 35 ComponentToolbarActionsFactory::~ComponentToolbarActionsFactory() {} | 
| 41 | 36 | 
| 42 std::set<std::string> ComponentToolbarActionsFactory::GetInitialComponentIds() { | 37 std::set<std::string> ComponentToolbarActionsFactory::GetInitialComponentIds() { | 
| 43   return initial_ids_; | 38   return initial_ids_; | 
| 44 } | 39 } | 
| 45 | 40 | 
| 46 void ComponentToolbarActionsFactory::OnAddComponentActionBeforeInit( | 41 void ComponentToolbarActionsFactory::OnAddComponentActionBeforeInit( | 
| 47     const std::string& action_id) { | 42     const std::string& action_id) { | 
| 48   initial_ids_.insert(action_id); | 43   initial_ids_.insert(action_id); | 
| 49 } | 44 } | 
| 50 | 45 | 
| 51 void ComponentToolbarActionsFactory::OnRemoveComponentActionBeforeInit( | 46 void ComponentToolbarActionsFactory::OnRemoveComponentActionBeforeInit( | 
| 52     const std::string& action_id) { | 47     const std::string& action_id) { | 
| 53   initial_ids_.erase(action_id); | 48   initial_ids_.erase(action_id); | 
| 54 } | 49 } | 
| 55 | 50 | 
| 56 std::unique_ptr<ToolbarActionViewController> | 51 std::unique_ptr<ToolbarActionViewController> | 
| 57 ComponentToolbarActionsFactory::GetComponentToolbarActionForId( | 52 ComponentToolbarActionsFactory::GetComponentToolbarActionForId( | 
| 58     const std::string& action_id, | 53     const std::string& action_id, | 
| 59     Browser* browser, | 54     Browser* browser, | 
| 60     ToolbarActionsBar* bar) { | 55     ToolbarActionsBar* bar) { | 
| 61   // Add component toolbar actions here. | 56   // Add component toolbar actions here. | 
| 62   // This current design means that the ComponentToolbarActionsFactory is aware | 57   // This current design means that the ComponentToolbarActionsFactory is aware | 
| 63   // of all actions. Since we should *not* have an excessive amount of these | 58   // of all actions. Since we should *not* have an excessive amount of these | 
| 64   // (since each will have an action in the toolbar or overflow menu), this | 59   // (since each will have an action in the toolbar or overflow menu), this | 
| 65   // should be okay. If this changes, we should rethink this design to have, | 60   // should be okay. If this changes, we should rethink this design to have, | 
| 66   // e.g., RegisterChromeAction(). | 61   // e.g., RegisterChromeAction(). | 
| 67 #if defined(ENABLE_MEDIA_ROUTER) |  | 
| 68   if (action_id == kMediaRouterActionId) | 62   if (action_id == kMediaRouterActionId) | 
| 69     return std::unique_ptr<ToolbarActionViewController>( | 63     return std::unique_ptr<ToolbarActionViewController>( | 
| 70         new MediaRouterAction(browser, bar)); | 64         new MediaRouterAction(browser, bar)); | 
| 71 #endif  // defined(ENABLE_MEDIA_ROUTER) |  | 
| 72 | 65 | 
| 73   NOTREACHED(); | 66   NOTREACHED(); | 
| 74   return std::unique_ptr<ToolbarActionViewController>(); | 67   return std::unique_ptr<ToolbarActionViewController>(); | 
| 75 } | 68 } | 
| 76 | 69 | 
| 77 void ComponentToolbarActionsFactory::UnloadMigratedExtensions( | 70 void ComponentToolbarActionsFactory::UnloadMigratedExtensions( | 
| 78     ExtensionService* service, | 71     ExtensionService* service, | 
| 79     extensions::ExtensionRegistry* registry) { | 72     extensions::ExtensionRegistry* registry) { | 
| 80   // TODO(takumif): Replace the unloading of Cast and Cast Beta extensions with | 73   // TODO(takumif): Replace the unloading of Cast and Cast Beta extensions with | 
| 81   // uninstallation. | 74   // uninstallation. | 
| 82   UnloadExtension(service, registry, kCastExtensionId); | 75   UnloadExtension(service, registry, kCastExtensionId); | 
| 83   UnloadExtension(service, registry, kCastBetaExtensionId); | 76   UnloadExtension(service, registry, kCastBetaExtensionId); | 
| 84 } | 77 } | 
| 85 | 78 | 
| 86 void ComponentToolbarActionsFactory::UnloadExtension( | 79 void ComponentToolbarActionsFactory::UnloadExtension( | 
| 87     ExtensionService* service, | 80     ExtensionService* service, | 
| 88     extensions::ExtensionRegistry* registry, | 81     extensions::ExtensionRegistry* registry, | 
| 89     const std::string& extension_id) { | 82     const std::string& extension_id) { | 
| 90   if (registry->enabled_extensions().Contains(extension_id)) { | 83   if (registry->enabled_extensions().Contains(extension_id)) { | 
| 91     service->UnloadExtension( | 84     service->UnloadExtension( | 
| 92         extension_id, | 85         extension_id, | 
| 93         extensions::UnloadedExtensionInfo::REASON_MIGRATED_TO_COMPONENT); | 86         extensions::UnloadedExtensionInfo::REASON_MIGRATED_TO_COMPONENT); | 
| 94   } | 87   } | 
| 95 } | 88 } | 
| OLD | NEW | 
|---|