Combine BrowserActionView and BrowserActionButton

No one seems to know why we have BrowserActionView and BrowserActionButton.
Let's combine them for simplicity.

BUG=402526

Review URL: https://codereview.chromium.org/411063003

Cr-Commit-Position: refs/heads/master@{#289092}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289092 0039d316-1c4b-4281-b951-d872f2087c98
parent 620aaedc
......@@ -22,26 +22,25 @@
#include "ui/views/widget/widget.h"
// In the browser actions container's chevron menu, a menu item view's icon
// comes from BrowserActionView::GetIconWithBadge() (which comes from the
// browser action button's icon) when the menu item view is created. But, the
// browser action button's icon may not be loaded in time because it is read
// from file system in another thread.
// comes from BrowserActionView::GetIconWithBadge() when the menu item view is
// created. But, the browser action's icon may not be loaded in time because it
// is read from file system in another thread.
// The IconUpdater will update the menu item view's icon when the browser
// action button's icon has been updated.
class IconUpdater : public BrowserActionButton::IconObserver {
// action's icon has been updated.
class IconUpdater : public BrowserActionView::IconObserver {
public:
IconUpdater(views::MenuItemView* menu_item_view, BrowserActionButton* button)
IconUpdater(views::MenuItemView* menu_item_view, BrowserActionView* view)
: menu_item_view_(menu_item_view),
button_(button) {
view_(view) {
DCHECK(menu_item_view);
DCHECK(button);
button->set_icon_observer(this);
DCHECK(view);
view->set_icon_observer(this);
}
virtual ~IconUpdater() {
button_->set_icon_observer(NULL);
view_->set_icon_observer(NULL);
}
// Overridden from BrowserActionButton::IconObserver:
// Overridden from BrowserActionView::IconObserver:
virtual void OnIconUpdated(const gfx::ImageSkia& icon) OVERRIDE {
menu_item_view_->SetIcon(icon);
}
......@@ -50,9 +49,9 @@ class IconUpdater : public BrowserActionButton::IconObserver {
// The menu item view whose icon might be updated.
views::MenuItemView* menu_item_view_;
// The button to be observed. When its icon changes, update the corresponding
// The view to be observed. When its icon changes, update the corresponding
// menu item view's icon.
BrowserActionButton* button_;
BrowserActionView* view_;
DISALLOW_COPY_AND_ASSIGN(IconUpdater);
};
......@@ -82,16 +81,16 @@ BrowserActionOverflowMenuController::BrowserActionOverflowMenuController(
BrowserActionView* view = (*views_)[i];
views::MenuItemView* menu_item = menu_->AppendMenuItemWithIcon(
command_id,
base::UTF8ToUTF16(view->button()->extension()->name()),
base::UTF8ToUTF16(view->extension()->name()),
view->GetIconWithBadge());
// Set the tooltip for this item.
base::string16 tooltip = base::UTF8ToUTF16(
view->button()->extension_action()->GetTitle(
view->button()->view_controller()->GetCurrentTabId()));
view->extension_action()->GetTitle(
view->view_controller()->GetCurrentTabId()));
menu_->SetTooltip(tooltip, command_id);
icon_updaters_.push_back(new IconUpdater(menu_item, view->button()));
icon_updaters_.push_back(new IconUpdater(menu_item, view));
++command_id;
}
......@@ -130,13 +129,12 @@ void BrowserActionOverflowMenuController::NotifyBrowserActionViewsDeleting() {
}
bool BrowserActionOverflowMenuController::IsCommandEnabled(int id) const {
BrowserActionButton* button = (*views_)[start_index_ + id - 1]->button();
return button->IsEnabled(button->view_controller()->GetCurrentTabId());
BrowserActionView* view = (*views_)[start_index_ + id - 1];
return view->IsEnabled(view->view_controller()->GetCurrentTabId());
}
void BrowserActionOverflowMenuController::ExecuteCommand(int id) {
BrowserActionView* view = (*views_)[start_index_ + id - 1];
view->button()->view_controller()->ExecuteActionByUser();
(*views_)[start_index_ + id - 1]->view_controller()->ExecuteActionByUser();
}
bool BrowserActionOverflowMenuController::ShowContextMenu(
......@@ -144,13 +142,13 @@ bool BrowserActionOverflowMenuController::ShowContextMenu(
int id,
const gfx::Point& p,
ui::MenuSourceType source_type) {
BrowserActionButton* button = (*views_)[start_index_ + id - 1]->button();
if (!button->extension()->ShowConfigureContextMenus())
BrowserActionView* view = (*views_)[start_index_ + id - 1];
if (!view->extension()->ShowConfigureContextMenus())
return false;
scoped_refptr<ExtensionContextMenuModel> context_menu_contents =
new ExtensionContextMenuModel(
button->extension(), browser_, button->view_controller());
view->extension(), browser_, view->view_controller());
views::MenuRunner context_menu_runner(context_menu_contents.get(),
views::MenuRunner::HAS_MNEMONICS |
views::MenuRunner::IS_NESTED |
......@@ -245,9 +243,7 @@ void BrowserActionOverflowMenuController::WriteDragData(
views::MenuItemView* sender, OSExchangeData* data) {
size_t drag_index;
BrowserActionView* view = ViewForId(sender->GetCommand(), &drag_index);
std::string id = view->button()->extension()->id();
BrowserActionDragData drag_data(id, drag_index);
BrowserActionDragData drag_data(view->extension()->id(), drag_index);
drag_data.Write(owner_->profile(), data);
}
......
......@@ -37,40 +37,39 @@ int BrowserActionTestUtil::VisibleBrowserActions() {
ExtensionAction* BrowserActionTestUtil::GetExtensionAction(int index) {
return extensions::ExtensionActionManager::Get(browser_->profile())->
GetBrowserAction(*GetContainer(browser_)->GetBrowserActionViewAt(index)->
button()->extension());
extension());
}
void BrowserActionTestUtil::InspectPopup(int index) {
GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
GetContainer(browser_)->GetBrowserActionViewAt(index)->
view_controller()->InspectPopup();
}
bool BrowserActionTestUtil::HasIcon(int index) {
return !GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
return !GetContainer(browser_)->GetBrowserActionViewAt(index)->
GetImage(views::Button::STATE_NORMAL).isNull();
}
gfx::Image BrowserActionTestUtil::GetIcon(int index) {
gfx::ImageSkia icon = GetContainer(browser_)->GetBrowserActionViewAt(index)->
button()->GetIconForTest();
GetIconForTest();
return gfx::Image(icon);
}
void BrowserActionTestUtil::Press(int index) {
GetContainer(browser_)->GetBrowserActionViewAt(index)->
button()->view_controller()->ExecuteActionByUser();
view_controller()->ExecuteActionByUser();
}
std::string BrowserActionTestUtil::GetExtensionId(int index) {
BrowserActionButton* button =
GetContainer(browser_)->GetBrowserActionViewAt(index)->button();
return button->extension()->id();
return GetContainer(browser_)->GetBrowserActionViewAt(index)->
extension()->id();
}
std::string BrowserActionTestUtil::GetTooltip(int index) {
base::string16 text;
GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
GetTooltipText(gfx::Point(), &text);
GetContainer(browser_)->GetBrowserActionViewAt(index)->
GetTooltipText(gfx::Point(), &text);
return base::UTF16ToUTF8(text);
}
......
......@@ -48,52 +48,6 @@ const int kBorderInset = 4;
BrowserActionView::BrowserActionView(const Extension* extension,
Browser* browser,
BrowserActionView::Delegate* delegate)
: delegate_(delegate) {
set_id(VIEW_ID_BROWSER_ACTION);
button_.reset(new BrowserActionButton(extension, browser, delegate_));
button_->set_drag_controller(delegate_);
button_->set_owned_by_client();
AddChildView(button_.get());
button_->UpdateState();
}
BrowserActionView::~BrowserActionView() {
}
gfx::ImageSkia BrowserActionView::GetIconWithBadge() {
return button_->GetIconWithBadge();
}
void BrowserActionView::Layout() {
button_->SetBounds(0, 0, width(), height());
}
void BrowserActionView::GetAccessibleState(ui::AXViewState* state) {
state->name = l10n_util::GetStringUTF16(
IDS_ACCNAME_EXTENSIONS_BROWSER_ACTION);
state->role = ui::AX_ROLE_GROUP;
}
gfx::Size BrowserActionView::GetPreferredSize() const {
return gfx::Size(BrowserActionsContainer::IconWidth(false),
BrowserActionsContainer::IconHeight());
}
void BrowserActionView::PaintChildren(gfx::Canvas* canvas,
const views::CullSet& cull_set) {
View::PaintChildren(canvas, cull_set);
ExtensionAction* action = button_->extension_action();
int tab_id = button_->view_controller()->GetCurrentTabId();
if (tab_id >= 0)
action->PaintBadge(canvas, GetLocalBounds(), tab_id);
}
////////////////////////////////////////////////////////////////////////////////
// BrowserActionButton
BrowserActionButton::BrowserActionButton(const Extension* extension,
Browser* browser,
BrowserActionView::Delegate* delegate)
: MenuButton(this, base::string16(), NULL, false),
view_controller_(new ExtensionActionViewController(
extension,
......@@ -104,11 +58,10 @@ BrowserActionButton::BrowserActionButton(const Extension* extension,
delegate_(delegate),
called_registered_extension_command_(false),
icon_observer_(NULL) {
set_id(VIEW_ID_BROWSER_ACTION);
SetHorizontalAlignment(gfx::ALIGN_CENTER);
set_context_menu_controller(view_controller_.get());
// No UpdateState() here because View hierarchy not setup yet. Our parent
// should call UpdateState() after creation.
set_drag_controller(delegate_);
content::NotificationSource notification_source =
content::Source<Profile>(browser->profile()->GetOriginalProfile());
......@@ -129,9 +82,14 @@ BrowserActionButton::BrowserActionButton(const Extension* extension,
chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
content::Source<ThemeService>(
ThemeServiceFactory::GetForProfile(browser->profile())));
UpdateState();
}
BrowserActionView::~BrowserActionView() {
}
void BrowserActionButton::ViewHierarchyChanged(
void BrowserActionView::ViewHierarchyChanged(
const ViewHierarchyChangedDetails& details) {
if (details.is_add && !called_registered_extension_command_ &&
GetFocusManager()) {
......@@ -142,21 +100,36 @@ void BrowserActionButton::ViewHierarchyChanged(
MenuButton::ViewHierarchyChanged(details);
}
void BrowserActionButton::OnDragDone() {
void BrowserActionView::OnDragDone() {
delegate_->OnBrowserActionViewDragDone();
}
void BrowserActionButton::GetAccessibleState(ui::AXViewState* state) {
gfx::Size BrowserActionView::GetPreferredSize() const {
return gfx::Size(BrowserActionsContainer::IconWidth(false),
BrowserActionsContainer::IconHeight());
}
void BrowserActionView::PaintChildren(gfx::Canvas* canvas,
const views::CullSet& cull_set) {
View::PaintChildren(canvas, cull_set);
int tab_id = view_controller_->GetCurrentTabId();
if (tab_id >= 0)
extension_action()->PaintBadge(canvas, GetLocalBounds(), tab_id);
}
void BrowserActionView::GetAccessibleState(ui::AXViewState* state) {
views::MenuButton::GetAccessibleState(state);
state->name = l10n_util::GetStringUTF16(
IDS_ACCNAME_EXTENSIONS_BROWSER_ACTION);
state->role = ui::AX_ROLE_BUTTON;
}
void BrowserActionButton::ButtonPressed(views::Button* sender,
const ui::Event& event) {
void BrowserActionView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
view_controller_->ExecuteActionByUser();
}
void BrowserActionButton::UpdateState() {
void BrowserActionView::UpdateState() {
int tab_id = view_controller_->GetCurrentTabId();
if (tab_id < 0)
return;
......@@ -190,17 +163,17 @@ void BrowserActionButton::UpdateState() {
SetTooltipText(name);
SetAccessibleName(name);
parent()->SchedulePaint();
SchedulePaint();
}
bool BrowserActionButton::IsPopup() {
bool BrowserActionView::IsPopup() {
int tab_id = view_controller_->GetCurrentTabId();
return (tab_id < 0) ? false : extension_action()->HasPopup(tab_id);
}
void BrowserActionButton::Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
void BrowserActionView::Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
switch (type) {
case extensions::NOTIFICATION_EXTENSION_BROWSER_ACTION_UPDATED:
UpdateState();
......@@ -232,7 +205,7 @@ void BrowserActionButton::Observe(int type,
}
}
bool BrowserActionButton::Activate() {
bool BrowserActionView::Activate() {
if (!IsPopup())
return true;
......@@ -248,7 +221,7 @@ bool BrowserActionButton::Activate() {
return false;
}
bool BrowserActionButton::OnMousePressed(const ui::MouseEvent& event) {
bool BrowserActionView::OnMousePressed(const ui::MouseEvent& event) {
if (!event.IsRightMouseButton()) {
return IsPopup() ? MenuButton::OnMousePressed(event) :
LabelButton::OnMousePressed(event);
......@@ -256,7 +229,7 @@ bool BrowserActionButton::OnMousePressed(const ui::MouseEvent& event) {
return false;
}
void BrowserActionButton::OnMouseReleased(const ui::MouseEvent& event) {
void BrowserActionView::OnMouseReleased(const ui::MouseEvent& event) {
if (IsPopup() || view_controller_->is_menu_running()) {
// TODO(erikkay) this never actually gets called (probably because of the
// loss of focus).
......@@ -266,47 +239,47 @@ void BrowserActionButton::OnMouseReleased(const ui::MouseEvent& event) {
}
}
void BrowserActionButton::OnMouseExited(const ui::MouseEvent& event) {
void BrowserActionView::OnMouseExited(const ui::MouseEvent& event) {
if (IsPopup() || view_controller_->is_menu_running())
MenuButton::OnMouseExited(event);
else
LabelButton::OnMouseExited(event);
}
bool BrowserActionButton::OnKeyReleased(const ui::KeyEvent& event) {
bool BrowserActionView::OnKeyReleased(const ui::KeyEvent& event) {
return IsPopup() ? MenuButton::OnKeyReleased(event) :
LabelButton::OnKeyReleased(event);
}
void BrowserActionButton::OnGestureEvent(ui::GestureEvent* event) {
void BrowserActionView::OnGestureEvent(ui::GestureEvent* event) {
if (IsPopup())
MenuButton::OnGestureEvent(event);
else
LabelButton::OnGestureEvent(event);
}
scoped_ptr<LabelButtonBorder> BrowserActionButton::CreateDefaultBorder() const {
scoped_ptr<LabelButtonBorder> BrowserActionView::CreateDefaultBorder() const {
scoped_ptr<LabelButtonBorder> border = LabelButton::CreateDefaultBorder();
border->set_insets(gfx::Insets(kBorderInset, kBorderInset,
kBorderInset, kBorderInset));
return border.Pass();
}
void BrowserActionButton::SetButtonPushed() {
void BrowserActionView::SetButtonPushed() {
SetState(views::CustomButton::STATE_PRESSED);
menu_visible_ = true;
}
void BrowserActionButton::SetButtonNotPushed() {
void BrowserActionView::SetButtonNotPushed() {
SetState(views::CustomButton::STATE_NORMAL);
menu_visible_ = false;
}
bool BrowserActionButton::IsEnabled(int tab_id) const {
bool BrowserActionView::IsEnabled(int tab_id) const {
return view_controller_->extension_action()->GetIsVisible(tab_id);
}
gfx::ImageSkia BrowserActionButton::GetIconWithBadge() {
gfx::ImageSkia BrowserActionView::GetIconWithBadge() {
int tab_id = view_controller_->GetCurrentTabId();
gfx::Size spacing(0, ToolbarView::kVertSpacing);
gfx::ImageSkia icon = *view_controller_->GetIcon(tab_id).ToImageSkia();
......@@ -315,32 +288,29 @@ gfx::ImageSkia BrowserActionButton::GetIconWithBadge() {
return extension_action()->GetIconWithBadge(icon, tab_id, spacing);
}
gfx::ImageSkia BrowserActionButton::GetIconForTest() {
gfx::ImageSkia BrowserActionView::GetIconForTest() {
return GetImage(views::Button::STATE_NORMAL);
}
BrowserActionButton::~BrowserActionButton() {
}
void BrowserActionButton::OnIconUpdated() {
void BrowserActionView::OnIconUpdated() {
UpdateState();
if (icon_observer_)
icon_observer_->OnIconUpdated(GetIconWithBadge());
}
views::View* BrowserActionButton::GetAsView() {
views::View* BrowserActionView::GetAsView() {
return this;
}
bool BrowserActionButton::IsShownInMenu() {
bool BrowserActionView::IsShownInMenu() {
return delegate_->ShownInsideMenu();
}
views::FocusManager* BrowserActionButton::GetFocusManagerForAccelerator() {
views::FocusManager* BrowserActionView::GetFocusManagerForAccelerator() {
return GetFocusManager();
}
views::Widget* BrowserActionButton::GetParentForContextMenu() {
views::Widget* BrowserActionView::GetParentForContextMenu() {
// RunMenuAt expects a nested menu to be parented by the same widget as the
// already visible menu, in this case the Chrome menu.
return delegate_->ShownInsideMenu() ?
......@@ -349,28 +319,28 @@ views::Widget* BrowserActionButton::GetParentForContextMenu() {
GetWidget();
}
views::View* BrowserActionButton::GetReferenceViewForPopup() {
views::View* BrowserActionView::GetReferenceViewForPopup() {
// Browser actions in the overflow menu can still show popups, so we may need
// a reference view other than this button's parent. If so, use the overflow
// view.
return parent()->visible() ? this : delegate_->GetOverflowReferenceView();
return visible() ? this : delegate_->GetOverflowReferenceView();
}
content::WebContents* BrowserActionButton::GetCurrentWebContents() {
content::WebContents* BrowserActionView::GetCurrentWebContents() {
return delegate_->GetCurrentWebContents();
}
void BrowserActionButton::HideActivePopup() {
void BrowserActionView::HideActivePopup() {
delegate_->HideActivePopup();
}
void BrowserActionButton::OnPopupShown(bool grant_tab_permissions) {
void BrowserActionView::OnPopupShown(bool grant_tab_permissions) {
delegate_->SetPopupOwner(this);
if (grant_tab_permissions)
SetButtonPushed();
}
void BrowserActionButton::CleanupPopup() {
void BrowserActionView::CleanupPopup() {
// We need to do these actions synchronously (instead of closing and then
// performing the rest of the cleanup in OnWidgetDestroyed()) because
// OnWidgetDestroyed() can be called asynchronously from Close(), and we need
......@@ -379,10 +349,10 @@ void BrowserActionButton::CleanupPopup() {
delegate_->SetPopupOwner(NULL);
}
void BrowserActionButton::OnWillShowContextMenus() {
void BrowserActionView::OnWillShowContextMenus() {
SetButtonPushed();
}
void BrowserActionButton::OnContextMenuDone() {
void BrowserActionView::OnContextMenuDone() {
SetButtonNotPushed();
}
......@@ -15,7 +15,6 @@
#include "ui/views/view.h"
class Browser;
class BrowserActionButton;
class ExtensionAction;
namespace extensions {
......@@ -28,9 +27,16 @@ class Image;
////////////////////////////////////////////////////////////////////////////////
// BrowserActionView
// A single entry in the browser action container. This contains the actual
// BrowserActionButton, as well as the logic to paint the badge.
class BrowserActionView : public views::View {
// A wrapper around an ExtensionActionViewController to display an extension
// action in the BrowserActionsContainer.
// Despite its name, this class can handle either Browser Actions or Page
// Actions.
// TODO(devlin): Rename this and BrowserActionsContainer when more of the
// toolbar redesign is done.
class BrowserActionView : public views::MenuButton,
public ExtensionActionViewDelegate,
public views::ButtonListener,
public content::NotificationObserver {
public:
// Need DragController here because BrowserActionView could be
// dragged/dropped.
......@@ -56,7 +62,7 @@ class BrowserActionView : public views::View {
virtual views::View* GetOverflowReferenceView() = 0;
// Sets the delegate's active popup owner to be |popup_owner|.
virtual void SetPopupOwner(BrowserActionButton* popup_owner) = 0;
virtual void SetPopupOwner(BrowserActionView* popup_owner) = 0;
// Hides the active popup of the delegate, if one exists.
virtual void HideActivePopup() = 0;
......@@ -65,47 +71,6 @@ class BrowserActionView : public views::View {
virtual ~Delegate() {}
};
BrowserActionView(const extensions::Extension* extension,
Browser* browser,
Delegate* delegate);
virtual ~BrowserActionView();
BrowserActionButton* button() { return button_.get(); }
// Gets browser action button icon with the badge.
gfx::ImageSkia GetIconWithBadge();
// Overridden from views::View:
virtual void Layout() OVERRIDE;
virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
virtual gfx::Size GetPreferredSize() const OVERRIDE;
protected:
// Overridden from views::View to paint the badge on top of children.
virtual void PaintChildren(gfx::Canvas* canvas,
const views::CullSet& cull_set) OVERRIDE;
private:
// Usually a container for this view.
Delegate* delegate_;
// The button this view contains.
scoped_ptr<BrowserActionButton> button_;
DISALLOW_COPY_AND_ASSIGN(BrowserActionView);
};
////////////////////////////////////////////////////////////////////////////////
// BrowserActionButton
// The BrowserActionButton is a specialization of the MenuButton class.
// This wraps an ExtensionActionView, and has knowledge of how to render itself
// and when to trigger the extension action.
class BrowserActionButton : public views::MenuButton,
public ExtensionActionViewDelegate,
public views::ButtonListener,
public content::NotificationObserver {
public:
// The IconObserver will receive a notification when the button's icon has
// been updated.
class IconObserver {
......@@ -116,10 +81,10 @@ class BrowserActionButton : public views::MenuButton,
virtual ~IconObserver() {}
};
BrowserActionButton(const extensions::Extension* extension,
BrowserActionView(const extensions::Extension* extension,
Browser* browser,
BrowserActionView::Delegate* delegate);
virtual ~BrowserActionButton();
virtual ~BrowserActionView();
const extensions::Extension* extension() const {
return view_controller_->extension();
......@@ -182,13 +147,15 @@ class BrowserActionButton : public views::MenuButton,
// Returns button icon so it can be accessed during tests.
gfx::ImageSkia GetIconForTest();
protected:
private:
// Overridden from views::View:
virtual void ViewHierarchyChanged(
const ViewHierarchyChangedDetails& details) OVERRIDE;
virtual void OnDragDone() OVERRIDE;
virtual gfx::Size GetPreferredSize() const OVERRIDE;
virtual void PaintChildren(gfx::Canvas* canvas,
const views::CullSet& cull_set) OVERRIDE;
private:
// ExtensionActionViewDelegate:
virtual views::View* GetAsView() OVERRIDE;
virtual bool IsShownInMenu() OVERRIDE;
......@@ -218,7 +185,7 @@ class BrowserActionButton : public views::MenuButton,
// updated.
IconObserver* icon_observer_;
DISALLOW_COPY_AND_ASSIGN(BrowserActionButton);
DISALLOW_COPY_AND_ASSIGN(BrowserActionView);
};
#endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_
......@@ -213,7 +213,7 @@ BrowserActionView* BrowserActionsContainer::GetBrowserActionView(
ExtensionAction* action) {
for (BrowserActionViews::iterator i(browser_action_views_.begin());
i != browser_action_views_.end(); ++i) {
if ((*i)->button()->extension_action() == action)
if ((*i)->extension_action() == action)
return *i;
}
return NULL;
......@@ -221,7 +221,7 @@ BrowserActionView* BrowserActionsContainer::GetBrowserActionView(
void BrowserActionsContainer::RefreshBrowserActionViews() {
for (size_t i = 0; i < browser_action_views_.size(); ++i)
browser_action_views_[i]->button()->UpdateState();
browser_action_views_[i]->UpdateState();
}
void BrowserActionsContainer::CreateBrowserActionViews() {
......@@ -294,7 +294,7 @@ views::View* BrowserActionsContainer::GetOverflowReferenceView() {
return chevron_;
}
void BrowserActionsContainer::SetPopupOwner(BrowserActionButton* popup_owner) {
void BrowserActionsContainer::SetPopupOwner(BrowserActionView* popup_owner) {
// We should never be setting a popup owner when one already exists.
DCHECK(!popup_owner_ || !popup_owner);
popup_owner_ = popup_owner;
......@@ -525,7 +525,7 @@ int BrowserActionsContainer::OnPerformDrop(
return ui::DragDropTypes::DRAG_NONE;
// Make sure we have the same view as we started with.
DCHECK_EQ(browser_action_views_[data.index()]->button()->extension()->id(),
DCHECK_EQ(browser_action_views_[data.index()]->extension()->id(),
data.id());
DCHECK(model_);
......@@ -545,7 +545,7 @@ int BrowserActionsContainer::OnPerformDrop(
i = model_->IncognitoIndexToOriginal(i);
model_->MoveBrowserAction(
browser_action_views_[data.index()]->button()->extension(), i);
browser_action_views_[data.index()]->extension(), i);
OnDragExited(); // Perform clean up after dragging.
FOR_EACH_OBSERVER(BrowserActionsContainerObserver,
......@@ -581,17 +581,16 @@ void BrowserActionsContainer::WriteDragDataForView(View* sender,
DCHECK(data);
for (size_t i = 0; i < browser_action_views_.size(); ++i) {
BrowserActionButton* button = browser_action_views_[i]->button();
if (button == sender) {
BrowserActionView* view = browser_action_views_[i];
if (view == sender) {
// Set the dragging image for the icon.
gfx::ImageSkia badge(browser_action_views_[i]->GetIconWithBadge());
gfx::ImageSkia badge(view->GetIconWithBadge());
drag_utils::SetDragImageOnDataObject(badge,
press_pt.OffsetFromOrigin(),
data);
// Fill in the remaining info.
BrowserActionDragData drag_data(
browser_action_views_[i]->button()->extension()->id(), i);
BrowserActionDragData drag_data(view->extension()->id(), i);
drag_data.Write(profile_, data);
break;
}
......@@ -793,7 +792,7 @@ void BrowserActionsContainer::BrowserActionAdded(const Extension* extension,
int index) {
#if defined(DEBUG)
for (size_t i = 0; i < browser_action_views_.size(); ++i) {
DCHECK(browser_action_views_[i]->button()->extension() != extension) <<
DCHECK(browser_action_views_[i]->extension() != extension) <<
"Asked to add a browser action view for an extension that already "
"exists.";
}
......@@ -835,7 +834,7 @@ void BrowserActionsContainer::BrowserActionRemoved(const Extension* extension) {
size_t visible_actions = VisibleBrowserActionsAfterAnimation();
for (BrowserActionViews::iterator i(browser_action_views_.begin());
i != browser_action_views_.end(); ++i) {
if ((*i)->button()->extension() == extension) {
if ((*i)->extension() == extension) {
delete *i;
browser_action_views_.erase(i);
......@@ -1045,9 +1044,9 @@ bool BrowserActionsContainer::ShowPopupForExtension(
for (BrowserActionViews::iterator iter = browser_action_views_.begin();
iter != browser_action_views_.end(); ++iter) {
BrowserActionButton* button = (*iter)->button();
if (button->extension() == extension)
return button->view_controller()->ExecuteAction(
BrowserActionView* view = (*iter);
if (view->extension() == extension)
return view->view_controller()->ExecuteAction(
ExtensionPopup::SHOW, grant_tab_permissions);
}
return false;
......
......@@ -235,7 +235,7 @@ class BrowserActionsContainer
virtual bool ShownInsideMenu() const OVERRIDE;
virtual void OnBrowserActionViewDragDone() OVERRIDE;
virtual views::View* GetOverflowReferenceView() OVERRIDE;
virtual void SetPopupOwner(BrowserActionButton* popup_owner) OVERRIDE;
virtual void SetPopupOwner(BrowserActionView* popup_owner) OVERRIDE;
virtual void HideActivePopup() OVERRIDE;
// Overridden from extension::ExtensionKeybindingRegistry::Delegate:
......@@ -370,9 +370,9 @@ class BrowserActionsContainer
// the difference between main and overflow.
BrowserActionsContainer* main_container_;
// The button that triggered the current popup (just a reference to a button
// The view that triggered the current popup (just a reference to a view
// from browser_action_views_).
BrowserActionButton* popup_owner_;
BrowserActionView* popup_owner_;
// The model that tracks the order of the toolbar icons.
extensions::ExtensionToolbarModel* model_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment