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

Unified Diff: chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell_unittest.mm

Issue 12042002: Alternate NTP: Add search token to omnibox (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review comments Created 7 years, 11 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/cocoa/location_bar/autocomplete_text_field_cell_unittest.mm
diff --git a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell_unittest.mm b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell_unittest.mm
index fc06bc412d9b1754feb9b238236e7915303ec859..7a43448005a4318b36d4c563a4fe8e2274113af8 100644
--- a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell_unittest.mm
+++ b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell_unittest.mm
@@ -14,6 +14,7 @@
#import "chrome/browser/ui/cocoa/location_bar/location_bar_decoration.h"
#import "chrome/browser/ui/cocoa/location_bar/location_icon_decoration.h"
#import "chrome/browser/ui/cocoa/location_bar/selected_keyword_decoration.h"
+#import "chrome/browser/ui/cocoa/location_bar/separator_decoration.h"
#import "chrome/browser/ui/cocoa/location_bar/star_decoration.h"
#include "grit/theme_resources.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -38,10 +39,24 @@ const CGFloat kNarrowWidth(5.0);
class MockDecoration : public LocationBarDecoration {
public:
- virtual CGFloat GetWidthForSpace(CGFloat width) { return 20.0; }
+ MockDecoration() : LocationBarDecoration(),
+ should_auto_collapse_(false) {
+ }
+
+ virtual CGFloat GetWidthForSpace(CGFloat width, CGFloat text_width) {
+ const CGFloat my_width = 20.0;
Scott Hess - ex-Googler 2013/01/30 23:48:42 Full Monty! kMyWidth!
sail 2013/01/31 03:08:01 Done.
+ if (should_auto_collapse_ && (width - my_width) < text_width)
+ return kOmittedWidth;
+ return my_width;
+ }
+
+ void set_should_auto_collapse(bool value) { should_auto_collapse_ = value; }
MOCK_METHOD2(DrawInFrame, void(NSRect frame, NSView* control_view));
MOCK_METHOD0(GetToolTip, NSString*());
+
+ private:
+ bool should_auto_collapse_;
};
class AutocompleteTextFieldCellTest : public CocoaTest {
@@ -105,7 +120,7 @@ TEST_F(AutocompleteTextFieldCellTest, DISABLED_FocusedDisplay) {
selected_keyword_decoration.SetVisible(true);
selected_keyword_decoration.SetKeyword(ASCIIToUTF16("Google"), false);
[cell addLeftDecoration:&selected_keyword_decoration];
- EXPECT_NE(selected_keyword_decoration.GetWidthForSpace(kVeryWide),
+ EXPECT_NE(selected_keyword_decoration.GetWidthForSpace(kVeryWide, 0),
LocationBarDecoration::kOmittedWidth);
// TODO(shess): This really wants a |LocationBarViewMac|, but only a
@@ -115,7 +130,7 @@ TEST_F(AutocompleteTextFieldCellTest, DISABLED_FocusedDisplay) {
location_icon_decoration.SetVisible(true);
location_icon_decoration.SetImage([NSImage imageNamed:@"NSApplicationIcon"]);
[cell addLeftDecoration:&location_icon_decoration];
- EXPECT_NE(location_icon_decoration.GetWidthForSpace(kVeryWide),
+ EXPECT_NE(location_icon_decoration.GetWidthForSpace(kVeryWide, 0),
LocationBarDecoration::kOmittedWidth);
EVBubbleDecoration ev_bubble_decoration(&location_icon_decoration,
@@ -124,20 +139,20 @@ TEST_F(AutocompleteTextFieldCellTest, DISABLED_FocusedDisplay) {
ev_bubble_decoration.SetImage([NSImage imageNamed:@"NSApplicationIcon"]);
ev_bubble_decoration.SetLabel(@"Application");
[cell addLeftDecoration:&ev_bubble_decoration];
- EXPECT_NE(ev_bubble_decoration.GetWidthForSpace(kVeryWide),
+ EXPECT_NE(ev_bubble_decoration.GetWidthForSpace(kVeryWide, 0),
LocationBarDecoration::kOmittedWidth);
StarDecoration star_decoration(NULL);
star_decoration.SetVisible(true);
[cell addRightDecoration:&star_decoration];
- EXPECT_NE(star_decoration.GetWidthForSpace(kVeryWide),
+ EXPECT_NE(star_decoration.GetWidthForSpace(kVeryWide, 0),
LocationBarDecoration::kOmittedWidth);
KeywordHintDecoration keyword_hint_decoration([view_ font]);
keyword_hint_decoration.SetVisible(true);
keyword_hint_decoration.SetKeyword(ASCIIToUTF16("google"), false);
[cell addRightDecoration:&keyword_hint_decoration];
- EXPECT_NE(keyword_hint_decoration.GetWidthForSpace(kVeryWide),
+ EXPECT_NE(keyword_hint_decoration.GetWidthForSpace(kVeryWide, 0),
LocationBarDecoration::kOmittedWidth);
// Make sure we're actually calling |DrawInFrame()|.
@@ -145,7 +160,7 @@ TEST_F(AutocompleteTextFieldCellTest, DISABLED_FocusedDisplay) {
mock_decoration.SetVisible(true);
[cell addLeftDecoration:&mock_decoration];
EXPECT_CALL(mock_decoration, DrawInFrame(_, _));
- EXPECT_NE(mock_decoration.GetWidthForSpace(kVeryWide),
+ EXPECT_NE(mock_decoration.GetWidthForSpace(kVeryWide, 0),
LocationBarDecoration::kOmittedWidth);
[view_ display];
@@ -299,4 +314,62 @@ TEST_F(AutocompleteTextFieldCellTest, UpdateToolTips) {
EXPECT_OCMOCK_VERIFY(controlView);
}
+TEST_F(AutocompleteTextFieldCellTest, HideUnneededSeparators) {
+ AutocompleteTextFieldCell* cell =
+ static_cast<AutocompleteTextFieldCell*>([view_ cell]);
+ const NSRect bounds = [view_ bounds];
+
+ SeparatorDecoration separator;
+ [cell clearDecorations];
+ [cell addRightDecoration:&mock_right_decoration0_];
+ [cell addRightDecoration:&separator];
+ [cell addRightDecoration:&mock_right_decoration1_];
+ separator.SetVisible(true);
+
+ // Verify that a separator between two decorations is visible.
+ mock_right_decoration0_.SetVisible(true);
+ mock_right_decoration1_.SetVisible(true);
+ NSRect rect = [cell frameForDecoration:&separator inFrame:bounds];
+ EXPECT_LT(0, NSWidth(rect));
+
+ // Verify that a separator with no visible decorations on the right is hidden.
+ mock_right_decoration0_.SetVisible(false);
+ mock_right_decoration1_.SetVisible(true);
+ rect = [cell frameForDecoration:&separator inFrame:bounds];
+ EXPECT_EQ(0, NSWidth(rect));
+
+ // Verify that a separator with no visible decorations on the left is hidden.
+ mock_right_decoration0_.SetVisible(true);
+ mock_right_decoration1_.SetVisible(false);
+ rect = [cell frameForDecoration:&separator inFrame:bounds];
+ EXPECT_EQ(0, NSWidth(rect));
Scott Hess - ex-Googler 2013/01/30 23:48:42 As long as you're here, check with both hidden, to
sail 2013/01/31 03:08:01 Done.
+}
+
+TEST_F(AutocompleteTextFieldCellTest, AutoCollapse) {
+ AutocompleteTextFieldCell* cell =
+ static_cast<AutocompleteTextFieldCell*>([view_ cell]);
+ const NSRect bounds = [view_ bounds];
+ // Force the string to overlap decorations.
+ [cell setStringValue:@"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"];
+
+ // Verify that the decoration is visible without auto collapse.
+ mock_right_decoration0_.SetVisible(true);
+ mock_right_decoration0_.set_should_auto_collapse(false);
+ NSRect rect = [cell frameForDecoration:&mock_right_decoration0_
+ inFrame:bounds];
+ EXPECT_LT(0, NSWidth(rect));
+
+ // Verify that the decoration is hidden with auto collapse.
+ mock_right_decoration0_.set_should_auto_collapse(true);
+ rect = [cell frameForDecoration:&mock_right_decoration0_
+ inFrame:bounds];
+ EXPECT_EQ(0, NSWidth(rect));
+
+ // Verify that the decoration is visible with auto collapse and short string.
+ [cell setStringValue:@"WWW"];
+ rect = [cell frameForDecoration:&mock_right_decoration0_
+ inFrame:bounds];
+ EXPECT_LT(0, NSWidth(rect));
+}
+
} // namespace

Powered by Google App Engine
This is Rietveld 408576698