| Index: chrome/browser/banners/app_banner_data_fetcher_browsertest.cc | 
| diff --git a/chrome/browser/banners/app_banner_data_fetcher_browsertest.cc b/chrome/browser/banners/app_banner_data_fetcher_browsertest.cc | 
| deleted file mode 100644 | 
| index cb57b897a46c9384becc314ffb72ff220e9f28d9..0000000000000000000000000000000000000000 | 
| --- a/chrome/browser/banners/app_banner_data_fetcher_browsertest.cc | 
| +++ /dev/null | 
| @@ -1,349 +0,0 @@ | 
| -// Copyright 2015 The Chromium Authors. All rights reserved. | 
| -// Use of this source code is governed by a BSD-style license that can be | 
| -// found in the LICENSE file. | 
| - | 
| -#include "chrome/browser/banners/app_banner_data_fetcher.h" | 
| - | 
| -#include "base/command_line.h" | 
| -#include "base/location.h" | 
| -#include "base/run_loop.h" | 
| -#include "base/single_thread_task_runner.h" | 
| -#include "base/task_runner.h" | 
| -#include "base/test/histogram_tester.h" | 
| -#include "base/threading/thread_task_runner_handle.h" | 
| -#include "chrome/browser/banners/app_banner_data_fetcher_desktop.h" | 
| -#include "chrome/browser/banners/app_banner_metrics.h" | 
| -#include "chrome/browser/banners/app_banner_settings_helper.h" | 
| -#include "chrome/browser/ui/browser.h" | 
| -#include "chrome/browser/ui/tabs/tab_strip_model.h" | 
| -#include "chrome/common/chrome_switches.h" | 
| -#include "chrome/test/base/in_process_browser_test.h" | 
| -#include "chrome/test/base/ui_test_utils.h" | 
| -#include "content/public/common/content_switches.h" | 
| -#include "content/public/test/test_navigation_observer.h" | 
| -#include "net/test/embedded_test_server/embedded_test_server.h" | 
| - | 
| -namespace banners { | 
| - | 
| -class TestObserver : public AppBannerDataFetcher::Observer { | 
| - public: | 
| -  TestObserver(AppBannerDataFetcher* fetcher, base::Closure quit_closure) | 
| -      : fetcher_(fetcher), | 
| -        quit_closure_(quit_closure) { | 
| -    fetcher_->AddObserverForTesting(this); | 
| -  } | 
| - | 
| -  virtual ~TestObserver() { | 
| -    if (fetcher_) | 
| -      fetcher_->RemoveObserverForTesting(this); | 
| -  } | 
| - | 
| -  void OnDecidedWhetherToShow(AppBannerDataFetcher* fetcher, | 
| -                              bool will_show) override { | 
| -    base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, quit_closure_); | 
| -    ASSERT_FALSE(will_show_.get()); | 
| -    will_show_.reset(new bool(will_show)); | 
| -  } | 
| - | 
| -  void OnFetcherDestroyed(AppBannerDataFetcher* fetcher) override { | 
| -    base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, quit_closure_); | 
| -    fetcher_ = nullptr; | 
| -  } | 
| - | 
| -  bool will_show() { return will_show_.get() && *will_show_; } | 
| - | 
| - private: | 
| -  AppBannerDataFetcher* fetcher_; | 
| -  base::Closure quit_closure_; | 
| -  std::unique_ptr<bool> will_show_; | 
| -}; | 
| - | 
| -class AppBannerDataFetcherBrowserTest : public InProcessBrowserTest, | 
| -                                        public AppBannerDataFetcher::Delegate { | 
| - public: | 
| -  AppBannerDataFetcherBrowserTest() : weak_factory_(this) { | 
| -  } | 
| - | 
| -  void SetUpOnMainThread() override { | 
| -    AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 
| -    AppBannerSettingsHelper::SetTotalEngagementToTrigger(2); | 
| -    ASSERT_TRUE(embedded_test_server()->Start()); | 
| -    InProcessBrowserTest::SetUpOnMainThread(); | 
| -  } | 
| - | 
| -  bool HandleNonWebApp(const std::string& platform, | 
| -                       const GURL& url, | 
| -                       const std::string& id, | 
| -                       bool is_debug_mode) override { | 
| -    base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, quit_closure_); | 
| -    non_web_platform_ = platform; | 
| -    return false; | 
| -  } | 
| - | 
| -  void SetUpCommandLine(base::CommandLine* command_line) override { | 
| -    command_line->AppendSwitch( | 
| -        switches::kEnableExperimentalWebPlatformFeatures); | 
| -    // Make sure app banners are disabled in the browser, otherwise they will | 
| -    // interfere with the test. | 
| -    command_line->AppendSwitch(switches::kDisableAddToShelf); | 
| -  } | 
| - | 
| - protected: | 
| -  void RunFetcher(const GURL& url, | 
| -                  const std::string& expected_non_web_platform, | 
| -                  ui::PageTransition transition, | 
| -                  bool expected_to_show) { | 
| -    content::WebContents* web_contents = | 
| -        browser()->tab_strip_model()->GetActiveWebContents(); | 
| -    scoped_refptr<AppBannerDataFetcherDesktop> fetcher( | 
| -        new AppBannerDataFetcherDesktop( | 
| -            web_contents, weak_factory_.GetWeakPtr(), 128, 128, false)); | 
| - | 
| -    base::HistogramTester histograms; | 
| -    base::RunLoop run_loop; | 
| -    quit_closure_ = run_loop.QuitClosure(); | 
| -    std::unique_ptr<TestObserver> observer( | 
| -        new TestObserver(fetcher.get(), run_loop.QuitClosure())); | 
| -    fetcher->Start(url, transition); | 
| -    run_loop.Run(); | 
| - | 
| -    EXPECT_EQ(expected_non_web_platform, non_web_platform_); | 
| -    EXPECT_EQ(expected_to_show, observer->will_show()); | 
| -    ASSERT_FALSE(fetcher->is_active()); | 
| - | 
| -    // If showing the banner, ensure that the minutes histogram is recorded. | 
| -    histograms.ExpectTotalCount(banners::kMinutesHistogram, | 
| -                                (observer->will_show() ? 1 : 0)); | 
| -  } | 
| - | 
| -  void RunBannerTest(const std::string& manifest_page, | 
| -                     ui::PageTransition transition, | 
| -                     unsigned int unshown_repetitions, | 
| -                     bool expectation) { | 
| -    std::string valid_page(manifest_page); | 
| -    GURL test_url = embedded_test_server()->GetURL(valid_page); | 
| -    content::WebContents* web_contents = | 
| -        browser()->tab_strip_model()->GetActiveWebContents(); | 
| - | 
| -    for (unsigned int i = 0; i < unshown_repetitions; ++i) { | 
| -      ui_test_utils::NavigateToURL(browser(), test_url); | 
| -      RunFetcher(web_contents->GetURL(), std::string(), transition, false); | 
| -      AppBannerDataFetcher::SetTimeDeltaForTesting(i+1); | 
| -    } | 
| - | 
| -    // On the final loop, check whether the banner triggered or not as expected. | 
| -    ui_test_utils::NavigateToURL(browser(), test_url); | 
| -    RunFetcher(web_contents->GetURL(), std::string(), transition, expectation); | 
| -  } | 
| - | 
| - private: | 
| -  std::string non_web_platform_; | 
| -  base::Closure quit_closure_; | 
| -  base::WeakPtrFactory<AppBannerDataFetcherBrowserTest> weak_factory_; | 
| -}; | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedDirect) { | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_TYPED, | 
| -                1, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedDirectLargerTotal) { | 
| -  AppBannerSettingsHelper::SetTotalEngagementToTrigger(4); | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_TYPED, | 
| -                3, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedDirectSmallerTotal) { | 
| -  AppBannerSettingsHelper::SetTotalEngagementToTrigger(1); | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_TYPED, | 
| -                0, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedDirectSingle) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(2, 1); | 
| -  RunBannerTest("/banners/manifest_test_page.html", | 
| -                ui::PAGE_TRANSITION_GENERATED, 0, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedDirectMultiple) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(0.5, 1); | 
| -  RunBannerTest("/banners/manifest_test_page.html", | 
| -                ui::PAGE_TRANSITION_GENERATED, 3, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedDirectMultipleLargerTotal) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(0.5, 1); | 
| -  AppBannerSettingsHelper::SetTotalEngagementToTrigger(3); | 
| -  RunBannerTest("/banners/manifest_test_page.html", | 
| -                ui::PAGE_TRANSITION_GENERATED, 5, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedDirectMultipleSmallerTotal) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(0.5, 1); | 
| -  AppBannerSettingsHelper::SetTotalEngagementToTrigger(1); | 
| -  RunBannerTest("/banners/manifest_test_page.html", | 
| -                ui::PAGE_TRANSITION_GENERATED, 1, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedIndirect) { | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, | 
| -                1, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedIndirectLargerTotal) { | 
| -  AppBannerSettingsHelper::SetTotalEngagementToTrigger(5); | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, | 
| -                4, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedIndirectSmallerTotal) { | 
| -  AppBannerSettingsHelper::SetTotalEngagementToTrigger(1); | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, | 
| -                0, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedIndirectSingle) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(1, 3); | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_RELOAD, | 
| -                0, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedIndirectMultiple) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(1, 0.5); | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, | 
| -                3, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedIndirectMultipleLargerTotal) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(1, 0.5); | 
| -  AppBannerSettingsHelper::SetTotalEngagementToTrigger(4); | 
| -  RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, | 
| -                7, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerCreatedVarious) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(0.5, 0.25); | 
| - | 
| -  std::string valid_page("/banners/manifest_test_page.html"); | 
| -  GURL test_url = embedded_test_server()->GetURL(valid_page); | 
| -  content::WebContents* web_contents = | 
| -      browser()->tab_strip_model()->GetActiveWebContents(); | 
| - | 
| -  // Add a direct nav on day 1. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  RunFetcher(web_contents->GetURL(), std::string(), ui::PAGE_TRANSITION_TYPED, | 
| -             false); | 
| - | 
| -  // Add an indirect nav on day 1 which is ignored. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  RunFetcher(web_contents->GetURL(), std::string(), ui::PAGE_TRANSITION_LINK, | 
| -             false); | 
| -  AppBannerDataFetcher::SetTimeDeltaForTesting(1); | 
| - | 
| -  // Add an indirect nav on day 2. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  RunFetcher(web_contents->GetURL(), std::string(), | 
| -             ui::PAGE_TRANSITION_MANUAL_SUBFRAME, false); | 
| - | 
| -  // Add a direct nav on day 2 which overrides. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  RunFetcher(web_contents->GetURL(), std::string(), | 
| -             ui::PAGE_TRANSITION_GENERATED, false); | 
| -  AppBannerDataFetcher::SetTimeDeltaForTesting(2); | 
| - | 
| -  // Add a direct nav on day 3. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  RunFetcher(web_contents->GetURL(), std::string(), | 
| -             ui::PAGE_TRANSITION_GENERATED, false); | 
| -  AppBannerDataFetcher::SetTimeDeltaForTesting(3); | 
| - | 
| -  // Add an indirect nav on day 4. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  RunFetcher(web_contents->GetURL(), std::string(), | 
| -             ui::PAGE_TRANSITION_FORM_SUBMIT, false); | 
| - | 
| -  // Add a direct nav on day 4 which should trigger the banner. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  RunFetcher(web_contents->GetURL(), std::string(), | 
| -             ui::PAGE_TRANSITION_TYPED, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerNoTypeInManifest) { | 
| -  RunBannerTest("/banners/manifest_no_type_test_page.html", | 
| -                ui::PAGE_TRANSITION_TYPED, 1, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, | 
| -                       WebAppBannerNoTypeInManifestCapsExtension) { | 
| -  RunBannerTest("/banners/manifest_no_type_caps_test_page.html", | 
| -                ui::PAGE_TRANSITION_TYPED, 1, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, PlayAppManifest) { | 
| -  std::string valid_page("/banners/play_app_test_page.html"); | 
| -  GURL test_url = embedded_test_server()->GetURL(valid_page); | 
| -  content::WebContents* web_contents = | 
| -      browser()->tab_strip_model()->GetActiveWebContents(); | 
| - | 
| -  // Native banners do not require the SW, so we can just load the URL. | 
| -  ui_test_utils::NavigateToURL(browser(), test_url); | 
| -  std::string play_platform("play"); | 
| -  RunFetcher(web_contents->GetURL(), play_platform, ui::PAGE_TRANSITION_TYPED, | 
| -             false); | 
| - | 
| -  // The logic to get the details for a play app banner are only on android | 
| -  // builds, so this test does not check that the banner is shown. | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, NoManifest) { | 
| -  RunBannerTest("/banners/no_manifest_test_page.html", | 
| -                ui::PAGE_TRANSITION_TYPED, 1, false); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, MissingManifest) { | 
| -  RunBannerTest("/banners/manifest_bad_link.html", | 
| -                ui::PAGE_TRANSITION_TYPED, 1, false); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, CancelBannerDirect) { | 
| -  RunBannerTest("/banners/cancel_test_page.html", ui::PAGE_TRANSITION_TYPED, 1, | 
| -                false); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, CancelBannerIndirect) { | 
| -  AppBannerSettingsHelper::SetEngagementWeights(1, 0.5); | 
| -  RunBannerTest("/banners/cancel_test_page.html", ui::PAGE_TRANSITION_TYPED, 3, | 
| -                false); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, PromptBanner) { | 
| -  RunBannerTest("/banners/prompt_test_page.html", ui::PAGE_TRANSITION_TYPED, 1, | 
| -                true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, PromptBannerInHandler) { | 
| -  RunBannerTest("/banners/prompt_in_handler_test_page.html", | 
| -                ui::PAGE_TRANSITION_TYPED, 1, true); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(AppBannerDataFetcherBrowserTest, WebAppBannerInIFrame) { | 
| -  RunBannerTest("/banners/iframe_test_page.html", ui::PAGE_TRANSITION_TYPED, 1, | 
| -                false); | 
| -} | 
| - | 
| -}  // namespace banners | 
|  |