summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordubroy@chromium.org <dubroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-24 12:03:59 +0000
committerdubroy@chromium.org <dubroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-24 12:03:59 +0000
commit2ced8f2a531efae7917500dd2b7b6ac249166ca6 (patch)
tree1c9982c45aa704485c4c48737be056eb501a02c4 /chrome
parentc02eb6b182f3266238edec77f99466e060f62e3c (diff)
downloadchromium_src-2ced8f2a531efae7917500dd2b7b6ac249166ca6.zip
chromium_src-2ced8f2a531efae7917500dd2b7b6ac249166ca6.tar.gz
chromium_src-2ced8f2a531efae7917500dd2b7b6ac249166ca6.tar.bz2
[Mac] Website settings: Implement method for setting the selected tab.
BUG=143922 Review URL: https://chromiumcodereview.appspot.com/10872038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153191 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/ui/cocoa/website_settings_bubble_controller.h1
-rw-r--r--chrome/browser/ui/cocoa/website_settings_bubble_controller.mm26
-rw-r--r--chrome/browser/ui/cocoa/website_settings_bubble_controller_unittest.mm24
-rw-r--r--chrome/browser/ui/website_settings/website_settings_ui.h12
4 files changed, 57 insertions, 6 deletions
diff --git a/chrome/browser/ui/cocoa/website_settings_bubble_controller.h b/chrome/browser/ui/cocoa/website_settings_bubble_controller.h
index 2ccddb6..b77500c 100644
--- a/chrome/browser/ui/cocoa/website_settings_bubble_controller.h
+++ b/chrome/browser/ui/cocoa/website_settings_bubble_controller.h
@@ -110,6 +110,7 @@ class WebsiteSettingsUIBridge : public WebsiteSettingsUI {
const PermissionInfoList& permission_info_list) OVERRIDE;
virtual void SetIdentityInfo(const IdentityInfo& identity_info) OVERRIDE;
virtual void SetFirstVisit(const string16& first_visit) OVERRIDE;
+ virtual void SetSelectedTab(TabId tab_id) OVERRIDE;
private:
// The Cocoa controller for the bubble UI.
diff --git a/chrome/browser/ui/cocoa/website_settings_bubble_controller.mm b/chrome/browser/ui/cocoa/website_settings_bubble_controller.mm
index 2da94ca..4010af1 100644
--- a/chrome/browser/ui/cocoa/website_settings_bubble_controller.mm
+++ b/chrome/browser/ui/cocoa/website_settings_bubble_controller.mm
@@ -359,15 +359,16 @@ NSColor* IdentityVerifiedTextColor() {
// Create the "Permissions" tab.
NSString* label = l10n_util::GetNSString(
IDS_WEBSITE_SETTINGS_TAB_LABEL_PERMISSIONS);
+ [segmentedControl_ setLabel:label
+ forSegment:WebsiteSettingsUI::TAB_ID_PERMISSIONS];
NSSize textSize = [label sizeWithAttributes:textAttributes];
CGFloat tabWidth = textSize.width + 2 * kTabLabelXPadding;
- [segmentedControl_ setLabel:label forSegment:0];
- [segmentedControl_ setWidth:tabWidth + kTabStripXPadding forSegment:0];
// Create the "Connection" tab.
label = l10n_util::GetNSString(IDS_WEBSITE_SETTINGS_TAB_LABEL_CONNECTION);
textSize = [label sizeWithAttributes:textAttributes];
- [segmentedControl_ setLabel:label forSegment:1];
+ [segmentedControl_ setLabel:label
+ forSegment:WebsiteSettingsUI::TAB_ID_CONNECTION];
// Make both tabs the width of the widest. The first segment has some
// additional padding that is not part of the tab, which is used for drawing
@@ -378,7 +379,6 @@ NSColor* IdentityVerifiedTextColor() {
[segmentedControl_ setWidth:tabWidth forSegment:1];
[segmentedControl_ setFont:smallSystemFont];
- [segmentedControl_ setSelectedSegment:0];
[contentView_ addSubview:segmentedControl_];
NSRect tabFrame = NSMakeRect(0, 0, kWindowWidth, 300);
@@ -390,6 +390,7 @@ NSColor* IdentityVerifiedTextColor() {
permissionsTabContentView_ = [self addPermissionsTabToTabView:tabView_];
connectionTabContentView_ = [self addConnectionTabToTabView:tabView_];
+ [self setSelectedTab:WebsiteSettingsUI::TAB_ID_PERMISSIONS];
[self performLayout];
}
@@ -398,7 +399,8 @@ NSColor* IdentityVerifiedTextColor() {
// Returns a weak reference to the tab view item's view.
- (NSView*)addPermissionsTabToTabView:(NSTabView*)tabView {
scoped_nsobject<NSTabViewItem> item([[NSTabViewItem alloc] init]);
- [tabView_ addTabViewItem:item.get()];
+ [tabView_ insertTabViewItem:item.get()
+ atIndex:WebsiteSettingsUI::TAB_ID_PERMISSIONS];
scoped_nsobject<NSView> contentView([[WebsiteSettingsContentView alloc]
initWithFrame:[tabView_ contentRect]]);
[item setView:contentView.get()];
@@ -494,7 +496,8 @@ NSColor* IdentityVerifiedTextColor() {
atPoint:textPosition];
[item setView:contentView.get()];
- [tabView_ addTabViewItem:item.get()];
+ [tabView_ insertTabViewItem:item.get()
+ atIndex:WebsiteSettingsUI::TAB_ID_CONNECTION];
return contentView.get();
}
@@ -779,6 +782,7 @@ NSColor* IdentityVerifiedTextColor() {
return button.get();
}
+// Called when the user changes the selected segment in the segmented control.
- (void)tabSelected:(id)sender {
[tabView_ selectTabViewItemAtIndex:[segmentedControl_ selectedSegment]];
}
@@ -999,6 +1003,12 @@ NSColor* IdentityVerifiedTextColor() {
[self performLayout];
}
+- (void)setSelectedTab:(WebsiteSettingsUI::TabId)tabId {
+ NSInteger index = static_cast<NSInteger>(tabId);
+ [segmentedControl_ setSelectedSegment:index];
+ [tabView_ selectTabViewItemAtIndex:index];
+}
+
@end
WebsiteSettingsUIBridge::WebsiteSettingsUIBridge()
@@ -1066,3 +1076,7 @@ void WebsiteSettingsUIBridge::SetPermissionInfo(
void WebsiteSettingsUIBridge::SetFirstVisit(const string16& first_visit) {
[bubble_controller_ setFirstVisit:first_visit];
}
+
+void WebsiteSettingsUIBridge::SetSelectedTab(TabId tab_id) {
+ [bubble_controller_ setSelectedTab:tab_id];
+}
diff --git a/chrome/browser/ui/cocoa/website_settings_bubble_controller_unittest.mm b/chrome/browser/ui/cocoa/website_settings_bubble_controller_unittest.mm
index f6e0e00..ab0816a 100644
--- a/chrome/browser/ui/cocoa/website_settings_bubble_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/website_settings_bubble_controller_unittest.mm
@@ -9,6 +9,8 @@
#include "testing/gtest_mac.h"
@interface WebsiteSettingsBubbleController (ExposedForTesting)
+- (NSSegmentedControl*)segmentedControl;
+- (NSTabView*)tabView;
- (NSView*)permissionsView;
- (NSView*)connectionTabContentView;
- (NSImageView*)identityStatusIcon;
@@ -19,6 +21,12 @@
@end
@implementation WebsiteSettingsBubbleController (ExposedForTesting)
+- (NSSegmentedControl*)segmentedControl {
+ return segmentedControl_.get();
+}
+- (NSTabView*)tabView {
+ return tabView_.get();
+}
- (NSView*)permissionsView {
return permissionsView_;
}
@@ -301,4 +309,20 @@ TEST_F(WebsiteSettingsBubbleControllerTest, SetPermissionInfo) {
EXPECT_EQ(arraysize(kTestPermissionTypes), [labels count]);
}
+TEST_F(WebsiteSettingsBubbleControllerTest, SetSelectedTab) {
+ CreateBubble();
+ NSSegmentedControl* segmentedControl = [controller_ segmentedControl];
+ NSTabView* tabView = [controller_ tabView];
+
+ // Test whether SetSelectedTab properly changes both the segmented control
+ // (which implements the tabs) as well as the visible tab contents.
+ // NOTE: This implicitly (and deliberately) tests that the tabs appear in a
+ // specific order: Permissions, Connection.
+ EXPECT_EQ(0, [segmentedControl selectedSegment]);
+ EXPECT_EQ(0, [tabView indexOfTabViewItem:[tabView selectedTabViewItem]]);
+ bridge_->SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION);
+ EXPECT_EQ(1, [segmentedControl selectedSegment]);
+ EXPECT_EQ(1, [tabView indexOfTabViewItem:[tabView selectedTabViewItem]]);
+}
+
} // namespace
diff --git a/chrome/browser/ui/website_settings/website_settings_ui.h b/chrome/browser/ui/website_settings/website_settings_ui.h
index c6a9d22..e159df0 100644
--- a/chrome/browser/ui/website_settings/website_settings_ui.h
+++ b/chrome/browser/ui/website_settings/website_settings_ui.h
@@ -34,6 +34,13 @@ class Image;
// etc.).
class WebsiteSettingsUI {
public:
+ // The Website Settings UI contains several tabs. Each tab is assiciated with
+ // a unique tab id. The enum |TabId| contains all the ids for the tabs.
+ enum TabId {
+ TAB_ID_PERMISSIONS,
+ TAB_ID_CONNECTION,
+ };
+
// |CookieInfo| contains information about the cookies from a specific source.
// A source can for example be a specific origin or an entire domain.
struct CookieInfo {
@@ -133,6 +140,11 @@ class WebsiteSettingsUI {
// Sets the first visited data. |first_visit| can be an empty string.
virtual void SetFirstVisit(const string16& first_visit) = 0;
+
+ // Selects the tab with the given |tab_id|.
+ // TODO(markusheintz): Implement this on other platforms and make it a pure
+ // virtual function.
+ virtual void SetSelectedTab(TabId tab_id) {}
};
typedef WebsiteSettingsUI::CookieInfoList CookieInfoList;