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

Side by Side Diff: chrome/test/plugin/pdf_browsertest.cc

Issue 7327007: Moving notification types which are chrome specific to a new header file chrome_notification_type... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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 | Annotate | Revision Log
OLDNEW
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 "base/file_util.h" 5 #include "base/file_util.h"
6 #include "base/path_service.h" 6 #include "base/path_service.h"
7 #include "base/string_number_conversions.h" 7 #include "base/string_number_conversions.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/browser_window.h" 11 #include "chrome/browser/ui/browser_window.h"
12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
13 #include "chrome/browser/ui/window_sizer.h" 13 #include "chrome/browser/ui/window_sizer.h"
14 #include "chrome/common/chrome_paths.h" 14 #include "chrome/common/chrome_paths.h"
15 #include "chrome/test/in_process_browser_test.h" 15 #include "chrome/test/in_process_browser_test.h"
16 #include "chrome/test/ui_test_utils.h" 16 #include "chrome/test/ui_test_utils.h"
17 #include "content/browser/renderer_host/render_view_host.h" 17 #include "content/browser/renderer_host/render_view_host.h"
18 #include "content/browser/tab_contents/tab_contents.h" 18 #include "content/browser/tab_contents/tab_contents.h"
19 #include "content/common/content_notification_types.h"
19 #include "content/common/notification_observer.h" 20 #include "content/common/notification_observer.h"
20 #include "content/common/notification_type.h"
21 #include "net/test/test_server.h" 21 #include "net/test/test_server.h"
22 #include "ui/base/clipboard/clipboard.h" 22 #include "ui/base/clipboard/clipboard.h"
23 #include "ui/gfx/codec/png_codec.h" 23 #include "ui/gfx/codec/png_codec.h"
24 24
25 namespace { 25 namespace {
26 26
27 // Include things like browser frame and scrollbar and make sure we're bigger 27 // Include things like browser frame and scrollbar and make sure we're bigger
28 // than the test pdf document. 28 // than the test pdf document.
29 static const int kBrowserWidth = 1000; 29 static const int kBrowserWidth = 1000;
30 static const int kBrowserHeight = 600; 30 static const int kBrowserHeight = 600;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 FilePath(FILE_PATH_LITERAL("pdf_browsertest.pdf")))); 74 FilePath(FILE_PATH_LITERAL("pdf_browsertest.pdf"))));
75 ui_test_utils::NavigateToURL(browser(), url); 75 ui_test_utils::NavigateToURL(browser(), url);
76 } 76 }
77 77
78 void VerifySnapshot(const std::string& expected_filename) { 78 void VerifySnapshot(const std::string& expected_filename) {
79 snapshot_different_ = true; 79 snapshot_different_ = true;
80 expected_filename_ = expected_filename; 80 expected_filename_ = expected_filename;
81 TabContentsWrapper* wrapper = browser()->GetSelectedTabContentsWrapper(); 81 TabContentsWrapper* wrapper = browser()->GetSelectedTabContentsWrapper();
82 wrapper->CaptureSnapshot(); 82 wrapper->CaptureSnapshot();
83 ui_test_utils::RegisterAndWait(this, 83 ui_test_utils::RegisterAndWait(this,
84 NotificationType::TAB_SNAPSHOT_TAKEN, 84 chrome::TAB_SNAPSHOT_TAKEN,
85 Source<TabContentsWrapper>(wrapper)); 85 Source<TabContentsWrapper>(wrapper));
86 ASSERT_FALSE(snapshot_different_) << "Rendering didn't match, see result " 86 ASSERT_FALSE(snapshot_different_) << "Rendering didn't match, see result "
87 "at " << snapshot_filename_.value().c_str(); 87 "at " << snapshot_filename_.value().c_str();
88 } 88 }
89 89
90 void WaitForResponse() { 90 void WaitForResponse() {
91 // Even if the plugin has loaded the data or scrolled, because of how 91 // Even if the plugin has loaded the data or scrolled, because of how
92 // pepper painting works, we might not have the data. One way to force this 92 // pepper painting works, we might not have the data. One way to force this
93 // to be flushed is to do a find operation, since on this two-page test 93 // to be flushed is to do a find operation, since on this two-page test
94 // document, it'll wait for us to flush the renderer message loop twice and 94 // document, it'll wait for us to flush the renderer message loop twice and
95 // also the browser's once, at which point we're guaranteed to have updated 95 // also the browser's once, at which point we're guaranteed to have updated
96 // the backingstore. Hacky, but it works. 96 // the backingstore. Hacky, but it works.
97 // Note that we need to change the text each time, because if we don't the 97 // Note that we need to change the text each time, because if we don't the
98 // renderer code will think the second message is to go to next result, but 98 // renderer code will think the second message is to go to next result, but
99 // there are none so the plugin will assert. 99 // there are none so the plugin will assert.
100 100
101 string16 query = UTF8ToUTF16( 101 string16 query = UTF8ToUTF16(
102 std::string("xyzxyz" + base::IntToString(next_dummy_search_value_++))); 102 std::string("xyzxyz" + base::IntToString(next_dummy_search_value_++)));
103 ASSERT_EQ(0, ui_test_utils::FindInPage( 103 ASSERT_EQ(0, ui_test_utils::FindInPage(
104 browser()->GetSelectedTabContentsWrapper(), query, true, false, NULL)); 104 browser()->GetSelectedTabContentsWrapper(), query, true, false, NULL));
105 } 105 }
106 106
107 private: 107 private:
108 // NotificationObserver 108 // NotificationObserver
109 virtual void Observe(NotificationType type, 109 virtual void Observe(int type,
110 const NotificationSource& source, 110 const NotificationSource& source,
111 const NotificationDetails& details) { 111 const NotificationDetails& details) {
112 if (type == NotificationType::TAB_SNAPSHOT_TAKEN) { 112 if (type == chrome::TAB_SNAPSHOT_TAKEN) {
113 MessageLoopForUI::current()->Quit(); 113 MessageLoopForUI::current()->Quit();
114 FilePath reference = ui_test_utils::GetTestFilePath( 114 FilePath reference = ui_test_utils::GetTestFilePath(
115 GetPDFTestDir(), 115 GetPDFTestDir(),
116 FilePath().AppendASCII(expected_filename_)); 116 FilePath().AppendASCII(expected_filename_));
117 base::PlatformFileInfo info; 117 base::PlatformFileInfo info;
118 ASSERT_TRUE(file_util::GetFileInfo(reference, &info)); 118 ASSERT_TRUE(file_util::GetFileInfo(reference, &info));
119 int size = static_cast<size_t>(info.size); 119 int size = static_cast<size_t>(info.size);
120 scoped_array<char> data(new char[size]); 120 scoped_array<char> data(new char[size]);
121 ASSERT_EQ(size, file_util::ReadFile(reference, data.get(), size)); 121 ASSERT_EQ(size, file_util::ReadFile(reference, data.get(), size));
122 122
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 } 165 }
166 166
167 if (snapshot_different_) { 167 if (snapshot_different_) {
168 std::vector<unsigned char> png_data; 168 std::vector<unsigned char> png_data;
169 gfx::PNGCodec::EncodeBGRASkBitmap(*bitmap, false, &png_data); 169 gfx::PNGCodec::EncodeBGRASkBitmap(*bitmap, false, &png_data);
170 if (file_util::CreateTemporaryFile(&snapshot_filename_)) { 170 if (file_util::CreateTemporaryFile(&snapshot_filename_)) {
171 file_util::WriteFile(snapshot_filename_, 171 file_util::WriteFile(snapshot_filename_,
172 reinterpret_cast<char*>(&png_data[0]), png_data.size()); 172 reinterpret_cast<char*>(&png_data[0]), png_data.size());
173 } 173 }
174 } 174 }
175 } else if (type == NotificationType::LOAD_STOP) { 175 } else if (type == chrome::LOAD_STOP) {
176 load_stop_notification_count_++; 176 load_stop_notification_count_++;
177 } 177 }
178 } 178 }
179 179
180 // True if the snapshot differed from the expected value. 180 // True if the snapshot differed from the expected value.
181 bool snapshot_different_; 181 bool snapshot_different_;
182 // Internal variable used to synchronize to the renderer. 182 // Internal variable used to synchronize to the renderer.
183 int next_dummy_search_value_; 183 int next_dummy_search_value_;
184 // The filename of the bitmap to compare the snapshot to. 184 // The filename of the bitmap to compare the snapshot to.
185 std::string expected_filename_; 185 std::string expected_filename_;
186 // If the snapshot is different, holds the location where it's saved. 186 // If the snapshot is different, holds the location where it's saved.
187 FilePath snapshot_filename_; 187 FilePath snapshot_filename_;
188 // How many times we've seen NotificationType::LOAD_STOP. 188 // How many times we've seen chrome::LOAD_STOP.
189 int load_stop_notification_count_; 189 int load_stop_notification_count_;
190 190
191 scoped_ptr<net::TestServer> pdf_test_server_; 191 scoped_ptr<net::TestServer> pdf_test_server_;
192 }; 192 };
193 193
194 #if defined(OS_CHROMEOS) 194 #if defined(OS_CHROMEOS)
195 // TODO(sanjeevr): http://crbug.com/79837 195 // TODO(sanjeevr): http://crbug.com/79837
196 #define MAYBE_Basic DISABLED_Basic 196 #define MAYBE_Basic DISABLED_Basic
197 #else 197 #else
198 #define MAYBE_Basic Basic 198 #define MAYBE_Basic Basic
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 // This also loads all documents that used to crash, to ensure we don't have 269 // This also loads all documents that used to crash, to ensure we don't have
270 // regressions. 270 // regressions.
271 // Flaky as per http://crbug.com/74548. 271 // Flaky as per http://crbug.com/74548.
272 IN_PROC_BROWSER_TEST_F(PDFBrowserTest, FLAKY_SLOW_Loading) { 272 IN_PROC_BROWSER_TEST_F(PDFBrowserTest, FLAKY_SLOW_Loading) {
273 ASSERT_TRUE(pdf_test_server()->Start()); 273 ASSERT_TRUE(pdf_test_server()->Start());
274 274
275 NavigationController* controller = 275 NavigationController* controller =
276 &(browser()->GetSelectedTabContents()->controller()); 276 &(browser()->GetSelectedTabContents()->controller());
277 NotificationRegistrar registrar; 277 NotificationRegistrar registrar;
278 registrar.Add(this, 278 registrar.Add(this,
279 NotificationType::LOAD_STOP, 279 chrome::LOAD_STOP,
280 Source<NavigationController>(controller)); 280 Source<NavigationController>(controller));
281 std::string base_url = std::string("files/"); 281 std::string base_url = std::string("files/");
282 282
283 file_util::FileEnumerator file_enumerator( 283 file_util::FileEnumerator file_enumerator(
284 ui_test_utils::GetTestFilePath(GetPDFTestDir(), FilePath()), 284 ui_test_utils::GetTestFilePath(GetPDFTestDir(), FilePath()),
285 false, 285 false,
286 file_util::FileEnumerator::FILES, 286 file_util::FileEnumerator::FILES,
287 FILE_PATH_LITERAL("*.pdf")); 287 FILE_PATH_LITERAL("*.pdf"));
288 for (FilePath file_path = file_enumerator.Next(); 288 for (FilePath file_path = file_enumerator.Next();
289 !file_path.empty(); 289 !file_path.empty();
290 file_path = file_enumerator.Next()) { 290 file_path = file_enumerator.Next()) {
291 std::string filename = file_path.BaseName().MaybeAsASCII(); 291 std::string filename = file_path.BaseName().MaybeAsASCII();
292 ASSERT_FALSE(filename.empty()); 292 ASSERT_FALSE(filename.empty());
293 293
294 #if defined(OS_POSIX) 294 #if defined(OS_POSIX)
295 if (filename == "sample.pdf") 295 if (filename == "sample.pdf")
296 continue; // Crashes on Mac and Linux. http://crbug.com/63549 296 continue; // Crashes on Mac and Linux. http://crbug.com/63549
297 #endif 297 #endif
298 298
299 LOG(WARNING) << "PDFBrowserTest.Loading: " << filename; 299 LOG(WARNING) << "PDFBrowserTest.Loading: " << filename;
300 300
301 GURL url = pdf_test_server()->GetURL(base_url + filename); 301 GURL url = pdf_test_server()->GetURL(base_url + filename);
302 ui_test_utils::NavigateToURL(browser(), url); 302 ui_test_utils::NavigateToURL(browser(), url);
303 303
304 while (true) { 304 while (true) {
305 int last_count = load_stop_notification_count(); 305 int last_count = load_stop_notification_count();
306 // We might get extraneous NotificationType::LOAD_STOP notifications when 306 // We might get extraneous chrome::LOAD_STOP notifications when
307 // doing async loading. This happens when the first loader is cancelled 307 // doing async loading. This happens when the first loader is cancelled
308 // and before creating a byte-range request loader. 308 // and before creating a byte-range request loader.
309 bool complete = false; 309 bool complete = false;
310 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 310 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
311 browser()->GetSelectedTabContents()->render_view_host(), 311 browser()->GetSelectedTabContents()->render_view_host(),
312 std::wstring(), 312 std::wstring(),
313 L"window.domAutomationController.send(plugin.documentLoadComplete())", 313 L"window.domAutomationController.send(plugin.documentLoadComplete())",
314 &complete)); 314 &complete));
315 if (complete) 315 if (complete)
316 break; 316 break;
(...skipping 22 matching lines...) Expand all
339 ASSERT_TRUE(ui_test_utils::ExecuteJavaScript( 339 ASSERT_TRUE(ui_test_utils::ExecuteJavaScript(
340 browser()->GetSelectedTabContents()->render_view_host(), 340 browser()->GetSelectedTabContents()->render_view_host(),
341 std::wstring(), 341 std::wstring(),
342 L"reloadPDF();")); 342 L"reloadPDF();"));
343 343
344 ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(browser())); 344 ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(browser()));
345 ASSERT_EQ("success", browser()->GetSelectedTabContents()->GetURL().query()); 345 ASSERT_EQ("success", browser()->GetSelectedTabContents()->GetURL().query());
346 } 346 }
347 347
348 } // namespace 348 } // namespace
OLDNEW
« no previous file with comments | « chrome/test/live_sync/live_autofill_sync_test.cc ('k') | chrome/test/test_notification_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698