| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/autocomplete/autocomplete_popup_view_gtk.h" | 5 #include "chrome/browser/autocomplete/autocomplete_popup_view_gtk.h" |
| 6 | 6 |
| 7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
| 8 | 8 |
| 9 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/autocomplete/autocomplete.h" | 10 #include "chrome/browser/autocomplete/autocomplete.h" |
| 10 #include "chrome/browser/autocomplete/autocomplete_match.h" | 11 #include "chrome/browser/autocomplete/autocomplete_match.h" |
| 11 #include "chrome/browser/ui/gtk/gtk_util.h" | 12 #include "chrome/browser/ui/gtk/gtk_util.h" |
| 12 #include "testing/platform_test.h" | 13 #include "testing/platform_test.h" |
| 13 | 14 |
| 14 namespace { | 15 namespace { |
| 15 | 16 |
| 16 static const float kLargeWidth = 10000; | 17 static const float kLargeWidth = 10000; |
| 17 | 18 |
| 18 const GdkColor kContentTextColor = GDK_COLOR_RGB(0x00, 0x00, 0x00); | 19 const GdkColor kContentTextColor = GDK_COLOR_RGB(0x00, 0x00, 0x00); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 37 gtk_widget_destroy(window_); | 38 gtk_widget_destroy(window_); |
| 38 | 39 |
| 39 PlatformTest::TearDown(); | 40 PlatformTest::TearDown(); |
| 40 } | 41 } |
| 41 | 42 |
| 42 // The google C++ Testing Framework documentation suggests making | 43 // The google C++ Testing Framework documentation suggests making |
| 43 // accessors in the fixture so that each test doesn't need to be a | 44 // accessors in the fixture so that each test doesn't need to be a |
| 44 // friend of the class being tested. This method just proxies the | 45 // friend of the class being tested. This method just proxies the |
| 45 // call through after adding the fixture's layout_. | 46 // call through after adding the fixture's layout_. |
| 46 void SetupLayoutForMatch( | 47 void SetupLayoutForMatch( |
| 47 const std::wstring& text, | 48 const string16& text, |
| 48 const AutocompleteMatch::ACMatchClassifications& classifications, | 49 const AutocompleteMatch::ACMatchClassifications& classifications, |
| 49 const GdkColor* base_color, | 50 const GdkColor* base_color, |
| 50 const GdkColor* dim_color, | 51 const GdkColor* dim_color, |
| 51 const GdkColor* url_color, | 52 const GdkColor* url_color, |
| 52 const std::string& prefix_text) { | 53 const std::string& prefix_text) { |
| 53 AutocompletePopupViewGtk::SetupLayoutForMatch(layout_, | 54 AutocompletePopupViewGtk::SetupLayoutForMatch(layout_, |
| 54 text, | 55 text, |
| 55 classifications, | 56 classifications, |
| 56 base_color, | 57 base_color, |
| 57 dim_color, | 58 dim_color, |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 PangoLayout* layout_; | 182 PangoLayout* layout_; |
| 182 | 183 |
| 183 private: | 184 private: |
| 184 DISALLOW_COPY_AND_ASSIGN(AutocompletePopupViewGtkTest); | 185 DISALLOW_COPY_AND_ASSIGN(AutocompletePopupViewGtkTest); |
| 185 }; | 186 }; |
| 186 | 187 |
| 187 // Simple inputs with no matches should result in styled output who's | 188 // Simple inputs with no matches should result in styled output who's |
| 188 // text matches the input string, with the passed-in color, and | 189 // text matches the input string, with the passed-in color, and |
| 189 // nothing bolded. | 190 // nothing bolded. |
| 190 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringNoMatch) { | 191 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringNoMatch) { |
| 191 const std::wstring kContents = L"This is a test"; | 192 const string16 kContents = ASCIIToUTF16("This is a test"); |
| 192 | 193 |
| 193 AutocompleteMatch::ACMatchClassifications classifications; | 194 AutocompleteMatch::ACMatchClassifications classifications; |
| 194 | 195 |
| 195 SetupLayoutForMatch(kContents, | 196 SetupLayoutForMatch(kContents, |
| 196 classifications, | 197 classifications, |
| 197 &kContentTextColor, | 198 &kContentTextColor, |
| 198 &kDimContentTextColor, | 199 &kDimContentTextColor, |
| 199 &kURLTextColor, | 200 &kURLTextColor, |
| 200 std::string()); | 201 std::string()); |
| 201 | 202 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 217 EXPECT_EQ(kContents.size(), weightLength); | 218 EXPECT_EQ(kContents.size(), weightLength); |
| 218 EXPECT_TRUE(RunHasWeight(0U, | 219 EXPECT_TRUE(RunHasWeight(0U, |
| 219 kContents.size(), | 220 kContents.size(), |
| 220 PANGO_WEIGHT_NORMAL)); | 221 PANGO_WEIGHT_NORMAL)); |
| 221 } | 222 } |
| 222 } | 223 } |
| 223 | 224 |
| 224 // Identical to DecorateMatchedStringNoMatch, except test that URL | 225 // Identical to DecorateMatchedStringNoMatch, except test that URL |
| 225 // style gets a different color than we passed in. | 226 // style gets a different color than we passed in. |
| 226 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringURLNoMatch) { | 227 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringURLNoMatch) { |
| 227 const std::wstring kContents = L"This is a test"; | 228 const string16 kContents = ASCIIToUTF16("This is a test"); |
| 228 AutocompleteMatch::ACMatchClassifications classifications; | 229 AutocompleteMatch::ACMatchClassifications classifications; |
| 229 | 230 |
| 230 classifications.push_back( | 231 classifications.push_back( |
| 231 ACMatchClassification(0U, ACMatchClassification::URL)); | 232 ACMatchClassification(0U, ACMatchClassification::URL)); |
| 232 | 233 |
| 233 SetupLayoutForMatch(kContents, | 234 SetupLayoutForMatch(kContents, |
| 234 classifications, | 235 classifications, |
| 235 &kContentTextColor, | 236 &kContentTextColor, |
| 236 &kDimContentTextColor, | 237 &kDimContentTextColor, |
| 237 &kURLTextColor, | 238 &kURLTextColor, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 253 if (weightLength) { | 254 if (weightLength) { |
| 254 EXPECT_EQ(kContents.size(), weightLength); | 255 EXPECT_EQ(kContents.size(), weightLength); |
| 255 EXPECT_TRUE(RunHasWeight(0U, | 256 EXPECT_TRUE(RunHasWeight(0U, |
| 256 kContents.size(), | 257 kContents.size(), |
| 257 PANGO_WEIGHT_NORMAL)); | 258 PANGO_WEIGHT_NORMAL)); |
| 258 } | 259 } |
| 259 } | 260 } |
| 260 | 261 |
| 261 // Test that DIM works as expected. | 262 // Test that DIM works as expected. |
| 262 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringDimNoMatch) { | 263 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringDimNoMatch) { |
| 263 const std::wstring kContents = L"This is a test"; | 264 const string16 kContents = ASCIIToUTF16("This is a test"); |
| 264 // Dim "is". | 265 // Dim "is". |
| 265 const guint runLength1 = 5, runLength2 = 2, runLength3 = 7; | 266 const guint runLength1 = 5, runLength2 = 2, runLength3 = 7; |
| 266 // Make sure nobody messed up the inputs. | 267 // Make sure nobody messed up the inputs. |
| 267 EXPECT_EQ(runLength1 + runLength2 + runLength3, kContents.size()); | 268 EXPECT_EQ(runLength1 + runLength2 + runLength3, kContents.size()); |
| 268 | 269 |
| 269 // Push each run onto classifications. | 270 // Push each run onto classifications. |
| 270 AutocompleteMatch::ACMatchClassifications classifications; | 271 AutocompleteMatch::ACMatchClassifications classifications; |
| 271 classifications.push_back( | 272 classifications.push_back( |
| 272 ACMatchClassification(0U, ACMatchClassification::NONE)); | 273 ACMatchClassification(0U, ACMatchClassification::NONE)); |
| 273 classifications.push_back( | 274 classifications.push_back( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 EXPECT_EQ(kContents.size(), weightLength); | 316 EXPECT_EQ(kContents.size(), weightLength); |
| 316 EXPECT_TRUE(RunHasWeight(0U, | 317 EXPECT_TRUE(RunHasWeight(0U, |
| 317 kContents.size(), | 318 kContents.size(), |
| 318 PANGO_WEIGHT_NORMAL)); | 319 PANGO_WEIGHT_NORMAL)); |
| 319 } | 320 } |
| 320 } | 321 } |
| 321 | 322 |
| 322 // Test that the matched run gets bold-faced, but keeps the same | 323 // Test that the matched run gets bold-faced, but keeps the same |
| 323 // color. | 324 // color. |
| 324 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringMatch) { | 325 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringMatch) { |
| 325 const std::wstring kContents = L"This is a test"; | 326 const string16 kContents = ASCIIToUTF16("This is a test"); |
| 326 // Match "is". | 327 // Match "is". |
| 327 const guint runLength1 = 5, runLength2 = 2, runLength3 = 7; | 328 const guint runLength1 = 5, runLength2 = 2, runLength3 = 7; |
| 328 // Make sure nobody messed up the inputs. | 329 // Make sure nobody messed up the inputs. |
| 329 EXPECT_EQ(runLength1 + runLength2 + runLength3, kContents.size()); | 330 EXPECT_EQ(runLength1 + runLength2 + runLength3, kContents.size()); |
| 330 | 331 |
| 331 // Push each run onto classifications. | 332 // Push each run onto classifications. |
| 332 AutocompleteMatch::ACMatchClassifications classifications; | 333 AutocompleteMatch::ACMatchClassifications classifications; |
| 333 classifications.push_back( | 334 classifications.push_back( |
| 334 ACMatchClassification(0U, ACMatchClassification::NONE)); | 335 ACMatchClassification(0U, ACMatchClassification::NONE)); |
| 335 classifications.push_back( | 336 classifications.push_back( |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 RunLengthForAttrType(0U, | 374 RunLengthForAttrType(0U, |
| 374 kContents.size(), | 375 kContents.size(), |
| 375 PANGO_ATTR_FOREGROUND)); | 376 PANGO_ATTR_FOREGROUND)); |
| 376 EXPECT_TRUE(RunHasColor(0U, | 377 EXPECT_TRUE(RunHasColor(0U, |
| 377 kContents.size(), | 378 kContents.size(), |
| 378 kContentTextColor)); | 379 kContentTextColor)); |
| 379 } | 380 } |
| 380 | 381 |
| 381 // Just like DecorateMatchedStringURLMatch, this time with URL style. | 382 // Just like DecorateMatchedStringURLMatch, this time with URL style. |
| 382 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringURLMatch) { | 383 TEST_F(AutocompletePopupViewGtkTest, DecorateMatchedStringURLMatch) { |
| 383 const std::wstring kContents = L"http://hello.world/"; | 384 const string16 kContents = ASCIIToUTF16("http://hello.world/"); |
| 384 // Match "hello". | 385 // Match "hello". |
| 385 const guint runLength1 = 7, runLength2 = 5, runLength3 = 7; | 386 const guint runLength1 = 7, runLength2 = 5, runLength3 = 7; |
| 386 // Make sure nobody messed up the inputs. | 387 // Make sure nobody messed up the inputs. |
| 387 EXPECT_EQ(runLength1 + runLength2 + runLength3, kContents.size()); | 388 EXPECT_EQ(runLength1 + runLength2 + runLength3, kContents.size()); |
| 388 | 389 |
| 389 // Push each run onto classifications. | 390 // Push each run onto classifications. |
| 390 AutocompleteMatch::ACMatchClassifications classifications; | 391 AutocompleteMatch::ACMatchClassifications classifications; |
| 391 classifications.push_back( | 392 classifications.push_back( |
| 392 ACMatchClassification(0U, ACMatchClassification::URL)); | 393 ACMatchClassification(0U, ACMatchClassification::URL)); |
| 393 const int kURLMatch = | 394 const int kURLMatch = |
| (...skipping 15 matching lines...) Expand all Loading... |
| 409 // One color for the entire string, and it's not the one we passed | 410 // One color for the entire string, and it's not the one we passed |
| 410 // in. | 411 // in. |
| 411 EXPECT_EQ(kContents.size(), | 412 EXPECT_EQ(kContents.size(), |
| 412 RunLengthForAttrType(0U, | 413 RunLengthForAttrType(0U, |
| 413 kContents.size(), | 414 kContents.size(), |
| 414 PANGO_ATTR_FOREGROUND)); | 415 PANGO_ATTR_FOREGROUND)); |
| 415 EXPECT_TRUE(RunHasColor(0U, | 416 EXPECT_TRUE(RunHasColor(0U, |
| 416 kContents.size(), | 417 kContents.size(), |
| 417 kURLTextColor)); | 418 kURLTextColor)); |
| 418 } | 419 } |
| OLD | NEW |