| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/infobars/extension_infobar.h" | 5 #include "chrome/browser/ui/views/infobars/extension_infobar.h" |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/extension_context_menu_model.h" | 7 #include "chrome/browser/extensions/extension_context_menu_model.h" |
| 8 #include "chrome/browser/extensions/extension_host.h" | 8 #include "chrome/browser/extensions/extension_host.h" |
| 9 #include "chrome/browser/extensions/extension_infobar_delegate.h" | 9 #include "chrome/browser/extensions/extension_infobar_delegate.h" |
| 10 #include "chrome/browser/infobars/infobar_tab_helper.h" | 10 #include "chrome/browser/infobars/infobar_tab_helper.h" |
| 11 #include "chrome/browser/platform_util.h" | 11 #include "chrome/browser/platform_util.h" |
| 12 #include "chrome/browser/ui/views/extensions/extension_view_views.h" |
| 12 #include "chrome/browser/ui/views/frame/browser_view.h" | 13 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 13 #include "chrome/common/extensions/extension.h" | 14 #include "chrome/common/extensions/extension.h" |
| 14 #include "chrome/common/extensions/extension_constants.h" | 15 #include "chrome/common/extensions/extension_constants.h" |
| 15 #include "chrome/common/extensions/extension_icon_set.h" | 16 #include "chrome/common/extensions/extension_icon_set.h" |
| 16 #include "chrome/common/extensions/extension_resource.h" | 17 #include "chrome/common/extensions/extension_resource.h" |
| 17 #include "grit/theme_resources.h" | 18 #include "grit/theme_resources.h" |
| 18 #include "ui/base/animation/slide_animation.h" | 19 #include "ui/base/animation/slide_animation.h" |
| 19 #include "ui/base/resource/resource_bundle.h" | 20 #include "ui/base/resource/resource_bundle.h" |
| 20 #include "ui/gfx/canvas.h" | 21 #include "ui/gfx/canvas.h" |
| 21 #include "ui/gfx/image/canvas_image_source.h" | 22 #include "ui/gfx/image/canvas_image_source.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 GetDelegate()->set_observer(NULL); | 95 GetDelegate()->set_observer(NULL); |
| 95 } | 96 } |
| 96 | 97 |
| 97 void ExtensionInfoBar::Layout() { | 98 void ExtensionInfoBar::Layout() { |
| 98 InfoBarView::Layout(); | 99 InfoBarView::Layout(); |
| 99 | 100 |
| 100 gfx::Size menu_size = menu_->GetPreferredSize(); | 101 gfx::Size menu_size = menu_->GetPreferredSize(); |
| 101 menu_->SetBounds(StartX(), OffsetY(menu_size), menu_size.width(), | 102 menu_->SetBounds(StartX(), OffsetY(menu_size), menu_size.width(), |
| 102 menu_size.height()); | 103 menu_size.height()); |
| 103 | 104 |
| 104 GetDelegate()->extension_host()->view()->SetBounds( | 105 ExtensionViewViews* view = static_cast<ExtensionViewViews*>( |
| 105 menu_->bounds().right() + kMenuHorizontalMargin, | 106 GetDelegate()->extension_host()->GetExtensionView()); |
| 106 arrow_height(), | 107 view->SetBounds(menu_->bounds().right() + kMenuHorizontalMargin, |
| 107 std::max(0, EndX() - StartX() - ContentMinimumWidth()), | 108 arrow_height(), |
| 108 height() - arrow_height() - 1); | 109 std::max(0, EndX() - StartX() - ContentMinimumWidth()), |
| 110 height() - arrow_height() - 1); |
| 109 } | 111 } |
| 110 | 112 |
| 111 void ExtensionInfoBar::ViewHierarchyChanged(bool is_add, | 113 void ExtensionInfoBar::ViewHierarchyChanged(bool is_add, |
| 112 views::View* parent, | 114 views::View* parent, |
| 113 views::View* child) { | 115 views::View* child) { |
| 114 if (!is_add || (child != this) || (menu_ != NULL)) { | 116 if (!is_add || (child != this) || (menu_ != NULL)) { |
| 115 InfoBarView::ViewHierarchyChanged(is_add, parent, child); | 117 InfoBarView::ViewHierarchyChanged(is_add, parent, child); |
| 116 return; | 118 return; |
| 117 } | 119 } |
| 118 | 120 |
| 119 menu_ = new views::MenuButton(NULL, string16(), this, false); | 121 menu_ = new views::MenuButton(NULL, string16(), this, false); |
| 120 menu_->SetVisible(false); | 122 menu_->SetVisible(false); |
| 121 menu_->set_focusable(true); | 123 menu_->set_focusable(true); |
| 122 AddChildView(menu_); | 124 AddChildView(menu_); |
| 123 | 125 |
| 124 extensions::ExtensionHost* extension_host = GetDelegate()->extension_host(); | 126 extensions::ExtensionHost* extension_host = GetDelegate()->extension_host(); |
| 125 AddChildView(extension_host->view()); | 127 ExtensionViewViews* view = |
| 128 static_cast<ExtensionViewViews*>(extension_host->GetExtensionView()); |
| 129 AddChildView(view); |
| 126 | 130 |
| 127 // This must happen after adding all other children so InfoBarView can ensure | 131 // This must happen after adding all other children so InfoBarView can ensure |
| 128 // the close button is the last child. | 132 // the close button is the last child. |
| 129 InfoBarView::ViewHierarchyChanged(is_add, parent, child); | 133 InfoBarView::ViewHierarchyChanged(is_add, parent, child); |
| 130 | 134 |
| 131 // This must happen after adding all children because it can trigger layout, | 135 // This must happen after adding all children because it can trigger layout, |
| 132 // which assumes that particular children (e.g. the close button) have already | 136 // which assumes that particular children (e.g. the close button) have already |
| 133 // been added. | 137 // been added. |
| 134 const extensions::Extension* extension = extension_host->extension(); | 138 const extensions::Extension* extension = extension_host->extension(); |
| 135 extension_misc::ExtensionIcons image_size = | 139 extension_misc::ExtensionIcons image_size = |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 | 188 |
| 185 scoped_refptr<ExtensionContextMenuModel> options_menu_contents = | 189 scoped_refptr<ExtensionContextMenuModel> options_menu_contents = |
| 186 new ExtensionContextMenuModel(extension, browser_); | 190 new ExtensionContextMenuModel(extension, browser_); |
| 187 DCHECK_EQ(menu_, source); | 191 DCHECK_EQ(menu_, source); |
| 188 RunMenuAt(options_menu_contents.get(), menu_, views::MenuItemView::TOPLEFT); | 192 RunMenuAt(options_menu_contents.get(), menu_, views::MenuItemView::TOPLEFT); |
| 189 } | 193 } |
| 190 | 194 |
| 191 ExtensionInfoBarDelegate* ExtensionInfoBar::GetDelegate() { | 195 ExtensionInfoBarDelegate* ExtensionInfoBar::GetDelegate() { |
| 192 return delegate_ ? delegate_->AsExtensionInfoBarDelegate() : NULL; | 196 return delegate_ ? delegate_->AsExtensionInfoBarDelegate() : NULL; |
| 193 } | 197 } |
| OLD | NEW |