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