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

Side by Side Diff: chrome/browser/manifest/manifest_icon_selector_unittest.cc

Issue 1182303005: Fixed the Touchscreen.TouchEventsEnabled histogram to record the correct values on X11 and Ozone ba… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added logging.h include to device_data_manager_test_api_stub.cc. Created 5 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/manifest/manifest_icon_selector.h" 5 #include "chrome/browser/manifest/manifest_icon_selector.h"
6 6
7 #include <string>
8 #include <vector>
9
7 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/gfx/screen.h" 12 #include "ui/gfx/screen.h"
10 #include "ui/gfx/screen_type_delegate.h" 13 #include "ui/gfx/screen_type_delegate.h"
14 #include "ui/gfx/test/test_screen.h"
11 15
12 namespace { 16 namespace {
13 17
14 const int kPreferredIconSize = 48; 18 const int kPreferredIconSize = 48;
15 19
16 } 20 }
17 21
18 // A dummy implementation of gfx::Screen, since ManifestIconSelector needs 22 class ManifestIconSelectorTest : public testing::Test {
19 // access to a gfx::Display's device scale factor. 23 protected:
20 // This is inspired by web_contents_video_capture_device_unittest.cc 24 ManifestIconSelectorTest() {
21 // A bug has been opened to merge all those mocks: http://crbug.com/417227 25 test_screen_.display()->set_id(0x1337);
22 class FakeScreen : public gfx::Screen { 26 test_screen_.display()->set_bounds(gfx::Rect(0, 0, 2560, 1440));
23 public:
24 FakeScreen() : display_(0x1337, gfx::Rect(0, 0, 2560, 1440)) {
25 }
26 ~FakeScreen() override {}
27
28 void SetDisplayDeviceScaleFactor(float device_scale_factor) {
29 display_.set_device_scale_factor(device_scale_factor);
30 } 27 }
31 28
32 // gfx::Screen implementation (only what's needed for testing).
33 gfx::Point GetCursorScreenPoint() override { return gfx::Point(); }
34 gfx::NativeWindow GetWindowUnderCursor() override { return nullptr; }
35 gfx::NativeWindow GetWindowAtScreenPoint(
36 const gfx::Point& point) override { return nullptr; }
37 int GetNumDisplays() const override { return 1; }
38 std::vector<gfx::Display> GetAllDisplays() const override {
39 return std::vector<gfx::Display>(1, display_);
40 }
41 gfx::Display GetDisplayNearestWindow(
42 gfx::NativeView view) const override {
43 return display_;
44 }
45 gfx::Display GetDisplayNearestPoint(
46 const gfx::Point& point) const override {
47 return display_;
48 }
49 gfx::Display GetDisplayMatching(
50 const gfx::Rect& match_rect) const override {
51 return display_;
52 }
53 gfx::Display GetPrimaryDisplay() const override {
54 return display_;
55 }
56 void AddObserver(gfx::DisplayObserver* observer) override {}
57 void RemoveObserver(gfx::DisplayObserver* observer) override {}
58
59 private:
60 gfx::Display display_;
61
62 DISALLOW_COPY_AND_ASSIGN(FakeScreen);
63 };
64
65 class ManifestIconSelectorTest : public testing::Test {
66 protected:
67 ManifestIconSelectorTest() {}
68 ~ManifestIconSelectorTest() override {} 29 ~ManifestIconSelectorTest() override {}
69 30
70 GURL FindBestMatchingIcon(const std::vector<content::Manifest::Icon>& icons) { 31 GURL FindBestMatchingIcon(const std::vector<content::Manifest::Icon>& icons) {
71 return ManifestIconSelector::FindBestMatchingIcon( 32 return ManifestIconSelector::FindBestMatchingIcon(
72 icons, 33 icons, GetPreferredIconSizeInDp(), &test_screen_);
73 GetPreferredIconSizeInDp(),
74 &fake_screen_);
75 } 34 }
76 35
77 void SetDisplayDeviceScaleFactor(float device_scale_factor) { 36 void SetDisplayDeviceScaleFactor(float device_scale_factor) {
78 fake_screen_.SetDisplayDeviceScaleFactor(device_scale_factor); 37 test_screen_.display()->set_device_scale_factor(device_scale_factor);
79 } 38 }
80 39
81 static int GetPreferredIconSizeInDp() { 40 static int GetPreferredIconSizeInDp() {
82 return kPreferredIconSize; 41 return kPreferredIconSize;
83 } 42 }
84 43
85 static content::Manifest::Icon CreateIcon( 44 static content::Manifest::Icon CreateIcon(
86 const std::string& url, 45 const std::string& url,
87 const std::string& type, 46 const std::string& type,
88 double density, 47 double density,
89 const std::vector<gfx::Size> sizes) { 48 const std::vector<gfx::Size> sizes) {
90 content::Manifest::Icon icon; 49 content::Manifest::Icon icon;
91 icon.src = GURL(url); 50 icon.src = GURL(url);
92 if (!type.empty()) 51 if (!type.empty())
93 icon.type = base::NullableString16(base::UTF8ToUTF16(type), false); 52 icon.type = base::NullableString16(base::UTF8ToUTF16(type), false);
94 icon.density = density; 53 icon.density = density;
95 icon.sizes = sizes; 54 icon.sizes = sizes;
96 55
97 return icon; 56 return icon;
98 } 57 }
99 58
100 private: 59 private:
101 FakeScreen fake_screen_; 60 gfx::test::TestScreen test_screen_;
102 61
103 DISALLOW_COPY_AND_ASSIGN(ManifestIconSelectorTest); 62 DISALLOW_COPY_AND_ASSIGN(ManifestIconSelectorTest);
104 }; 63 };
105 64
106 TEST_F(ManifestIconSelectorTest, NoIcons) { 65 TEST_F(ManifestIconSelectorTest, NoIcons) {
107 // No icons should return the empty URL. 66 // No icons should return the empty URL.
108 std::vector<content::Manifest::Icon> icons; 67 std::vector<content::Manifest::Icon> icons;
109 GURL url = FindBestMatchingIcon(icons); 68 GURL url = FindBestMatchingIcon(icons);
110 EXPECT_TRUE(url.is_empty()); 69 EXPECT_TRUE(url.is_empty());
111 } 70 }
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 // 'any' (ie. gfx::Size(0,0)) should be used if there is no icon of a 373 // 'any' (ie. gfx::Size(0,0)) should be used if there is no icon of a
415 // preferred size. An icon with the current device scale factor is preferred 374 // preferred size. An icon with the current device scale factor is preferred
416 // over one with the default density. 375 // over one with the default density.
417 376
418 // 'any' with preferred size => preferred size 377 // 'any' with preferred size => preferred size
419 { 378 {
420 std::vector<gfx::Size> sizes_1; 379 std::vector<gfx::Size> sizes_1;
421 sizes_1.push_back(gfx::Size(GetPreferredIconSizeInDp(), 380 sizes_1.push_back(gfx::Size(GetPreferredIconSizeInDp(),
422 GetPreferredIconSizeInDp())); 381 GetPreferredIconSizeInDp()));
423 std::vector<gfx::Size> sizes_2; 382 std::vector<gfx::Size> sizes_2;
424 sizes_2.push_back(gfx::Size(0,0)); 383 sizes_2.push_back(gfx::Size(0, 0));
425 384
426 std::vector<content::Manifest::Icon> icons; 385 std::vector<content::Manifest::Icon> icons;
427 icons.push_back(CreateIcon("http://foo.com/icon.png", "", 1.0, sizes_1)); 386 icons.push_back(CreateIcon("http://foo.com/icon.png", "", 1.0, sizes_1));
428 icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", 1.0, sizes_2)); 387 icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", 1.0, sizes_2));
429 388
430 GURL url = FindBestMatchingIcon(icons); 389 GURL url = FindBestMatchingIcon(icons);
431 EXPECT_EQ("http://foo.com/icon.png", url.spec()); 390 EXPECT_EQ("http://foo.com/icon.png", url.spec());
432 } 391 }
433 392
434 // 'any' with nearly preferred size => any 393 // 'any' with nearly preferred size => any
435 { 394 {
436 std::vector<gfx::Size> sizes_1; 395 std::vector<gfx::Size> sizes_1;
437 sizes_1.push_back(gfx::Size(GetPreferredIconSizeInDp() + 1, 396 sizes_1.push_back(gfx::Size(GetPreferredIconSizeInDp() + 1,
438 GetPreferredIconSizeInDp() + 1)); 397 GetPreferredIconSizeInDp() + 1));
439 std::vector<gfx::Size> sizes_2; 398 std::vector<gfx::Size> sizes_2;
440 sizes_2.push_back(gfx::Size(0,0)); 399 sizes_2.push_back(gfx::Size(0, 0));
441 400
442 std::vector<content::Manifest::Icon> icons; 401 std::vector<content::Manifest::Icon> icons;
443 icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", 1.0, sizes_1)); 402 icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", 1.0, sizes_1));
444 icons.push_back(CreateIcon("http://foo.com/icon.png", "", 1.0, sizes_2)); 403 icons.push_back(CreateIcon("http://foo.com/icon.png", "", 1.0, sizes_2));
445 404
446 GURL url = FindBestMatchingIcon(icons); 405 GURL url = FindBestMatchingIcon(icons);
447 EXPECT_EQ("http://foo.com/icon.png", url.spec()); 406 EXPECT_EQ("http://foo.com/icon.png", url.spec());
448 } 407 }
449 408
450 // 'any' on default density and current density => current density. 409 // 'any' on default density and current density => current density.
451 { 410 {
452 std::vector<gfx::Size> sizes; 411 std::vector<gfx::Size> sizes;
453 sizes.push_back(gfx::Size(0,0)); 412 sizes.push_back(gfx::Size(0, 0));
454 413
455 std::vector<content::Manifest::Icon> icons; 414 std::vector<content::Manifest::Icon> icons;
456 icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", 1.0, sizes)); 415 icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", 1.0, sizes));
457 icons.push_back(CreateIcon("http://foo.com/icon.png", "", 3.0, sizes)); 416 icons.push_back(CreateIcon("http://foo.com/icon.png", "", 3.0, sizes));
458 417
459 SetDisplayDeviceScaleFactor(3.0f); 418 SetDisplayDeviceScaleFactor(3.0f);
460 GURL url = FindBestMatchingIcon(icons); 419 GURL url = FindBestMatchingIcon(icons);
461 EXPECT_EQ("http://foo.com/icon.png", url.spec()); 420 EXPECT_EQ("http://foo.com/icon.png", url.spec());
462 } 421 }
463 } 422 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698