summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-11 19:45:19 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-11 19:45:19 +0000
commit34cc1917d8003c107c1c320e5b50fe240de8a010 (patch)
tree4731a3d0036c85308171ec612a4bcd6cd15e1e60 /chrome/browser/views
parent960141c714a764b26ab954773018e68eafc3b97d (diff)
downloadchromium_src-34cc1917d8003c107c1c320e5b50fe240de8a010.zip
chromium_src-34cc1917d8003c107c1c320e5b50fe240de8a010.tar.gz
chromium_src-34cc1917d8003c107c1c320e5b50fe240de8a010.tar.bz2
Add a first attempt at a compact location bar and a status bar. The status bar
contains a clock, an application menu, and a non-working battery indicator. The compact location bar can be toggled by COMPACT_NAV_BAR in browser_window_gtk.cc Review URL: http://codereview.chromium.org/165272 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23070 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r--chrome/browser/views/compact_navigation_bar.cc184
-rw-r--r--chrome/browser/views/compact_navigation_bar.h76
-rw-r--r--chrome/browser/views/frame/browser_view.cc2
-rw-r--r--chrome/browser/views/frame/status_area_view.cc243
-rw-r--r--chrome/browser/views/frame/status_area_view.h62
-rw-r--r--chrome/browser/views/location_bar_view.h12
6 files changed, 572 insertions, 7 deletions
diff --git a/chrome/browser/views/compact_navigation_bar.cc b/chrome/browser/views/compact_navigation_bar.cc
new file mode 100644
index 0000000..50409c5
--- /dev/null
+++ b/chrome/browser/views/compact_navigation_bar.cc
@@ -0,0 +1,184 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/views/compact_navigation_bar.h"
+
+#include "app/gfx/canvas.h"
+#include "app/resource_bundle.h"
+#include "app/theme_provider.h"
+#include "base/logging.h"
+#include "chrome/browser/autocomplete/autocomplete_edit_view_gtk.h"
+#include "chrome/browser/browser.h"
+#include "chrome/browser/profile.h"
+#include "chrome/browser/tab_contents/tab_contents.h"
+#include "grit/theme_resources.h"
+#include "views/controls/button/image_button.h"
+#include "views/controls/image_view.h"
+#include "views/controls/native/native_view_host.h"
+
+// Padding inside each button around the image.
+static const int kInnerPadding = 1;
+
+// Spacing between buttons.
+static const int kHorizPadding = 3;
+
+static const int kURLWidth = 150;
+
+static const int kChromeButtonSize = 25;
+
+CompactNavigationBar::CompactNavigationBar(Browser* browser)
+ : browser_(browser),
+ initialized_(false) {
+}
+
+CompactNavigationBar::~CompactNavigationBar() {
+}
+
+void CompactNavigationBar::Init() {
+ DCHECK(!initialized_);
+ initialized_ = true;
+
+ ResourceBundle& resource_bundle = ResourceBundle::GetSharedInstance();
+
+ chrome_button_ = new views::ImageButton(this);
+ chrome_button_->SetImage(views::CustomButton::BS_NORMAL,
+ resource_bundle.GetBitmapNamed(IDR_COMPACTNAV_CHROME));
+ chrome_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
+ views::ImageButton::ALIGN_MIDDLE);
+ AddChildView(chrome_button_);
+
+ back_button_ = new views::ImageButton(this);
+ back_button_->SetImage(views::CustomButton::BS_NORMAL,
+ resource_bundle.GetBitmapNamed(IDR_COMPACTNAV_BACK));
+ back_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
+ views::ImageButton::ALIGN_MIDDLE);
+ AddChildView(back_button_);
+
+ bf_separator_ = new views::ImageView;
+ bf_separator_->SetImage(
+ resource_bundle.GetBitmapNamed(IDR_COMPACTNAV_SEPARATOR));
+ AddChildView(bf_separator_);
+
+ forward_button_ = new views::ImageButton(this);
+ forward_button_->SetImage(views::CustomButton::BS_NORMAL,
+ resource_bundle.GetBitmapNamed(IDR_COMPACTNAV_FORWARD));
+ forward_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
+ views::ImageButton::ALIGN_MIDDLE);
+ AddChildView(forward_button_);
+
+ // URL bar construction.
+ location_entry_.reset(new AutocompleteEditViewGtk(
+ this, browser_->toolbar_model(), browser_->profile(),
+ browser_->command_updater(), false, this));
+ location_entry_->Init();
+ gtk_widget_show_all(location_entry_->widget());
+ gtk_widget_hide(location_entry_->widget());
+
+ location_entry_view_ = new views::NativeViewHost;
+ AddChildView(location_entry_view_);
+ location_entry_view_->set_focus_view(this);
+ location_entry_view_->Attach(location_entry_->widget());
+}
+
+gfx::Size CompactNavigationBar::GetPreferredSize() {
+ int width = 0;
+
+ width += kChromeButtonSize + kHorizPadding; // Chrome button.
+ width += kURLWidth + kHorizPadding; // URL bar.
+ width += back_button_->GetPreferredSize().width() + kHorizPadding +
+ kInnerPadding * 2;
+ width += bf_separator_->GetPreferredSize().width() + kHorizPadding;
+ width += forward_button_->GetPreferredSize().width() + kHorizPadding +
+ kInnerPadding * 2;
+
+ return gfx::Size(width, kChromeButtonSize);
+}
+
+void CompactNavigationBar::Layout() {
+ if (!initialized_)
+ return;
+
+ int curx = 0;
+
+ // Make the chrome button square since it looks better that way.
+ chrome_button_->SetBounds(curx, 0, kChromeButtonSize, kChromeButtonSize);
+ curx += kChromeButtonSize + kHorizPadding;
+
+ // URL bar.
+ location_entry_view_->SetBounds(curx, 0, kURLWidth, height());
+ curx += kURLWidth + kHorizPadding;
+
+ // "Back | Forward" section.
+ gfx::Size button_size = back_button_->GetPreferredSize();
+ button_size.set_width(button_size.width() + kInnerPadding * 2);
+ back_button_->SetBounds(curx, 1, button_size.width(), height() - 1);
+ curx += button_size.width() + kHorizPadding;
+
+ button_size = bf_separator_->GetPreferredSize();
+ bf_separator_->SetBounds(curx, 1, button_size.width(), height() - 1);
+ curx += button_size.width() + kHorizPadding;
+
+ button_size = forward_button_->GetPreferredSize();
+ button_size.set_width(button_size.width() + kInnerPadding * 2);
+ forward_button_->SetBounds(curx, 1, button_size.width(), height() - 1);
+ curx += button_size.width() + kHorizPadding;
+}
+
+void CompactNavigationBar::Paint(gfx::Canvas* canvas) {
+ ThemeProvider* theme = browser_->profile()->GetThemeProvider();
+
+ // Fill the background.
+ SkBitmap* background = theme->GetBitmapNamed(IDR_THEME_FRAME);
+ canvas->TileImageInt(*background, 0, 0, width(), height());
+}
+
+void CompactNavigationBar::ButtonPressed(views::Button* sender) {
+ TabContents* tab_contents = browser_->GetSelectedTabContents();
+ if (!tab_contents)
+ return;
+
+ if (sender == chrome_button_) {
+ NOTIMPLEMENTED(); // TODO(brettw) hook this up to something.
+ } else if (sender == back_button_) {
+ if (tab_contents->controller().CanGoBack())
+ tab_contents->controller().GoBack();
+ } else if (sender == forward_button_) {
+ if (tab_contents->controller().CanGoForward())
+ tab_contents->controller().GoForward();
+ } else {
+ NOTREACHED();
+ }
+}
+
+void CompactNavigationBar::OnAutocompleteAccept(
+ const GURL& url,
+ WindowOpenDisposition disposition,
+ PageTransition::Type transition,
+ const GURL& alternate_nav_url) {
+ // Add the new tab at the first non-pinned location.
+ int index = browser_->tabstrip_model()->IndexOfFirstNonPinnedTab();
+ browser_->AddTabWithURL(url, GURL(), PageTransition::TYPED,
+ true, index, true, NULL);
+}
+
+void CompactNavigationBar::OnChanged() {
+ // Other one does "DoLayout" here.
+}
+
+void CompactNavigationBar::OnInputInProgress(bool in_progress) {
+}
+
+SkBitmap CompactNavigationBar::GetFavIcon() const {
+ return SkBitmap();
+}
+
+std::wstring CompactNavigationBar::GetTitle() const {
+ return std::wstring();
+}
+
+gfx::Rect CompactNavigationBar::GetPopupBounds() const {
+ gfx::Point upper_left(0, height());
+ ConvertPointToScreen(this, &upper_left);
+ return gfx::Rect(upper_left.x(), upper_left.y(), 700, 100);
+}
diff --git a/chrome/browser/views/compact_navigation_bar.h b/chrome/browser/views/compact_navigation_bar.h
new file mode 100644
index 0000000..02cb5d4
--- /dev/null
+++ b/chrome/browser/views/compact_navigation_bar.h
@@ -0,0 +1,76 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_VIEWS_COMPACT_NAVIGATION_BAR_H_
+#define CHROME_BROWSER_VIEWS_COMPACT_NAVIGATION_BAR_H_
+
+#include "base/basictypes.h"
+#include "base/scoped_ptr.h"
+#include "chrome/browser/autocomplete/autocomplete_edit.h"
+#include "chrome/browser/autocomplete/autocomplete_popup_view.h"
+#include "views/controls/button/button.h"
+#include "views/view.h"
+
+class AutocompleteEditViewGtk;
+class Browser;
+
+namespace views {
+class ImageButton;
+class ImageView;
+class NativeViewHost;
+}
+
+// This class provides a small navigation bar that includes back, forward, and
+// a small text entry box.
+class CompactNavigationBar : public views::View,
+ public views::ButtonListener,
+ public AutocompleteEditController,
+ public AutocompletePopupPositioner {
+ public:
+ explicit CompactNavigationBar(Browser* browser);
+ virtual ~CompactNavigationBar();
+
+ // Must be called before anything else, but after adding this view to the
+ // widget.
+ void Init();
+
+ // views::View overrides.
+ virtual gfx::Size GetPreferredSize();
+ virtual void Layout();
+ virtual void Paint(gfx::Canvas* canvas);
+
+ private:
+ // views::ButtonListener implementation.
+ virtual void ButtonPressed(views::Button* sender);
+
+ // AutocompleteController implementation.
+ virtual void OnAutocompleteAccept(const GURL& url,
+ WindowOpenDisposition disposition,
+ PageTransition::Type transition,
+ const GURL& alternate_nav_url);
+ virtual void OnChanged();
+ virtual void OnInputInProgress(bool in_progress);
+ virtual SkBitmap GetFavIcon() const;
+ virtual std::wstring GetTitle() const;
+
+ // AutocompletePopupPositioner implementation.
+ virtual gfx::Rect GetPopupBounds() const;
+
+ Browser* browser_;
+
+ bool initialized_;
+
+ views::ImageButton* chrome_button_;
+
+ views::ImageButton* back_button_;
+ views::ImageView* bf_separator_;
+ views::ImageButton* forward_button_;
+
+ scoped_ptr<AutocompleteEditViewGtk> location_entry_;
+ views::NativeViewHost* location_entry_view_;
+
+ DISALLOW_COPY_AND_ASSIGN(CompactNavigationBar);
+};
+
+#endif // CHROME_BROWSER_VIEWS_COMPACT_NAVIGATION_BAR_H_
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index 85b8999..84cbf69 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
diff --git a/chrome/browser/views/frame/status_area_view.cc b/chrome/browser/views/frame/status_area_view.cc
new file mode 100644
index 0000000..c574247
--- /dev/null
+++ b/chrome/browser/views/frame/status_area_view.cc
@@ -0,0 +1,243 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/views/frame/status_area_view.h"
+
+#include <algorithm>
+
+#include "app/gfx/canvas.h"
+#include "app/gfx/font.h"
+#include "app/l10n_util.h"
+#include "app/resource_bundle.h"
+#include "app/theme_provider.h"
+#include "base/string_util.h"
+#include "base/time.h"
+#include "base/timer.h"
+#include "chrome/app/chrome_dll_resource.h"
+#include "chrome/browser/browser.h"
+#include "chrome/browser/profile.h"
+#include "grit/chromium_strings.h"
+#include "grit/generated_resources.h"
+#include "grit/theme_resources.h"
+#include "views/controls/button/menu_button.h"
+#include "views/controls/image_view.h"
+#include "views/controls/menu/menu.h"
+#include "views/controls/menu/simple_menu_model.h"
+
+namespace {
+
+// Number of pixels to separate adjacent status items.
+const int kStatusItemSeparation = 1;
+
+class ClockView : public views::View {
+ public:
+ ClockView();
+ virtual ~ClockView();
+
+ // views::View* overrides.
+ virtual gfx::Size GetPreferredSize();
+ virtual void Paint(gfx::Canvas* canvas);
+
+ private:
+ // Schedules the timer to fire at the next minute interval.
+ void SetNextTimer();
+
+ // Schedules a paint when the timer goes off.
+ void OnTimer();
+
+ gfx::Font font_;
+
+ base::OneShotTimer<ClockView> timer_;
+
+ DISALLOW_COPY_AND_ASSIGN(ClockView);
+};
+
+// Amount of slop to add into the timer to make sure we're into the next minute
+// when the timer goes off.
+const int kTimerSlopSeconds = 1;
+
+ClockView::ClockView()
+ : font_(ResourceBundle::GetSharedInstance().GetFont(
+ ResourceBundle::BaseFont)) {
+ SetNextTimer();
+}
+
+ClockView::~ClockView() {
+}
+
+gfx::Size ClockView::GetPreferredSize() {
+ return gfx::Size(40, 10);
+}
+
+void ClockView::Paint(gfx::Canvas* canvas) {
+ base::Time now = base::Time::Now();
+ base::Time::Exploded now_exploded;
+ now.LocalExplode(&now_exploded);
+
+ std::wstring time_string = StringPrintf(L"%d:%d",
+ now_exploded.hour,
+ now_exploded.minute);
+ canvas->DrawStringInt(time_string, font_, SK_ColorWHITE, 0, 0,
+ width(), height(), gfx::Canvas::TEXT_ALIGN_CENTER);
+}
+
+void ClockView::SetNextTimer() {
+ // Try to set the timer to go off at the next change of the minute. We don't
+ // want to have the timer go off more than necessary since that will cause
+ // the CPU to wake up and consume power.
+ base::Time now = base::Time::Now();
+ base::Time::Exploded exploded;
+ now.LocalExplode(&exploded);
+
+ // Often this will be called at minute boundaries, and we'll actually want
+ // 60 seconds from now.
+ int seconds_left = 60 - exploded.second;
+ if (seconds_left == 0)
+ seconds_left = 60;
+
+ // Make sure that the timer fires on the next minute. Without this, if it is
+ // called just a teeny bit early, then it will skip the next minute.
+ seconds_left += kTimerSlopSeconds;
+
+ timer_.Start(base::TimeDelta::FromSeconds(seconds_left),
+ this, &ClockView::OnTimer);
+}
+
+void ClockView::OnTimer() {
+ SchedulePaint();
+ SetNextTimer();
+}
+
+} // namespace
+
+StatusAreaView::StatusAreaView(Browser* browser)
+ : browser_(browser),
+ battery_view_(NULL),
+ menu_view_(NULL) {
+}
+
+StatusAreaView::~StatusAreaView() {
+}
+
+void StatusAreaView::Init() {
+ ResourceBundle& resource_bundle = ResourceBundle::GetSharedInstance();
+
+ // Battery.
+ battery_view_ = new views::ImageView;
+ battery_view_->SetImage(
+ resource_bundle.GetBitmapNamed(IDR_STATUSBAR_BATTERY));
+ AddChildView(battery_view_);
+
+ // Clock.
+ AddChildView(new ClockView);
+
+ // Menu.
+ menu_view_ = new views::MenuButton(NULL, std::wstring(), this, false);
+ menu_view_->SetIcon(*resource_bundle.GetBitmapNamed(IDR_STATUSBAR_MENU));
+ AddChildView(menu_view_);
+}
+
+gfx::Size StatusAreaView::GetPreferredSize() {
+ int result_w = kStatusItemSeparation; // Left border.
+ int result_h = 0;
+ for (int i = 0; i < GetChildViewCount(); i++) {
+ gfx::Size cur_size = GetChildViewAt(i)->GetPreferredSize();
+ result_w += cur_size.width() + kStatusItemSeparation;
+ result_h = std::max(result_h, cur_size.height());
+ }
+ result_w -= kStatusItemSeparation; // Don't have space after the last one.
+
+ // TODO(brettw) do we need to use result_h? This is currently hardcoded
+ // becuase the menu button really wants to be larger, but we don't want
+ // the status bar to force the whole tab strip to be larger. Making it
+ // "small" just means that we'll expand to the height, which we want.
+ return gfx::Size(result_w - kStatusItemSeparation, 10);
+}
+
+void StatusAreaView::Layout() {
+ int cur_x = 0;
+ for (int i = 0; i < GetChildViewCount(); i++) {
+ views::View* cur = GetChildViewAt(i);
+ gfx::Size cur_size = cur->GetPreferredSize();
+
+ // Put next in row horizontally, and center vertically.
+ cur->SetBounds(cur_x, (height() - cur_size.height()) / 2,
+ cur_size.width(), cur_size.height());
+ cur_x += cur_size.width() + kStatusItemSeparation;
+ }
+}
+
+void StatusAreaView::Paint(gfx::Canvas* canvas) {
+ ThemeProvider* theme = browser_->profile()->GetThemeProvider();
+
+ // Fill the background.
+ SkBitmap* background = theme->GetBitmapNamed(IDR_THEME_FRAME);
+ canvas->TileImageInt(*background, 0, 0, width(), height());
+}
+
+void StatusAreaView::CreateAppMenu() {
+ if (app_menu_contents_.get())
+ return;
+
+ app_menu_contents_.reset(new views::SimpleMenuModel(this));
+ app_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB);
+ app_menu_contents_->AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW);
+ app_menu_contents_->AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW,
+ IDS_NEW_INCOGNITO_WINDOW);
+ app_menu_contents_->AddSeparator();
+ app_menu_contents_->AddCheckItemWithStringId(IDC_SHOW_BOOKMARK_BAR,
+ IDS_SHOW_BOOKMARK_BAR);
+ app_menu_contents_->AddItemWithStringId(IDC_FULLSCREEN, IDS_FULLSCREEN);
+ app_menu_contents_->AddSeparator();
+ app_menu_contents_->AddItemWithStringId(IDC_SHOW_HISTORY, IDS_SHOW_HISTORY);
+ app_menu_contents_->AddItemWithStringId(IDC_SHOW_BOOKMARK_MANAGER,
+ IDS_BOOKMARK_MANAGER);
+ app_menu_contents_->AddItemWithStringId(IDC_SHOW_DOWNLOADS,
+ IDS_SHOW_DOWNLOADS);
+ app_menu_contents_->AddSeparator();
+ app_menu_contents_->AddItemWithStringId(IDC_CLEAR_BROWSING_DATA,
+ IDS_CLEAR_BROWSING_DATA);
+ app_menu_contents_->AddItemWithStringId(IDC_IMPORT_SETTINGS,
+ IDS_IMPORT_SETTINGS);
+ app_menu_contents_->AddSeparator();
+ app_menu_contents_->AddItem(IDC_OPTIONS,
+ l10n_util::GetStringFUTF16(
+ IDS_OPTIONS,
+ l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
+ app_menu_contents_->AddItem(IDC_ABOUT,
+ l10n_util::GetStringFUTF16(
+ IDS_ABOUT,
+ l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
+ app_menu_contents_->AddItemWithStringId(IDC_HELP_PAGE, IDS_HELP_PAGE);
+ app_menu_contents_->AddSeparator();
+ app_menu_contents_->AddItemWithStringId(IDC_EXIT, IDS_EXIT);
+
+ app_menu_menu_.reset(new views::Menu2(app_menu_contents_.get()));
+}
+
+bool StatusAreaView::IsCommandIdChecked(int command_id) const {
+ return false;
+}
+
+bool StatusAreaView::IsCommandIdEnabled(int command_id) const {
+ if (command_id == IDC_RESTORE_TAB)
+ return browser_->CanRestoreTab();
+ return browser_->command_updater()->IsCommandEnabled(command_id);
+}
+
+bool StatusAreaView::GetAcceleratorForCommandId(
+ int command_id,
+ views::Accelerator* accelerator) {
+ return false;
+}
+
+void StatusAreaView::ExecuteCommand(int command_id) {
+ browser_->ExecuteCommand(command_id);
+}
+
+void StatusAreaView::RunMenu(views::View* source, const gfx::Point& pt,
+ gfx::NativeView hwnd) {
+ CreateAppMenu();
+ app_menu_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT);
+}
diff --git a/chrome/browser/views/frame/status_area_view.h b/chrome/browser/views/frame/status_area_view.h
new file mode 100644
index 0000000..1be12c8
--- /dev/null
+++ b/chrome/browser/views/frame/status_area_view.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_VIEWS_FRAME_STATUS_AREA_VIEW_H_
+#define CHROME_BROWSER_VIEWS_FRAME_STATUS_AREA_VIEW_H_
+
+#include "base/basictypes.h"
+#include "views/controls/menu/simple_menu_model.h"
+#include "views/controls/menu/view_menu_delegate.h"
+#include "views/view.h"
+
+class Browser;
+
+namespace views {
+class MenuButton;
+class ImageView;
+}
+
+// This class is used to wrap the small informative widgets in the upper-right
+// of the window title bar. It is used on ChromeOS only.
+class StatusAreaView : public views::View,
+ public views::SimpleMenuModel::Delegate,
+ public views::ViewMenuDelegate {
+ public:
+ StatusAreaView(Browser* browser);
+ virtual ~StatusAreaView();
+
+ void Init();
+
+ // views::View* overrides.
+ virtual gfx::Size GetPreferredSize();
+ virtual void Layout();
+ virtual void Paint(gfx::Canvas* canvas);
+
+ private:
+ void CreateAppMenu();
+
+ // views::SimpleMenuModel::Delegate implementation.
+ virtual bool IsCommandIdChecked(int command_id) const;
+ virtual bool IsCommandIdEnabled(int command_id) const;
+ virtual bool GetAcceleratorForCommandId(int command_id,
+ views::Accelerator* accelerator);
+ virtual void ExecuteCommand(int command_id);
+
+ // views::ViewMenuDelegate implementation.
+ virtual void RunMenu(views::View* source, const gfx::Point& pt,
+ gfx::NativeView hwnd);
+
+ // The browser window that owns us.
+ Browser* browser_;
+
+ views::ImageView* battery_view_;
+ views::MenuButton* menu_view_;
+
+ scoped_ptr<views::SimpleMenuModel> app_menu_contents_;
+ scoped_ptr<views::Menu2> app_menu_menu_;
+
+ DISALLOW_COPY_AND_ASSIGN(StatusAreaView);
+};
+
+#endif // CHROME_BROWSER_VIEWS_FRAME_STATUS_AREA_VIEW_H_
diff --git a/chrome/browser/views/location_bar_view.h b/chrome/browser/views/location_bar_view.h
index 1ab1811..3be0266 100644
--- a/chrome/browser/views/location_bar_view.h
+++ b/chrome/browser/views/location_bar_view.h
@@ -238,8 +238,8 @@ class LocationBarView : public LocationBar,
class ShowFirstRunBubbleTask;
class LocationBarImageView : public views::ImageView,
- public InfoBubbleDelegate {
- public:
+ public InfoBubbleDelegate {
+ public:
LocationBarImageView();
virtual ~LocationBarImageView();
@@ -254,10 +254,10 @@ class LocationBarView : public LocationBar,
virtual void ShowInfoBubble() = 0;
- protected:
+ protected:
void ShowInfoBubbleImpl(const std::wstring& text, SkColor text_color);
- private:
+ private:
friend class ShowInfoBubbleTask;
// The currently shown info bubble if any.
@@ -319,7 +319,7 @@ class LocationBarView : public LocationBar,
// PageActionImageView is used to display the icon for a given PageAction
// and notify the extension when the icon is clicked.
class PageActionImageView : public LocationBarImageView {
- public:
+ public:
PageActionImageView(
LocationBarView* owner, Profile* profile,
const PageAction* page_action);
@@ -339,7 +339,7 @@ class LocationBarView : public LocationBar,
// A callback for when the image has loaded.
void OnImageLoaded(SkBitmap* image, size_t index);
- private:
+ private:
// We load the images for the PageActions on the file thread. These tasks
// help with that.
class LoadImageTask;