Index: chrome/browser/ui/toolbar/action_box_button_controller.cc |
diff --git a/chrome/browser/ui/toolbar/action_box_button_controller.cc b/chrome/browser/ui/toolbar/action_box_button_controller.cc |
index 860c1d7f58ef33ad4581bc4ea8ba3850b7171cc3..2e182a3b537d739517016258ab1b9ed7e33694a2 100644 |
--- a/chrome/browser/ui/toolbar/action_box_button_controller.cc |
+++ b/chrome/browser/ui/toolbar/action_box_button_controller.cc |
@@ -8,10 +8,12 @@ |
#include "base/metrics/histogram.h" |
#include "base/utf_string_conversions.h" |
#include "chrome/app/chrome_command_ids.h" |
+#include "chrome/browser/chrome_to_mobile_service.h" |
#include "chrome/browser/extensions/api/page_launcher/page_launcher_api.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_system.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_commands.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
@@ -25,6 +27,10 @@ |
#include "content/public/browser/render_widget_host_view.h" |
#include "content/public/browser/user_metrics.h" |
#include "content/public/browser/web_contents.h" |
+#include "grit/generated_resources.h" |
+#include "grit/theme_resources.h" |
+#include "ui/base/resource/resource_bundle.h" |
+ |
using content::UserMetricsAction; |
using content::WebContents; |
@@ -48,26 +54,52 @@ ActionBoxButtonController::ActionBoxButtonController(Browser* browser, |
ActionBoxButtonController::~ActionBoxButtonController() {} |
-void ActionBoxButtonController::OnButtonClicked() { |
+scoped_ptr<ActionBoxMenuModel> ActionBoxButtonController::CreateMenuModel() { |
// Build a menu model and display the menu. |
scoped_ptr<ActionBoxMenuModel> menu_model( |
- new ActionBoxMenuModel(browser_, this)); |
+ new ActionBoxMenuModel(browser_->profile(), this)); |
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
+ |
+ // In some unit tests, GetActiveWebContents can return NULL. |
+ bool starred = browser_->tab_strip_model()->GetActiveWebContents() && |
+ BookmarkTabHelper::FromWebContents(browser_->tab_strip_model()-> |
+ GetActiveWebContents())->is_starred(); |
+ menu_model->AddItemWithStringId( |
+ IDC_BOOKMARK_PAGE_FROM_STAR, |
+ starred ? IDS_TOOLTIP_STARRED : IDS_TOOLTIP_STAR); |
+ menu_model->SetIcon( |
+ menu_model->GetIndexOfCommandId(IDC_BOOKMARK_PAGE_FROM_STAR), |
+ rb.GetNativeImageNamed(starred ? IDR_STAR_LIT : IDR_STAR)); |
+ |
+ // TODO(msw): Show the item as disabled for chrome: and file: scheme pages? |
+ if (ChromeToMobileService::UpdateAndGetCommandState(browser_)) { |
+ menu_model->AddItemWithStringId(IDC_CHROME_TO_MOBILE_PAGE, |
+ IDS_CHROME_TO_MOBILE_BUBBLE_TOOLTIP); |
+ menu_model->SetIcon( |
+ menu_model->GetIndexOfCommandId(IDC_CHROME_TO_MOBILE_PAGE), |
+ rb.GetNativeImageNamed(IDR_MOBILE)); |
+ } |
- const ExtensionSet* extensions = |
+ ExtensionService* extension_service = |
extensions::ExtensionSystem::Get(browser_->profile())-> |
- extension_service()->extensions(); |
- for (ExtensionSet::const_iterator it = extensions->begin(); |
- it != extensions->end(); ++it) { |
- const extensions::Extension* extension = *it; |
- if (ActionInfo::GetPageLauncherInfo(extension)) { |
- int command_id = GetCommandIdForExtension(*extension); |
- menu_model->AddExtension(*extension, command_id); |
+ extension_service(); |
+ if (extension_service) { |
+ const ExtensionSet* extensions = extension_service->extensions(); |
+ for (ExtensionSet::const_iterator it = extensions->begin(); |
+ it != extensions->end(); ++it) { |
+ const extensions::Extension* extension = *it; |
+ if (ActionInfo::GetPageLauncherInfo(extension)) { |
+ int command_id = GetCommandIdForExtension(*extension); |
+ menu_model->AddExtension(*extension, command_id); |
+ } |
} |
} |
- content::RecordAction(UserMetricsAction("ActionBox.ClickButton")); |
+ return menu_model.Pass(); |
+} |
- // And show the menu. |
- delegate_->ShowMenu(menu_model.Pass()); |
+void ActionBoxButtonController::OnButtonClicked() { |
+ content::RecordAction(UserMetricsAction("ActionBox.ClickButton")); |
+ delegate_->ShowMenu(CreateMenuModel()); |
} |
bool ActionBoxButtonController::IsCommandIdChecked(int command_id) const { |