| Index: chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm
|
| diff --git a/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm b/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm
|
| deleted file mode 100644
|
| index 09ccff2d1a0508ce1e9af939c8e11d52cdf568c2..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm
|
| +++ /dev/null
|
| @@ -1,240 +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.
|
| -
|
| -#import "chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.h"
|
| -
|
| -#include "base/metrics/histogram.h"
|
| -#include "base/metrics/user_metrics_action.h"
|
| -#include "base/strings/sys_string_conversions.h"
|
| -#include "chrome/browser/browser_process.h"
|
| -#include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
| -#include "chrome/browser/safe_browsing/ui_manager.h"
|
| -#include "chrome/browser/search/search.h"
|
| -#import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h"
|
| -#import "chrome/browser/ui/cocoa/location_bar/location_icon_decoration.h"
|
| -#import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "content/public/browser/user_metrics.h"
|
| -#include "extensions/browser/extension_icon_image.h"
|
| -#include "grit/theme_resources.h"
|
| -#import "ui/base/cocoa/nsview_additions.h"
|
| -#include "ui/gfx/image/image.h"
|
| -
|
| -namespace {
|
| -
|
| -const CGFloat kInnerLeftPadding = 5;
|
| -const CGFloat kIconLabelPadding = 2;
|
| -const CGFloat kInnerRightPadding = 6;
|
| -const CGFloat kOuterRightPadding = 3;
|
| -
|
| -// The target icon size - smaller icons will be centered, and larger icons will
|
| -// be scaled down.
|
| -const CGFloat kIconSize = 19;
|
| -
|
| -// The info-bubble point should look like it points to the bottom of the lock
|
| -// icon. Determined with Pixie.app.
|
| -const CGFloat kPageInfoBubblePointYOffset = 2.0;
|
| -
|
| -const ui::NinePartImageIds kNormalImages[3] = {
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_NORMAL),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_HOVER),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_PRESSED)
|
| -};
|
| -
|
| -const ui::NinePartImageIds kMalwareImages[3] = {
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_MALWARE_NORMAL),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_MALWARE_HOVER),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_MALWARE_PRESSED)
|
| -};
|
| -
|
| -const ui::NinePartImageIds kBrokenSSLImages[3] = {
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_BROKENSSL_NORMAL),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_BROKENSSL_HOVER),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_BROKENSSL_PRESSED)
|
| -};
|
| -
|
| -const ui::NinePartImageIds kEVImages[3] = {
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_EV_NORMAL),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_EV_HOVER),
|
| - IMAGE_GRID(IDR_ORIGIN_CHIP_EV_PRESSED)
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -OriginChipDecoration::OriginChipDecoration(
|
| - LocationBarViewMac* owner,
|
| - LocationIconDecoration* location_icon)
|
| - : ButtonDecoration(kNormalImages[0], IDR_LOCATION_BAR_HTTP,
|
| - kNormalImages[1], IDR_LOCATION_BAR_HTTP,
|
| - kNormalImages[2], IDR_LOCATION_BAR_HTTP, 0),
|
| - attributes_([[NSMutableDictionary alloc] init]),
|
| - icon_rect_(NSZeroRect),
|
| - info_(this, owner->browser()->profile()),
|
| - location_icon_(location_icon),
|
| - owner_(owner) {
|
| - DCHECK(owner_);
|
| - [attributes_ setObject:GetFont() forKey:NSFontAttributeName];
|
| -
|
| - // May not be set for unit tests.
|
| - scoped_refptr<SafeBrowsingService> sb_service =
|
| - g_browser_process->safe_browsing_service();
|
| - if (sb_service.get() && sb_service->ui_manager().get())
|
| - sb_service->ui_manager()->AddObserver(this);
|
| -}
|
| -
|
| -OriginChipDecoration::~OriginChipDecoration() {
|
| - scoped_refptr<SafeBrowsingService> sb_service =
|
| - g_browser_process->safe_browsing_service();
|
| - if (sb_service.get() && sb_service->ui_manager().get())
|
| - sb_service->ui_manager()->RemoveObserver(this);
|
| -}
|
| -
|
| -void OriginChipDecoration::Update() {
|
| - if (!owner_->GetToolbarModel()->ShouldShowOriginChip()) {
|
| - SetVisible(false);
|
| - return;
|
| - } else {
|
| - SetVisible(true);
|
| - }
|
| -
|
| - const content::WebContents* web_contents =
|
| - owner_->browser()->tab_strip_model()->GetActiveWebContents();
|
| - if (!web_contents || !info_.Update(web_contents, owner_->GetToolbarModel()))
|
| - return;
|
| -
|
| - if (info_.is_url_malware()) {
|
| - SetBackgroundImageIds(kMalwareImages[0],
|
| - kMalwareImages[1],
|
| - kMalwareImages[2]);
|
| - } else if (info_.security_level() == ToolbarModel::SECURITY_ERROR) {
|
| - SetBackgroundImageIds(kBrokenSSLImages[0],
|
| - kBrokenSSLImages[1],
|
| - kBrokenSSLImages[2]);
|
| - } else if (info_.security_level() == ToolbarModel::EV_SECURE) {
|
| - SetBackgroundImageIds(kEVImages[0],
|
| - kEVImages[1],
|
| - kEVImages[2]);
|
| - } else {
|
| - SetBackgroundImageIds(kNormalImages[0],
|
| - kNormalImages[1],
|
| - kNormalImages[2]);
|
| - }
|
| -
|
| - NSColor* foreground_color =
|
| - info_.is_url_malware() ? [NSColor whiteColor] : [NSColor blackColor];
|
| - [attributes_ setObject:foreground_color
|
| - forKey:NSForegroundColorAttributeName];
|
| -
|
| - label_.reset([base::SysUTF16ToNSString(info_.label()) retain]);
|
| - SetIcon(info_.icon());
|
| -}
|
| -
|
| -bool OriginChipDecoration::PreventFocus(NSPoint location) const {
|
| - return NSPointInRect(location, icon_rect_) ? true : false;
|
| -}
|
| -
|
| -CGFloat OriginChipDecoration::GetWidthForSpace(CGFloat width) {
|
| - if (!GetIconImage() || [label_ length] == 0)
|
| - return kOmittedWidth;
|
| -
|
| - // Clip the chip if it can't fit, rather than hiding it (kOmittedWidth).
|
| - return std::min(width, GetChipWidth() + kOuterRightPadding);
|
| -}
|
| -
|
| -void OriginChipDecoration::DrawInFrame(NSRect frame, NSView* control_view) {
|
| - // The assets are aligned with the location bar assets, so check that we are
|
| - // being asked to draw against the edge, then draw over the border.
|
| - DCHECK(NSMinX(frame) == [control_view cr_lineWidth]);
|
| - frame = NSMakeRect(0, NSMinY(frame), GetChipWidth(), NSHeight(frame));
|
| -
|
| - const ui::NinePartImageIds image_ids = GetBackgroundImageIds();
|
| -
|
| - NSImage* icon =
|
| - extension_icon_.get() ? extension_icon_.get() : GetIconImage();
|
| - if (!icon)
|
| - return;
|
| -
|
| - ui::DrawNinePartImage(frame, image_ids, NSCompositeSourceOver, 1.0, YES);
|
| -
|
| - const CGFloat icon_height = std::min([icon size].height, kIconSize);
|
| - const CGFloat icon_width = std::min([icon size].width, kIconSize);
|
| - CGFloat icon_y_inset = (NSHeight(frame) - icon_height) / 2.0;
|
| - CGFloat icon_x_leading_offset = (kIconSize - icon_width) / 2.0;
|
| - CGFloat icon_x_trailing_offset = icon_x_leading_offset;
|
| -
|
| - // Don't allow half-pixel offsets if we are not on a HiDPI display.
|
| - if ([control_view cr_lineWidth] == 1.0) {
|
| - icon_y_inset = std::ceil(icon_y_inset);
|
| - icon_x_leading_offset = std::ceil(icon_x_leading_offset);
|
| - icon_x_trailing_offset = std::floor(icon_x_trailing_offset);
|
| - }
|
| -
|
| - icon_rect_ = NSMakeRect(kInnerLeftPadding + icon_x_leading_offset,
|
| - icon_y_inset, icon_width, icon_height);
|
| -
|
| - [icon drawInRect:icon_rect_
|
| - fromRect:NSZeroRect
|
| - operation:NSCompositeSourceOver
|
| - fraction:1.0
|
| - respectFlipped:YES
|
| - hints:nil];
|
| -
|
| - NSRect label_rect = NSMakeRect(
|
| - NSMaxX(icon_rect_) + icon_x_trailing_offset + kIconLabelPadding,
|
| - 0, [label_ sizeWithAttributes:attributes_].width, frame.size.height);
|
| - DrawLabel(label_, attributes_, label_rect);
|
| -}
|
| -
|
| -NSString* OriginChipDecoration::GetToolTip() {
|
| - return base::SysUTF16ToNSString(info_.Tooltip());
|
| -}
|
| -
|
| -bool OriginChipDecoration::OnMousePressed(NSRect frame, NSPoint location) {
|
| - // Reveal the permissions bubble if the click was inside the icon's bounds;
|
| - // otherwise, show the URL.
|
| - if (NSPointInRect(location, icon_rect_))
|
| - return location_icon_->OnMousePressed(frame, location);
|
| -
|
| - UMA_HISTOGRAM_COUNTS("OriginChip.Pressed", 1);
|
| - content::RecordAction(base::UserMetricsAction("OriginChipPress"));
|
| - owner_->GetOmniboxView()->ShowURL();
|
| - return true;
|
| -}
|
| -
|
| -NSPoint OriginChipDecoration::GetBubblePointInFrame(NSRect frame) {
|
| - return NSMakePoint(NSMidX(icon_rect_),
|
| - NSMaxY(icon_rect_) - kPageInfoBubblePointYOffset);
|
| -}
|
| -
|
| -void OriginChipDecoration::OnExtensionIconImageChanged(
|
| - extensions::IconImage* image) {
|
| - if (image) {
|
| - extension_icon_.reset(gfx::Image(image->image_skia()).CopyNSImage());
|
| - [owner_->GetAutocompleteTextField() setNeedsDisplay:YES];
|
| - } else {
|
| - extension_icon_.reset();
|
| - }
|
| -}
|
| -
|
| -// Note: When OnSafeBrowsingHit would be called, OnSafeBrowsingMatch will
|
| -// have already been called.
|
| -void OriginChipDecoration::OnSafeBrowsingHit(
|
| - const SafeBrowsingUIManager::UnsafeResource& resource) {}
|
| -
|
| -void OriginChipDecoration::OnSafeBrowsingMatch(
|
| - const SafeBrowsingUIManager::UnsafeResource& resource) {
|
| - Update();
|
| -}
|
| -
|
| -CGFloat OriginChipDecoration::GetChipWidth() const {
|
| - return kInnerLeftPadding +
|
| - kIconSize +
|
| - kIconLabelPadding +
|
| - std::ceil([label_ sizeWithAttributes:attributes_].width) +
|
| - kInnerRightPadding;
|
| -}
|
| -
|
| -// TODO(macourteau): Implement eliding of the host.
|
| -
|
| -// TODO(macourteau): Implement dragging support.
|
|
|