Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(386)

Unified Diff: chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc

Issue 287543002: Remove origin chip v1 and "hide on input" v2 behavior. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc
diff --git a/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc b/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc
deleted file mode 100644
index 4c625381205545b29d37154c63e5554a861b2410..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright 2014 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/ui/views/toolbar/toolbar_origin_chip_view.h"
-
-#include "base/files/file_path.h"
-#include "base/metrics/histogram.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/favicon/favicon_tab_helper.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/safe_browsing/safe_browsing_service.h"
-#include "chrome/browser/safe_browsing/ui_manager.h"
-#include "chrome/browser/search/search.h"
-#include "chrome/browser/themes/theme_properties.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/elide_url.h"
-#include "chrome/browser/ui/omnibox/omnibox_view.h"
-#include "chrome/browser/ui/toolbar/origin_chip_info.h"
-#include "chrome/browser/ui/toolbar/toolbar_model.h"
-#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
-#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
-#include "chrome/common/extensions/extension_constants.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/user_metrics.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/url_constants.h"
-#include "extensions/browser/extension_system.h"
-#include "extensions/common/constants.h"
-#include "extensions/common/manifest_handlers/icons_handler.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/theme_provider.h"
-#include "ui/views/background.h"
-#include "ui/views/button_drag_utils.h"
-#include "ui/views/controls/button/label_button.h"
-#include "ui/views/controls/button/label_button_border.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/painter.h"
-
-
-// ToolbarOriginChipExtensionIcon ---------------------------------------------
-
-class ToolbarOriginChipExtensionIcon : public extensions::IconImage::Observer {
- public:
- ToolbarOriginChipExtensionIcon(LocationIconView* icon_view,
- Profile* profile,
- const extensions::Extension* extension);
- virtual ~ToolbarOriginChipExtensionIcon();
-
- // IconImage::Observer:
- virtual void OnExtensionIconImageChanged(
- extensions::IconImage* image) OVERRIDE;
-
- private:
- LocationIconView* icon_view_;
- scoped_ptr<extensions::IconImage> icon_image_;
-
- DISALLOW_COPY_AND_ASSIGN(ToolbarOriginChipExtensionIcon);
-};
-
-ToolbarOriginChipExtensionIcon::ToolbarOriginChipExtensionIcon(
- LocationIconView* icon_view,
- Profile* profile,
- const extensions::Extension* extension)
- : icon_view_(icon_view),
- icon_image_(new extensions::IconImage(
- profile,
- extension,
- extensions::IconsInfo::GetIcons(extension),
- extension_misc::EXTENSION_ICON_BITTY,
- extensions::util::GetDefaultAppIcon(),
- this)) {
- // Forces load of the image.
- icon_image_->image_skia().GetRepresentation(1.0f);
-
- if (!icon_image_->image_skia().image_reps().empty())
- OnExtensionIconImageChanged(icon_image_.get());
-}
-
-ToolbarOriginChipExtensionIcon::~ToolbarOriginChipExtensionIcon() {
-}
-
-void ToolbarOriginChipExtensionIcon::OnExtensionIconImageChanged(
- extensions::IconImage* image) {
- if (icon_view_)
- icon_view_->SetImage(&icon_image_->image_skia());
-}
-
-
-// ToolbarOriginChipView ------------------------------------------------------
-
-namespace {
-
-const int kEdgeThickness = 5;
-const int k16x16IconLeadingSpacing = 1;
-const int k16x16IconTrailingSpacing = 2;
-const int kIconTextSpacing = 3;
-const int kTrailingLabelMargin = 0;
-
-const SkColor kEVBackgroundColor = SkColorSetRGB(163, 226, 120);
-const SkColor kMalwareBackgroundColor = SkColorSetRGB(145, 0, 0);
-const SkColor kBrokenSSLBackgroundColor = SkColorSetRGB(253, 196, 36);
-
-} // namespace
-
-ToolbarOriginChipView::ToolbarOriginChipView(ToolbarView* toolbar_view)
- : ToolbarButton(this, NULL),
- toolbar_view_(toolbar_view),
- painter_(NULL),
- showing_16x16_icon_(false) {
- scoped_refptr<SafeBrowsingService> sb_service =
- g_browser_process->safe_browsing_service();
- // May not be set for unit tests.
- if (sb_service.get() && sb_service->ui_manager())
- sb_service->ui_manager()->AddObserver(this);
-
- set_drag_controller(this);
-}
-
-ToolbarOriginChipView::~ToolbarOriginChipView() {
- scoped_refptr<SafeBrowsingService> sb_service =
- g_browser_process->safe_browsing_service();
- if (sb_service.get() && sb_service->ui_manager())
- sb_service->ui_manager()->RemoveObserver(this);
-}
-
-void ToolbarOriginChipView::Init() {
- ToolbarButton::Init();
- image()->EnableCanvasFlippingForRTLUI(false);
-
- // TODO(gbillock): Would be nice to just use stock LabelButton stuff here.
- location_icon_view_ = new LocationIconView(toolbar_view_->location_bar());
- // Make location icon hover events count as hovering the origin chip.
- location_icon_view_->set_interactive(false);
-
- host_label_ = new views::Label();
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- host_label_->SetFontList(rb.GetFontList(ui::ResourceBundle::MediumFont));
-
- AddChildView(location_icon_view_);
- AddChildView(host_label_);
-
- location_icon_view_->SetImage(GetThemeProvider()->GetImageSkiaNamed(
- IDR_LOCATION_BAR_HTTP));
- location_icon_view_->ShowTooltip(true);
-
- const int kEVBackgroundImages[] = IMAGE_GRID(IDR_SITE_CHIP_EV);
- ev_background_painter_.reset(
- views::Painter::CreateImageGridPainter(kEVBackgroundImages));
- const int kBrokenSSLBackgroundImages[] = IMAGE_GRID(IDR_SITE_CHIP_BROKENSSL);
- broken_ssl_background_painter_.reset(
- views::Painter::CreateImageGridPainter(kBrokenSSLBackgroundImages));
- const int kMalwareBackgroundImages[] = IMAGE_GRID(IDR_SITE_CHIP_MALWARE);
- malware_background_painter_.reset(
- views::Painter::CreateImageGridPainter(kMalwareBackgroundImages));
-}
-
-bool ToolbarOriginChipView::ShouldShow() {
- return chrome::ShouldDisplayOriginChip();
-}
-
-void ToolbarOriginChipView::Update(content::WebContents* web_contents) {
- if (!web_contents)
- return;
-
- // Note: security level can change async as the connection is made.
- GURL url = toolbar_view_->GetToolbarModel()->GetURL();
- const ToolbarModel::SecurityLevel security_level =
- toolbar_view_->GetToolbarModel()->GetSecurityLevel(true);
-
- bool url_malware = OriginChip::IsMalware(url, web_contents);
-
- // TODO(gbillock): We persist a malware setting while a new WebContents
- // content is loaded, meaning that we end up transiently marking a safe
- // page as malware. Need to fix that.
-
- if ((url == url_displayed_) &&
- (security_level == security_level_) &&
- (url_malware == url_malware_))
- return;
-
- url_displayed_ = url;
- url_malware_ = url_malware;
- security_level_ = security_level;
-
- SkColor label_background =
- GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR);
- if (url_malware_) {
- painter_ = malware_background_painter_.get();
- label_background = kMalwareBackgroundColor;
- } else if (security_level_ == ToolbarModel::SECURITY_ERROR) {
- painter_ = broken_ssl_background_painter_.get();
- label_background = kBrokenSSLBackgroundColor;
- } else if (security_level_ == ToolbarModel::EV_SECURE) {
- painter_ = ev_background_painter_.get();
- label_background = kEVBackgroundColor;
- } else {
- painter_ = NULL;
- }
-
- base::string16 host =
- OriginChip::LabelFromURLForProfile(url_displayed_,
- toolbar_view_->browser()->profile());
- if (security_level_ == ToolbarModel::EV_SECURE) {
- host = l10n_util::GetStringFUTF16(IDS_SITE_CHIP_EV_SSL_LABEL,
- toolbar_view_->GetToolbarModel()->GetEVCertName(),
- host);
- }
-
- host_label_->SetText(host);
- host_label_->SetTooltipText(host);
- host_label_->SetBackgroundColor(label_background);
- host_label_->SetElideBehavior(views::Label::NO_ELIDE);
-
- int icon = toolbar_view_->GetToolbarModel()->GetIconForSecurityLevel(
- security_level_);
- showing_16x16_icon_ = false;
-
- if (url_displayed_.is_empty() ||
- url_displayed_.SchemeIs(content::kChromeUIScheme)) {
- icon = IDR_PRODUCT_LOGO_16;
- showing_16x16_icon_ = true;
- }
-
- location_icon_view_->SetImage(GetThemeProvider()->GetImageSkiaNamed(icon));
-
- if (url_displayed_.SchemeIs(extensions::kExtensionScheme)) {
- icon = IDR_EXTENSIONS_FAVICON;
- showing_16x16_icon_ = true;
- location_icon_view_->SetImage(GetThemeProvider()->GetImageSkiaNamed(icon));
-
- ExtensionService* service =
- extensions::ExtensionSystem::Get(
- toolbar_view_->browser()->profile())->extension_service();
- const extensions::Extension* extension =
- service->extensions()->GetExtensionOrAppByURL(url_displayed_);
- extension_icon_.reset(
- new ToolbarOriginChipExtensionIcon(location_icon_view_,
- toolbar_view_->browser()->profile(),
- extension));
- } else {
- extension_icon_.reset();
- }
-
- Layout();
- SchedulePaint();
-}
-
-void ToolbarOriginChipView::OnChanged() {
- Update(toolbar_view_->GetWebContents());
- toolbar_view_->Layout();
- toolbar_view_->SchedulePaint();
- // TODO(gbillock): Also need to potentially repaint infobars to make sure the
- // arrows are pointing to the right spot. Only needed for some edge cases.
-}
-
-gfx::Size ToolbarOriginChipView::GetPreferredSize() {
- gfx::Size label_size = host_label_->GetPreferredSize();
- gfx::Size icon_size = location_icon_view_->GetPreferredSize();
- int icon_spacing = showing_16x16_icon_ ?
- (k16x16IconLeadingSpacing + k16x16IconTrailingSpacing) : 0;
- return gfx::Size(kEdgeThickness + icon_size.width() + icon_spacing +
- kIconTextSpacing + label_size.width() +
- kTrailingLabelMargin + kEdgeThickness,
- icon_size.height());
-}
-
-void ToolbarOriginChipView::Layout() {
- // TODO(gbillock): Eventually we almost certainly want to use
- // LocationBarLayout for leading and trailing decorations.
-
- location_icon_view_->SetBounds(
- kEdgeThickness + (showing_16x16_icon_ ? k16x16IconLeadingSpacing : 0),
- LocationBarView::kNormalEdgeThickness,
- location_icon_view_->GetPreferredSize().width(),
- height() - 2 * LocationBarView::kNormalEdgeThickness);
-
- int host_label_x = location_icon_view_->x() + location_icon_view_->width() +
- kIconTextSpacing;
- host_label_x += showing_16x16_icon_ ? k16x16IconTrailingSpacing : 0;
- int host_label_width =
- width() - host_label_x - kEdgeThickness - kTrailingLabelMargin;
- host_label_->SetBounds(host_label_x,
- LocationBarView::kNormalEdgeThickness,
- host_label_width,
- height() - 2 * LocationBarView::kNormalEdgeThickness);
-}
-
-void ToolbarOriginChipView::OnPaint(gfx::Canvas* canvas) {
- gfx::Rect rect(GetLocalBounds());
- if (painter_)
- views::Painter::PaintPainterAt(canvas, painter_, rect);
-
- ToolbarButton::OnPaint(canvas);
-}
-
-int ToolbarOriginChipView::ElideDomainTarget(int target_max_width) {
- base::string16 host =
- OriginChip::LabelFromURLForProfile(url_displayed_,
- toolbar_view_->browser()->profile());
- host_label_->SetText(host);
- int width = GetPreferredSize().width();
- if (width <= target_max_width)
- return width;
-
- gfx::Size label_size = host_label_->GetPreferredSize();
- int padding_width = width - label_size.width();
-
- host_label_->SetText(ElideHost(
- toolbar_view_->GetToolbarModel()->GetURL(),
- host_label_->font_list(), target_max_width - padding_width));
- return GetPreferredSize().width();
-}
-
-// TODO(gbillock): Make the LocationBarView or OmniboxView the listener for
-// this button.
-void ToolbarOriginChipView::ButtonPressed(views::Button* sender,
- const ui::Event& event) {
- // See if the event needs to be passed to the LocationIconView.
- if (event.IsMouseEvent() || (event.type() == ui::ET_GESTURE_TAP)) {
- location_icon_view_->set_interactive(true);
- const ui::LocatedEvent& located_event =
- static_cast<const ui::LocatedEvent&>(event);
- if (GetEventHandlerForPoint(located_event.location()) ==
- location_icon_view_) {
- location_icon_view_->page_info_helper()->ProcessEvent(located_event);
- location_icon_view_->set_interactive(false);
- return;
- }
- location_icon_view_->set_interactive(false);
- }
-
- UMA_HISTOGRAM_COUNTS("OriginChip.Pressed", 1);
- content::RecordAction(base::UserMetricsAction("OriginChipPress"));
-
- toolbar_view_->location_bar()->ShowURL();
-}
-
-void ToolbarOriginChipView::WriteDragDataForView(View* sender,
- const gfx::Point& press_pt,
- OSExchangeData* data) {
- // TODO(gbillock): Consolidate this with the identical logic in
- // LocationBarView.
- content::WebContents* web_contents = toolbar_view_->GetWebContents();
- FaviconTabHelper* favicon_tab_helper =
- FaviconTabHelper::FromWebContents(web_contents);
- gfx::ImageSkia favicon = favicon_tab_helper->GetFavicon().AsImageSkia();
- button_drag_utils::SetURLAndDragImage(web_contents->GetURL(),
- web_contents->GetTitle(),
- favicon,
- data,
- sender->GetWidget());
-}
-
-int ToolbarOriginChipView::GetDragOperationsForView(View* sender,
- const gfx::Point& p) {
- return ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_LINK;
-}
-
-bool ToolbarOriginChipView::CanStartDragForView(View* sender,
- const gfx::Point& press_pt,
- const gfx::Point& p) {
- return true;
-}
-
-// Note: When OnSafeBrowsingHit would be called, OnSafeBrowsingMatch will
-// have already been called.
-void ToolbarOriginChipView::OnSafeBrowsingHit(
- const SafeBrowsingUIManager::UnsafeResource& resource) {}
-
-void ToolbarOriginChipView::OnSafeBrowsingMatch(
- const SafeBrowsingUIManager::UnsafeResource& resource) {
- OnChanged();
-}
« no previous file with comments | « chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.h ('k') | chrome/browser/ui/views/toolbar/toolbar_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698