| Index: chrome/browser/cocoa/location_bar/content_setting_decoration.mm
|
| diff --git a/chrome/browser/cocoa/location_bar/content_setting_decoration.mm b/chrome/browser/cocoa/location_bar/content_setting_decoration.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6f2b8a3935406a8af5a6bb263c88be5fabb425f7
|
| --- /dev/null
|
| +++ b/chrome/browser/cocoa/location_bar/content_setting_decoration.mm
|
| @@ -0,0 +1,88 @@
|
| +// Copyright (c) 2010 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/cocoa/location_bar/content_setting_decoration.h"
|
| +
|
| +#include "app/resource_bundle.h"
|
| +#include "base/sys_string_conversions.h"
|
| +#include "chrome/browser/browser_list.h"
|
| +#import "chrome/browser/cocoa/content_blocked_bubble_controller.h"
|
| +#import "chrome/browser/cocoa/location_bar/location_bar_view_mac.h"
|
| +#include "chrome/browser/content_setting_image_model.h"
|
| +#include "chrome/browser/content_setting_bubble_model.h"
|
| +#include "chrome/browser/pref_service.h"
|
| +#include "chrome/browser/profile.h"
|
| +#include "chrome/browser/tab_contents/tab_contents.h"
|
| +#include "chrome/common/pref_names.h"
|
| +#include "net/base/net_util.h"
|
| +
|
| +ContentSettingDecoration::ContentSettingDecoration(
|
| + ContentSettingsType settings_type,
|
| + LocationBarViewMac* owner,
|
| + Profile* profile)
|
| + : content_setting_image_model_(
|
| + ContentSettingImageModel::CreateContentSettingImageModel(
|
| + settings_type)),
|
| + owner_(owner),
|
| + profile_(profile) {
|
| +}
|
| +
|
| +ContentSettingDecoration::~ContentSettingDecoration() {
|
| +}
|
| +
|
| +void ContentSettingDecoration::UpdateFromTabContents(
|
| + const TabContents* tab_contents) {
|
| + content_setting_image_model_->UpdateFromTabContents(tab_contents);
|
| + SetVisible(content_setting_image_model_->is_visible());
|
| + if (IsVisible()) {
|
| + // TODO(thakis): We should use pdfs for these icons on OSX.
|
| + // http://crbug.com/35847
|
| + ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| + SetImage(rb.GetNSImageNamed(content_setting_image_model_->get_icon()));
|
| + SetToolTip(base::SysUTF8ToNSString(
|
| + content_setting_image_model_->get_tooltip()));
|
| + }
|
| +}
|
| +
|
| +bool ContentSettingDecoration::OnMousePressed(NSRect frame) {
|
| + // Get host. This should be shared on linux/win/osx medium-term.
|
| + TabContents* tabContents =
|
| + BrowserList::GetLastActive()->GetSelectedTabContents();
|
| + if (!tabContents)
|
| + return true;
|
| +
|
| + GURL url = tabContents->GetURL();
|
| + std::wstring displayHost;
|
| + net::AppendFormattedHost(
|
| + url,
|
| + UTF8ToWide(profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)),
|
| + &displayHost, NULL, NULL);
|
| +
|
| + // Find point for bubble's arrow in screen coordinates.
|
| + // TODO(shess): |owner_| is only being used to fetch |field|.
|
| + // Consider passing in |control_view|.
|
| + AutocompleteTextField* field = owner_->GetAutocompleteTextField();
|
| + frame = GetDrawRectInFrame(frame);
|
| + NSPoint anchor = NSMakePoint(NSMidX(frame) + 1, NSMaxY(frame));
|
| + anchor = [field convertPoint:anchor toView:nil];
|
| + anchor = [[field window] convertBaseToScreen:anchor];
|
| +
|
| + // Open bubble.
|
| + ContentSettingBubbleModel* model =
|
| + ContentSettingBubbleModel::CreateContentSettingBubbleModel(
|
| + tabContents, profile_,
|
| + content_setting_image_model_->get_content_settings_type());
|
| + [ContentBlockedBubbleController showForModel:model
|
| + parentWindow:[field window]
|
| + anchoredAt:anchor];
|
| + return true;
|
| +}
|
| +
|
| +NSString* ContentSettingDecoration::GetToolTip() {
|
| + return tooltip_.get();
|
| +}
|
| +
|
| +void ContentSettingDecoration::SetToolTip(NSString* tooltip) {
|
| + tooltip_.reset([tooltip retain]);
|
| +}
|
|
|