Index: chrome/browser/extensions/extension_action.cc |
diff --git a/chrome/common/extensions/extension_action.cc b/chrome/browser/extensions/extension_action.cc |
similarity index 91% |
rename from chrome/common/extensions/extension_action.cc |
rename to chrome/browser/extensions/extension_action.cc |
index bab5dfbd563094bd9399a0c64bbb4539d0c1440e..b47d67a6793fdeff408b20c9bb68363b377ae312 100644 |
--- a/chrome/common/extensions/extension_action.cc |
+++ b/chrome/browser/extensions/extension_action.cc |
@@ -2,13 +2,15 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/common/extensions/extension_action.h" |
+#include "chrome/browser/extensions/extension_action.h" |
#include <algorithm> |
#include "base/bind.h" |
#include "base/logging.h" |
#include "base/message_loop.h" |
+#include "chrome/browser/extensions/extension_service.h" |
+#include "chrome/browser/extensions/extension_system.h" |
#include "chrome/common/badge_util.h" |
#include "googleurl/src/gurl.h" |
#include "grit/theme_resources.h" |
@@ -232,19 +234,36 @@ ExtensionAction::IconAnimation::ScopedObserver::~ScopedObserver() { |
icon_animation_->RemoveObserver(observer_); |
} |
-ExtensionAction::ExtensionAction(const std::string& extension_id, |
- Type action_type) |
+ExtensionAction::ExtensionAction( |
+ const std::string& extension_id, |
+ const extensions::Extension::ActionInfo& manifest_info) |
: extension_id_(extension_id), |
- action_type_(action_type), |
+ action_type_(manifest_info.action_type), |
has_changed_(false) { |
+ // Page/script actions are hidden/disabled by default, and browser actions are |
+ // visible/enabled by default. |
+ SetAppearance( |
+ kDefaultTabId, |
+ action_type_ == extensions::Extension::ActionInfo::TYPE_BROWSER ? |
+ ACTIVE : INVISIBLE); |
+ set_default_icon_path(manifest_info.default_icon_path); |
+ set_id(manifest_info.id); |
+ if (!manifest_info.default_title.empty()) |
+ SetTitle(ExtensionAction::kDefaultTabId, manifest_info.default_title); |
+ if (!manifest_info.default_popup_url.is_empty()) { |
+ SetPopupUrl(ExtensionAction::kDefaultTabId, |
+ manifest_info.default_popup_url); |
+ } |
} |
ExtensionAction::~ExtensionAction() { |
} |
scoped_ptr<ExtensionAction> ExtensionAction::CopyForTest() const { |
+ |
scoped_ptr<ExtensionAction> copy( |
- new ExtensionAction(extension_id_, action_type_)); |
+ new ExtensionAction(extension_id_, |
+ extensions::Extension::ActionInfo(action_type_))); |
copy->popup_url_ = popup_url_; |
copy->title_ = title_; |
copy->icon_ = icon_; |
@@ -522,3 +541,21 @@ void ExtensionAction::RunIconAnimation(int tab_id) { |
base::Bind(&DestroyIconAnimation, base::Passed(icon_animation.Pass())), |
base::TimeDelta::FromMilliseconds(kIconFadeInDurationMs * 2)); |
} |
+ |
+namespace extensions { |
+ |
+ExtensionAction* GetBrowserAction(Profile* profile, |
+ const Extension& extension) { |
+ return ExtensionSystem::Get(profile)->extension_service()-> |
+ GetBrowserAction(extension); |
+} |
+ExtensionAction* GetPageAction(Profile* profile, const Extension& extension) { |
+ return ExtensionSystem::Get(profile)->extension_service()-> |
+ GetPageAction(extension); |
+} |
+ExtensionAction* GetScriptBadge(Profile* profile, const Extension& extension) { |
+ return ExtensionSystem::Get(profile)->extension_service()-> |
+ GetScriptBadge(extension); |
+} |
+ |
+} |