15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/files/file_enumerator.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/hash.h" 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/ui/pdf/pdf_browsertest_base.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_controller.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/browser/notification_source.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_view_host.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h" 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "third_party/WebKit/public/web/WebInputEvent.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::NavigationController; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Note: All tests in here require the internal PDF plugin, so they're disabled 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// in non-official builds. We still compile them though, to prevent bitrot. 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tests basic PDF rendering. This can be broken depending on bad merges with 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the vendor, so it's important that we have basic sanity checking. 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_LINUX) 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MAYBE_Basic Basic 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#else 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MAYBE_Basic DISABLED_Basic 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(PDFBrowserTest, MAYBE_Basic) { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(Load()); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(WaitForResponse()); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OS X uses CoreText, and FreeType renders slightly different on Linux and 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Win. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The bots render differently than locally, see http://crbug.com/142531. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(VerifySnapshot("pdf_browsertest_mac.png") || 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VerifySnapshot("pdf_browsertest_mac2.png")); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_LINUX) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(VerifySnapshot("pdf_browsertest_linux.png")); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(VerifySnapshot("pdf_browsertest.png")); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && (defined(OS_WIN) || defined(OS_LINUX)) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_Scroll Scroll 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#else 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// TODO(thestig): http://crbug.com/79837, http://crbug.com/332778 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MAYBE_Scroll DISABLED_Scroll 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tests that scrolling works. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(PDFBrowserTest, MAYBE_Scroll) { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(Load()); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We use wheel mouse event since that's the only one we can easily push to 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the renderer. There's no way to push a cross-platform keyboard event at 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the moment. 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebMouseWheelEvent wheel_event; 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) wheel_event.type = blink::WebInputEvent::MouseWheel; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wheel_event.deltaY = -200; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wheel_event.wheelTicksY = -2; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContents* web_contents = 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents->GetRenderViewHost()->ForwardWheelEvent(wheel_event); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(WaitForResponse()); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int y_offset = 0; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractInt( 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "window.domAutomationController.send(plugin.pageYOffset())", 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &y_offset)); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_GT(y_offset, 0); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const int kLoadingNumberOfParts = 10; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tests that loading async pdfs works correctly (i.e. document fully loads). 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This also loads all documents that used to crash, to ensure we don't have 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// regressions. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If it flakes, reopen http://crbug.com/74548. 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define MAYBE_Loading Loading 88f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#else 89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MAYBE_Loading DISABLED_Loading 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(PDFBrowserTest, MAYBE_Loading) { 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(pdf_test_server()->InitializeAndWaitUntilReady()); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationController* controller = 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &(browser()->tab_strip_model()->GetActiveWebContents()->GetController()); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar registrar; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar.Add(this, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NOTIFICATION_LOAD_STOP, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Source<NavigationController>(controller)); 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string base_url = std::string("/"); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::FileEnumerator file_enumerator( 103cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui_test_utils::GetTestFilePath( 104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("pdf_private")), base::FilePath()), 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 106868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::FileEnumerator::FILES, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("*.pdf")); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (base::FilePath file_path = file_enumerator.Next(); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) !file_path.empty(); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_path = file_enumerator.Next()) { 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string filename = file_path.BaseName().MaybeAsASCII(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(filename.empty()); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_POSIX) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (filename == "sample.pdf") 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; // Crashes on Mac and Linux. http://crbug.com/63549 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Split the test into smaller sub-tests. Each one only loads 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // every k-th file. 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (static_cast<int>(base::Hash(filename) % kLoadingNumberOfParts) != 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetParam()) { 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue; 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(WARNING) << "PDFBrowserTest.Loading: " << filename; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = pdf_test_server()->GetURL(base_url + filename); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (true) { 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int last_count = load_stop_notification_count(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We might get extraneous chrome::LOAD_STOP notifications when 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // doing async loading. This happens when the first loader is cancelled 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and before creating a byte-range request loader. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool complete = false; 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "window.domAutomationController.send(plugin.documentLoadComplete())", 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &complete)); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (complete) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check if the LOAD_STOP notification could have come while we run a 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // nested message loop for the JS call. 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (last_count != load_stop_notification_count()) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WaitForLoadStop( 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents()); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)INSTANTIATE_TEST_CASE_P(PDFTestFiles, 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PDFBrowserTest, 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) testing::Range(0, kLoadingNumberOfParts)); 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 158f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && (defined(OS_WIN) || defined(OS_LINUX)) 159f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MAYBE_Action Action 160f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#else 161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// http://crbug.com/315160 162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MAYBE_Action DISABLED_Action 163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(PDFBrowserTest, MAYBE_Action) { 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(Load()); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript( 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "document.getElementsByName('plugin')[0].fitToHeight();")); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string zoom1, zoom2; 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractString( 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "window.domAutomationController.send(" 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " document.getElementsByName('plugin')[0].getZoomLevel().toString())", 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &zoom1)); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript( 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "document.getElementsByName('plugin')[0].fitToWidth();")); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScriptAndExtractString( 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "window.domAutomationController.send(" 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " document.getElementsByName('plugin')[0].getZoomLevel().toString())", 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &zoom2)); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(zoom1, zoom2); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 190f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_LINUX) 191f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MAYBE_OnLoadAndReload OnLoadAndReload 192f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#else 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Flaky as per http://crbug.com/74549. 194f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MAYBE_OnLoadAndReload DISABLED_OnLoadAndReload 195f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif 196f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(PDFBrowserTest, MAYBE_OnLoadAndReload) { 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(pdf_test_server()->InitializeAndWaitUntilReady()); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL url = pdf_test_server()->GetURL("/onload_reload.html"); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 201f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WindowedNotificationObserver observer( 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NOTIFICATION_LOAD_STOP, 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Source<NavigationController>( 206f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &contents->GetController())); 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(content::ExecuteScript( 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "reloadPDF();")); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 212f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_EQ("success", contents->GetURL().query()); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 216