OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/ash/launcher/launcher_favicon_loader.h" | 5 #include "chrome/browser/ui/ash/launcher/launcher_favicon_loader.h" |
6 | 6 |
7 #include "ash/shelf/shelf_constants.h" | 7 #include "ash/shelf/shelf_constants.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
11 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 11 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
12 #include "chrome/test/base/in_process_browser_test.h" | 12 #include "chrome/test/base/in_process_browser_test.h" |
13 #include "chrome/test/base/ui_test_utils.h" | 13 #include "chrome/test/base/ui_test_utils.h" |
14 #include "content/public/browser/web_contents.h" | 14 #include "content/public/browser/web_contents.h" |
15 #include "content/public/browser/web_contents_observer.h" | 15 #include "content/public/browser/web_contents_observer.h" |
| 16 #include "net/test/embedded_test_server/embedded_test_server.h" |
16 #include "third_party/skia/include/core/SkBitmap.h" | 17 #include "third_party/skia/include/core/SkBitmap.h" |
17 | 18 |
18 using content::WebContents; | 19 using content::WebContents; |
19 using content::WebContentsObserver; | 20 using content::WebContentsObserver; |
20 | 21 |
21 namespace { | 22 namespace { |
22 | 23 |
23 // Observer class to determine when favicons have completed loading. | 24 // Observer class to determine when favicons have completed loading. |
24 class ContentsObserver : public WebContentsObserver { | 25 class ContentsObserver : public WebContentsObserver { |
25 public: | 26 public: |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 browser()->tab_strip_model()->GetActiveWebContents(); | 72 browser()->tab_strip_model()->GetActiveWebContents(); |
72 contents_observer_.reset(new ContentsObserver(web_contents)); | 73 contents_observer_.reset(new ContentsObserver(web_contents)); |
73 favicon_loader_.reset(new LauncherFaviconLoader(this, web_contents)); | 74 favicon_loader_.reset(new LauncherFaviconLoader(this, web_contents)); |
74 } | 75 } |
75 | 76 |
76 // LauncherFaviconLoader::Delegate overrides: | 77 // LauncherFaviconLoader::Delegate overrides: |
77 void FaviconUpdated() override { favicon_updated_ = true; } | 78 void FaviconUpdated() override { favicon_updated_ = true; } |
78 | 79 |
79 protected: | 80 protected: |
80 bool NavigateTo(const char* url) { | 81 bool NavigateTo(const char* url) { |
81 std::string url_path = base::StringPrintf("files/ash/launcher/%s", url); | 82 std::string url_path = base::StringPrintf("/ash/launcher/%s", url); |
82 ui_test_utils::NavigateToURL(browser(), test_server()->GetURL(url_path)); | 83 ui_test_utils::NavigateToURL(browser(), |
| 84 embedded_test_server()->GetURL(url_path)); |
83 return true; | 85 return true; |
84 } | 86 } |
85 | 87 |
86 bool WaitForContentsLoaded() { | 88 bool WaitForContentsLoaded() { |
87 const int64 max_seconds = 10; | 89 const int64 max_seconds = 10; |
88 base::Time start_time = base::Time::Now(); | 90 base::Time start_time = base::Time::Now(); |
89 while (!(contents_observer_->loaded() && | 91 while (!(contents_observer_->loaded() && |
90 contents_observer_->got_favicons())) { | 92 contents_observer_->got_favicons())) { |
91 content::RunAllPendingInMessageLoop(); | 93 content::RunAllPendingInMessageLoop(); |
92 base::TimeDelta delta = base::Time::Now() - start_time; | 94 base::TimeDelta delta = base::Time::Now() - start_time; |
(...skipping 25 matching lines...) Expand all Loading... |
118 | 120 |
119 bool favicon_updated_; | 121 bool favicon_updated_; |
120 scoped_ptr<ContentsObserver> contents_observer_; | 122 scoped_ptr<ContentsObserver> contents_observer_; |
121 scoped_ptr<LauncherFaviconLoader> favicon_loader_; | 123 scoped_ptr<LauncherFaviconLoader> favicon_loader_; |
122 | 124 |
123 private: | 125 private: |
124 DISALLOW_COPY_AND_ASSIGN(LauncherFaviconLoaderBrowsertest); | 126 DISALLOW_COPY_AND_ASSIGN(LauncherFaviconLoaderBrowsertest); |
125 }; | 127 }; |
126 | 128 |
127 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, SmallLauncherIcon) { | 129 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, SmallLauncherIcon) { |
128 ASSERT_TRUE(test_server()->Start()); | 130 ASSERT_TRUE(embedded_test_server()->Start()); |
129 ASSERT_TRUE(NavigateTo("launcher-smallfavicon.html")); | 131 ASSERT_TRUE(NavigateTo("launcher-smallfavicon.html")); |
130 EXPECT_TRUE(WaitForContentsLoaded()); | 132 EXPECT_TRUE(WaitForContentsLoaded()); |
131 EXPECT_TRUE(WaitForFaviconUpdated()); | 133 EXPECT_TRUE(WaitForFaviconUpdated()); |
132 | 134 |
133 // No large favicons specified, bitmap should be empty. | 135 // No large favicons specified, bitmap should be empty. |
134 EXPECT_TRUE(favicon_loader_->GetFavicon().empty()); | 136 EXPECT_TRUE(favicon_loader_->GetFavicon().empty()); |
135 } | 137 } |
136 | 138 |
137 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, LargeLauncherIcon) { | 139 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, LargeLauncherIcon) { |
138 ASSERT_TRUE(test_server()->Start()); | 140 ASSERT_TRUE(embedded_test_server()->Start()); |
139 ASSERT_TRUE(NavigateTo("launcher-largefavicon.html")); | 141 ASSERT_TRUE(NavigateTo("launcher-largefavicon.html")); |
140 EXPECT_TRUE(WaitForContentsLoaded()); | 142 EXPECT_TRUE(WaitForContentsLoaded()); |
141 EXPECT_TRUE(WaitForFaviconUpdated()); | 143 EXPECT_TRUE(WaitForFaviconUpdated()); |
142 | 144 |
143 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); | 145 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); |
144 EXPECT_EQ(128, favicon_loader_->GetFavicon().height()); | 146 EXPECT_EQ(128, favicon_loader_->GetFavicon().height()); |
145 } | 147 } |
146 | 148 |
147 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, ManyLauncherIcons) { | 149 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, ManyLauncherIcons) { |
148 ASSERT_TRUE(test_server()->Start()); | 150 ASSERT_TRUE(embedded_test_server()->Start()); |
149 ASSERT_TRUE(NavigateTo("launcher-manyfavicon.html")); | 151 ASSERT_TRUE(NavigateTo("launcher-manyfavicon.html")); |
150 EXPECT_TRUE(WaitForContentsLoaded()); | 152 EXPECT_TRUE(WaitForContentsLoaded()); |
151 EXPECT_TRUE(WaitForFaviconUpdated()); | 153 EXPECT_TRUE(WaitForFaviconUpdated()); |
152 | 154 |
153 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); | 155 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); |
154 // When multiple favicons are present, the correctly sized icon should be | 156 // When multiple favicons are present, the correctly sized icon should be |
155 // chosen. The icons are sized assuming ash::kShelfSize < 128. | 157 // chosen. The icons are sized assuming ash::kShelfSize < 128. |
156 EXPECT_GT(128, ash::kShelfSize); | 158 EXPECT_GT(128, ash::kShelfSize); |
157 EXPECT_EQ(48, favicon_loader_->GetFavicon().height()); | 159 EXPECT_EQ(48, favicon_loader_->GetFavicon().height()); |
158 } | 160 } |
159 | 161 |
160 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, ChangeLauncherIcons) { | 162 IN_PROC_BROWSER_TEST_F(LauncherFaviconLoaderBrowsertest, ChangeLauncherIcons) { |
161 ASSERT_TRUE(test_server()->Start()); | 163 ASSERT_TRUE(embedded_test_server()->Start()); |
162 ASSERT_TRUE(NavigateTo("launcher-manyfavicon.html")); | 164 ASSERT_TRUE(NavigateTo("launcher-manyfavicon.html")); |
163 EXPECT_TRUE(WaitForContentsLoaded()); | 165 EXPECT_TRUE(WaitForContentsLoaded()); |
164 EXPECT_TRUE(WaitForFaviconUpdated()); | 166 EXPECT_TRUE(WaitForFaviconUpdated()); |
165 | 167 |
166 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); | 168 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); |
167 EXPECT_EQ(48, favicon_loader_->GetFavicon().height()); | 169 EXPECT_EQ(48, favicon_loader_->GetFavicon().height()); |
168 ASSERT_NO_FATAL_FAILURE(ResetDownloads()); | 170 ASSERT_NO_FATAL_FAILURE(ResetDownloads()); |
169 | 171 |
170 ASSERT_TRUE(NavigateTo("launcher-smallfavicon.html")); | 172 ASSERT_TRUE(NavigateTo("launcher-smallfavicon.html")); |
171 ASSERT_TRUE(WaitForContentsLoaded()); | 173 ASSERT_TRUE(WaitForContentsLoaded()); |
172 EXPECT_TRUE(WaitForFaviconUpdated()); | 174 EXPECT_TRUE(WaitForFaviconUpdated()); |
173 | 175 |
174 EXPECT_TRUE(favicon_loader_->GetFavicon().empty()); | 176 EXPECT_TRUE(favicon_loader_->GetFavicon().empty()); |
175 ASSERT_NO_FATAL_FAILURE(ResetDownloads()); | 177 ASSERT_NO_FATAL_FAILURE(ResetDownloads()); |
176 | 178 |
177 ASSERT_TRUE(NavigateTo("launcher-largefavicon.html")); | 179 ASSERT_TRUE(NavigateTo("launcher-largefavicon.html")); |
178 ASSERT_TRUE(WaitForContentsLoaded()); | 180 ASSERT_TRUE(WaitForContentsLoaded()); |
179 EXPECT_TRUE(WaitForFaviconUpdated()); | 181 EXPECT_TRUE(WaitForFaviconUpdated()); |
180 | 182 |
181 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); | 183 EXPECT_FALSE(favicon_loader_->GetFavicon().empty()); |
182 EXPECT_EQ(128, favicon_loader_->GetFavicon().height()); | 184 EXPECT_EQ(128, favicon_loader_->GetFavicon().height()); |
183 } | 185 } |
OLD | NEW |