| Index: chrome/browser/ui/toolbar/wrench_menu_model.cc
|
| diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.cc b/chrome/browser/ui/toolbar/wrench_menu_model.cc
|
| index 7b26e51f45efe21aada9c7fc4bac26e458e26cbe..74295168a87a9b349398d076d82aab46a0306116 100644
|
| --- a/chrome/browser/ui/toolbar/wrench_menu_model.cc
|
| +++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc
|
| @@ -23,6 +23,9 @@
|
| #include "chrome/browser/task_manager/task_manager.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| +#include "chrome/browser/ui/global_error_delegate.h"
|
| +#include "chrome/browser/ui/global_error_service.h"
|
| +#include "chrome/browser/ui/global_error_service_factory.h"
|
| #include "chrome/browser/ui/toolbar/encoding_menu_controller.h"
|
| #include "chrome/browser/upgrade_detector.h"
|
| #include "chrome/common/chrome_paths.h"
|
| @@ -39,6 +42,7 @@
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/models/button_menu_item_model.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/gfx/image/image.h"
|
|
|
| #if defined(TOOLKIT_USES_GTK)
|
| #include <gtk/gtk.h>
|
| @@ -315,10 +319,23 @@ bool WrenchMenuModel::GetIconForCommandId(int command_id,
|
| default:
|
| break;
|
| }
|
| +
|
| return false;
|
| }
|
|
|
| void WrenchMenuModel::ExecuteCommand(int command_id) {
|
| + const std::vector<GlobalErrorDelegate*>& errors =
|
| + GlobalErrorServiceFactory::GetForProfile(
|
| + browser_->profile())->GetErrorDelegates();
|
| + for (std::vector<GlobalErrorDelegate*>::const_iterator
|
| + it = errors.begin(); it != errors.end(); ++it) {
|
| + GlobalErrorDelegate* error = *it;
|
| + if (error->HasMenuItem() && command_id == error->MenuItemCommandID()) {
|
| + error->ExecuteMenuItem(browser_);
|
| + return;
|
| + }
|
| + }
|
| +
|
| browser_->ExecuteCommand(command_id);
|
| }
|
|
|
| @@ -333,6 +350,16 @@ bool WrenchMenuModel::IsCommandIdChecked(int command_id) const {
|
| }
|
|
|
| bool WrenchMenuModel::IsCommandIdEnabled(int command_id) const {
|
| + const std::vector<GlobalErrorDelegate*>& errors =
|
| + GlobalErrorServiceFactory::GetForProfile(
|
| + browser_->profile())->GetErrorDelegates();
|
| + for (std::vector<GlobalErrorDelegate*>::const_iterator
|
| + it = errors.begin(); it != errors.end(); ++it) {
|
| + GlobalErrorDelegate* error = *it;
|
| + if (error->HasMenuItem() && command_id == error->MenuItemCommandID())
|
| + return true;
|
| + }
|
| +
|
| return browser_->command_updater()->IsCommandEnabled(command_id);
|
| }
|
|
|
| @@ -408,6 +435,8 @@ WrenchMenuModel::WrenchMenuModel()
|
|
|
| #if !defined(OS_CHROMEOS)
|
| void WrenchMenuModel::Build() {
|
| + ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| +
|
| AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB);
|
| AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW);
|
| AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW);
|
| @@ -498,13 +527,29 @@ void WrenchMenuModel::Build() {
|
| IDS_VIEW_INCOMPATIBILITIES));
|
|
|
| #if defined(OS_WIN)
|
| - ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| SetIcon(GetIndexOfCommandId(IDC_VIEW_INCOMPATIBILITIES),
|
| *rb.GetBitmapNamed(IDR_CONFLICT_MENU));
|
| #endif
|
|
|
| AddItemWithStringId(IDC_HELP_PAGE, IDS_HELP_PAGE);
|
|
|
| + const std::vector<GlobalErrorDelegate*>& errors =
|
| + GlobalErrorServiceFactory::GetForProfile(
|
| + browser_->profile())->GetErrorDelegates();
|
| + for (std::vector<GlobalErrorDelegate*>::const_iterator
|
| + it = errors.begin(); it != errors.end(); ++it) {
|
| + GlobalErrorDelegate* error = *it;
|
| + if (error->HasMenuItem()) {
|
| + AddItem(error->MenuItemCommandID(), error->MenuItemLabel());
|
| + int icon_id = error->MenuItemIconResourceID();
|
| + if (icon_id) {
|
| + gfx::Image& image = rb.GetImageNamed(icon_id);
|
| + SetIcon(GetIndexOfCommandId(error->MenuItemCommandID()),
|
| + *image.ToSkBitmap());
|
| + }
|
| + }
|
| + }
|
| +
|
| if (browser_defaults::kShowExitMenuItem) {
|
| AddSeparator();
|
| AddItemWithStringId(IDC_EXIT, IDS_EXIT);
|
|
|