| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/browser_actions_container.h" | 5 #include "chrome/browser/ui/views/browser_actions_container.h" |
| 6 | 6 |
| 7 #include "base/stl_util-inl.h" | 7 #include "base/stl_util-inl.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/browser_window.h" | 10 #include "chrome/browser/browser_window.h" |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 SkIntToScalar((bg_p.height() - icon.height()) / 2), &paint); | 163 SkIntToScalar((bg_p.height() - icon.height()) / 2), &paint); |
| 164 SetPushedIcon(bg_p); | 164 SetPushedIcon(bg_p); |
| 165 } | 165 } |
| 166 | 166 |
| 167 // If the browser action name is empty, show the extension name instead. | 167 // If the browser action name is empty, show the extension name instead. |
| 168 string16 name = UTF8ToUTF16(browser_action()->GetTitle(tab_id)); | 168 string16 name = UTF8ToUTF16(browser_action()->GetTitle(tab_id)); |
| 169 if (name.empty()) | 169 if (name.empty()) |
| 170 name = UTF8ToUTF16(extension()->name()); | 170 name = UTF8ToUTF16(extension()->name()); |
| 171 SetTooltipText(UTF16ToWideHack(name)); | 171 SetTooltipText(UTF16ToWideHack(name)); |
| 172 SetAccessibleName(name); | 172 SetAccessibleName(name); |
| 173 GetParent()->SchedulePaint(); | 173 parent()->SchedulePaint(); |
| 174 } | 174 } |
| 175 | 175 |
| 176 void BrowserActionButton::Observe(NotificationType type, | 176 void BrowserActionButton::Observe(NotificationType type, |
| 177 const NotificationSource& source, | 177 const NotificationSource& source, |
| 178 const NotificationDetails& details) { | 178 const NotificationDetails& details) { |
| 179 DCHECK(type == NotificationType::EXTENSION_BROWSER_ACTION_UPDATED); | 179 DCHECK(type == NotificationType::EXTENSION_BROWSER_ACTION_UPDATED); |
| 180 UpdateState(); | 180 UpdateState(); |
| 181 // The browser action may have become visible/hidden so we need to make | 181 // The browser action may have become visible/hidden so we need to make |
| 182 // sure the state gets updated. | 182 // sure the state gets updated. |
| 183 panel_->OnBrowserActionVisibilityChanged(); | 183 panel_->OnBrowserActionVisibilityChanged(); |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 // Always hide the current popup, even if it's not the same. | 498 // Always hide the current popup, even if it's not the same. |
| 499 // Only one popup should be visible at a time. | 499 // Only one popup should be visible at a time. |
| 500 HidePopup(); | 500 HidePopup(); |
| 501 | 501 |
| 502 if (same_showing) | 502 if (same_showing) |
| 503 return; | 503 return; |
| 504 | 504 |
| 505 // We can get the execute event for browser actions that are not visible, | 505 // We can get the execute event for browser actions that are not visible, |
| 506 // since buttons can be activated from the overflow menu (chevron). In that | 506 // since buttons can be activated from the overflow menu (chevron). In that |
| 507 // case we show the popup as originating from the chevron. | 507 // case we show the popup as originating from the chevron. |
| 508 View* reference_view = button->GetParent()->IsVisible() ? button : chevron_; | 508 View* reference_view = button->parent()->IsVisible() ? button : chevron_; |
| 509 gfx::Point origin; | 509 gfx::Point origin; |
| 510 View::ConvertPointToScreen(reference_view, &origin); | 510 View::ConvertPointToScreen(reference_view, &origin); |
| 511 gfx::Rect rect = reference_view->bounds(); | 511 gfx::Rect rect = reference_view->bounds(); |
| 512 rect.set_origin(origin); | 512 rect.set_origin(origin); |
| 513 | 513 |
| 514 gfx::NativeWindow frame_window = browser_->window()->GetNativeHandle(); | 514 gfx::NativeWindow frame_window = browser_->window()->GetNativeHandle(); |
| 515 BubbleBorder::ArrowLocation arrow_location = base::i18n::IsRTL() ? | 515 BubbleBorder::ArrowLocation arrow_location = base::i18n::IsRTL() ? |
| 516 BubbleBorder::TOP_LEFT : BubbleBorder::TOP_RIGHT; | 516 BubbleBorder::TOP_LEFT : BubbleBorder::TOP_RIGHT; |
| 517 | 517 |
| 518 popup_ = ExtensionPopup::Show(button->GetPopupUrl(), browser_, | 518 popup_ = ExtensionPopup::Show(button->GetPopupUrl(), browser_, |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 if (!ShouldDisplayBrowserAction(extension)) | 905 if (!ShouldDisplayBrowserAction(extension)) |
| 906 return; | 906 return; |
| 907 | 907 |
| 908 size_t visible_actions = VisibleBrowserActions(); | 908 size_t visible_actions = VisibleBrowserActions(); |
| 909 | 909 |
| 910 // Add the new browser action to the vector and the view hierarchy. | 910 // Add the new browser action to the vector and the view hierarchy. |
| 911 if (profile_->IsOffTheRecord()) | 911 if (profile_->IsOffTheRecord()) |
| 912 index = model_->OriginalIndexToIncognito(index); | 912 index = model_->OriginalIndexToIncognito(index); |
| 913 BrowserActionView* view = new BrowserActionView(extension, this); | 913 BrowserActionView* view = new BrowserActionView(extension, this); |
| 914 browser_action_views_.insert(browser_action_views_.begin() + index, view); | 914 browser_action_views_.insert(browser_action_views_.begin() + index, view); |
| 915 AddChildView(index, view); | 915 AddChildViewAt(view, index); |
| 916 | 916 |
| 917 // If we are still initializing the container, don't bother animating. | 917 // If we are still initializing the container, don't bother animating. |
| 918 if (!model_->extensions_initialized()) | 918 if (!model_->extensions_initialized()) |
| 919 return; | 919 return; |
| 920 | 920 |
| 921 // Enlarge the container if it was already at maximum size and we're not in | 921 // Enlarge the container if it was already at maximum size and we're not in |
| 922 // the middle of upgrading. | 922 // the middle of upgrading. |
| 923 if ((model_->GetVisibleIconCount() < 0) && | 923 if ((model_->GetVisibleIconCount() < 0) && |
| 924 !profile_->GetExtensionService()->IsBeingUpgraded(extension)) { | 924 !profile_->GetExtensionService()->IsBeingUpgraded(extension)) { |
| 925 suppress_chevron_ = true; | 925 suppress_chevron_ = true; |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1096 AnimationEnded(resize_animation_.get()); | 1096 AnimationEnded(resize_animation_.get()); |
| 1097 } | 1097 } |
| 1098 } | 1098 } |
| 1099 | 1099 |
| 1100 bool BrowserActionsContainer::ShouldDisplayBrowserAction( | 1100 bool BrowserActionsContainer::ShouldDisplayBrowserAction( |
| 1101 const Extension* extension) { | 1101 const Extension* extension) { |
| 1102 // Only display incognito-enabled extensions while in incognito mode. | 1102 // Only display incognito-enabled extensions while in incognito mode. |
| 1103 return (!profile_->IsOffTheRecord() || | 1103 return (!profile_->IsOffTheRecord() || |
| 1104 profile_->GetExtensionService()->IsIncognitoEnabled(extension)); | 1104 profile_->GetExtensionService()->IsIncognitoEnabled(extension)); |
| 1105 } | 1105 } |
| OLD | NEW |