| Index: chrome/browser/signin/signin_browsertest.cc
|
| diff --git a/chrome/browser/signin/signin_browsertest.cc b/chrome/browser/signin/signin_browsertest.cc
|
| deleted file mode 100644
|
| index 45c58849f460ff98ad0425663ff260eee8233496..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/signin/signin_browsertest.cc
|
| +++ /dev/null
|
| @@ -1,265 +0,0 @@
|
| -// Copyright 2013 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.
|
| -
|
| -#ifndef CHROME_BROWSER_SIGNIN_SIGNIN_BROWSERTEST_H_
|
| -#define CHROME_BROWSER_SIGNIN_SIGNIN_BROWSERTEST_H_
|
| -
|
| -#include "base/command_line.h"
|
| -#include "chrome/browser/signin/chrome_signin_client.h"
|
| -#include "chrome/browser/signin/chrome_signin_client_factory.h"
|
| -#include "chrome/browser/signin/signin_promo.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/singleton_tabs.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/browser/ui/webui/signin/login_ui_service.h"
|
| -#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "chrome/test/base/in_process_browser_test.h"
|
| -#include "chrome/test/base/ui_test_utils.h"
|
| -#include "components/signin/core/common/profile_management_switches.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/browser/notification_types.h"
|
| -#include "content/public/browser/render_process_host.h"
|
| -#include "content/public/browser/render_view_host.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "content/public/browser/web_contents_observer.h"
|
| -#include "content/public/common/content_switches.h"
|
| -#include "google_apis/gaia/gaia_urls.h"
|
| -#include "net/http/http_status_code.h"
|
| -#include "net/url_request/test_url_fetcher_factory.h"
|
| -#include "net/url_request/url_request_status.h"
|
| -
|
| -namespace {
|
| -const char kNonSigninURL[] = "http://www.google.com";
|
| -}
|
| -
|
| -class SigninBrowserTest : public InProcessBrowserTest {
|
| - public:
|
| - void SetUpCommandLine(base::CommandLine* command_line) override {
|
| - https_server_.reset(new net::SpawnedTestServer(
|
| - net::SpawnedTestServer::TYPE_HTTPS,
|
| - net::SpawnedTestServer::kLocalhost,
|
| - base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))));
|
| - ASSERT_TRUE(https_server_->Start());
|
| -
|
| - // Add a host resolver rule to map all outgoing requests to the test server.
|
| - // This allows us to use "real" hostnames in URLs, which we can use to
|
| - // create arbitrary SiteInstances.
|
| - command_line->AppendSwitchASCII(
|
| - switches::kHostResolverRules,
|
| - "MAP * " + https_server_->host_port_pair().ToString() +
|
| - ",EXCLUDE localhost");
|
| - command_line->AppendSwitch(switches::kIgnoreCertificateErrors);
|
| - // All tests in this file are for the web based sign in flows.
|
| - // TODO(guohui): fix tests for inline sign in flows.
|
| - command_line->AppendSwitch(switches::kEnableWebBasedSignin);
|
| - }
|
| -
|
| - void SetUp() override {
|
| - factory_.reset(new net::URLFetcherImplFactory());
|
| - fake_factory_.reset(new net::FakeURLFetcherFactory(factory_.get()));
|
| - fake_factory_->SetFakeResponse(
|
| - GaiaUrls::GetInstance()->service_login_url(), std::string(),
|
| - net::HTTP_OK, net::URLRequestStatus::SUCCESS);
|
| - fake_factory_->SetFakeResponse(
|
| - GURL(kNonSigninURL), std::string(), net::HTTP_OK,
|
| - net::URLRequestStatus::SUCCESS);
|
| - // Yield control back to the InProcessBrowserTest framework.
|
| - InProcessBrowserTest::SetUp();
|
| - }
|
| -
|
| - void TearDown() override {
|
| - if (fake_factory_.get()) {
|
| - fake_factory_->ClearFakeResponses();
|
| - fake_factory_.reset();
|
| - }
|
| -
|
| - // Cancel any outstanding URL fetches and destroy the URLFetcherImplFactory
|
| - // we created.
|
| - net::URLFetcher::CancelAll();
|
| - factory_.reset();
|
| - InProcessBrowserTest::TearDown();
|
| - }
|
| -
|
| - private:
|
| - // Fake URLFetcher factory used to mock out GAIA signin.
|
| - scoped_ptr<net::FakeURLFetcherFactory> fake_factory_;
|
| -
|
| - // The URLFetcherImplFactory instance used to instantiate |fake_factory_|.
|
| - scoped_ptr<net::URLFetcherImplFactory> factory_;
|
| -
|
| - scoped_ptr<net::SpawnedTestServer> https_server_;
|
| -};
|
| -
|
| -// If the one-click-signin feature is not enabled (e.g Chrome OS), we
|
| -// never grant signin privileges to any renderer processes.
|
| -#if defined(ENABLE_ONE_CLICK_SIGNIN)
|
| -const bool kOneClickSigninEnabled = true;
|
| -#else
|
| -const bool kOneClickSigninEnabled = false;
|
| -#endif
|
| -
|
| -// Disabled on Windows due to flakiness. http://crbug.com/249055
|
| -#if defined(OS_WIN)
|
| -#define MAYBE_ProcessIsolation DISABLED_ProcessIsolation
|
| -#else
|
| -#define MAYBE_ProcessIsolation ProcessIsolation
|
| -#endif
|
| -IN_PROC_BROWSER_TEST_F(SigninBrowserTest, MAYBE_ProcessIsolation) {
|
| - // This test is not needed for the webview based sign-in code.
|
| - if (switches::IsEnableWebviewBasedSignin())
|
| - return;
|
| -
|
| - SigninClient* signin =
|
| - ChromeSigninClientFactory::GetForProfile(browser()->profile());
|
| - EXPECT_FALSE(signin->HasSigninProcess());
|
| -
|
| - ui_test_utils::NavigateToURL(browser(), signin::GetPromoURL(
|
| - signin_metrics::SOURCE_NTP_LINK, true));
|
| - EXPECT_EQ(kOneClickSigninEnabled, signin->HasSigninProcess());
|
| -
|
| - // Navigating away should change the process.
|
| - ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIOmniboxURL));
|
| - EXPECT_FALSE(signin->HasSigninProcess());
|
| -
|
| - ui_test_utils::NavigateToURL(browser(), signin::GetPromoURL(
|
| - signin_metrics::SOURCE_NTP_LINK, true));
|
| - EXPECT_EQ(kOneClickSigninEnabled, signin->HasSigninProcess());
|
| -
|
| - content::WebContents* active_tab =
|
| - browser()->tab_strip_model()->GetActiveWebContents();
|
| - int active_tab_process_id =
|
| - active_tab->GetRenderProcessHost()->GetID();
|
| - EXPECT_EQ(kOneClickSigninEnabled,
|
| - signin->IsSigninProcess(active_tab_process_id));
|
| - EXPECT_EQ(0, active_tab->GetRenderViewHost()->GetEnabledBindings());
|
| -
|
| - // Entry points to signin request "SINGLETON_TAB" mode, so a new request
|
| - // shouldn't change anything.
|
| - chrome::NavigateParams params(chrome::GetSingletonTabNavigateParams(
|
| - browser(),
|
| - GURL(signin::GetPromoURL(signin_metrics::SOURCE_NTP_LINK, false))));
|
| - params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
|
| - ShowSingletonTabOverwritingNTP(browser(), params);
|
| - EXPECT_EQ(active_tab, browser()->tab_strip_model()->GetActiveWebContents());
|
| - EXPECT_EQ(kOneClickSigninEnabled,
|
| - signin->IsSigninProcess(active_tab_process_id));
|
| -
|
| - // Navigating away should change the process.
|
| - ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
|
| - EXPECT_FALSE(signin->IsSigninProcess(
|
| - active_tab->GetRenderProcessHost()->GetID()));
|
| -}
|
| -
|
| -#if defined (OS_MACOSX)
|
| -// crbug.com/375197
|
| -#define MAYBE_NotTrustedAfterRedirect DISABLED_NotTrustedAfterRedirect
|
| -#else
|
| -#define MAYBE_NotTrustedAfterRedirect NotTrustedAfterRedirect
|
| -#endif
|
| -
|
| -IN_PROC_BROWSER_TEST_F(SigninBrowserTest, MAYBE_NotTrustedAfterRedirect) {
|
| - // This test is not needed for the webview based sign-in code.
|
| - if (switches::IsEnableWebviewBasedSignin())
|
| - return;
|
| -
|
| - SigninClient* signin =
|
| - ChromeSigninClientFactory::GetForProfile(browser()->profile());
|
| - EXPECT_FALSE(signin->HasSigninProcess());
|
| -
|
| - GURL url = signin::GetPromoURL(signin_metrics::SOURCE_NTP_LINK, true);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| - EXPECT_EQ(kOneClickSigninEnabled, signin->HasSigninProcess());
|
| -
|
| - // Navigating in a different tab should not affect the sign-in process.
|
| - ui_test_utils::NavigateToURLWithDisposition(
|
| - browser(), GURL(kNonSigninURL), NEW_BACKGROUND_TAB,
|
| - ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
|
| - EXPECT_EQ(kOneClickSigninEnabled, signin->HasSigninProcess());
|
| -
|
| - // Navigating away should clear the sign-in process.
|
| - GURL redirect_url("https://accounts.google.com/server-redirect?"
|
| - "https://foo.com?service=chromiumsync");
|
| - ui_test_utils::NavigateToURL(browser(), redirect_url);
|
| - EXPECT_FALSE(signin->HasSigninProcess());
|
| -}
|
| -
|
| -class BackOnNTPCommitObserver : public content::WebContentsObserver {
|
| - public:
|
| - explicit BackOnNTPCommitObserver(content::WebContents* web_contents)
|
| - : content::WebContentsObserver(web_contents) {
|
| - }
|
| -
|
| - void DidCommitProvisionalLoadForFrame(
|
| - content::RenderFrameHost* render_frame_host,
|
| - const GURL& url,
|
| - ui::PageTransition transition_type) override {
|
| - if (url == GURL(chrome::kChromeUINewTabURL) ||
|
| - url == GURL(chrome::kChromeSearchLocalNtpUrl)) {
|
| - content::WindowedNotificationObserver observer(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - web_contents()->GetController().GoBack();
|
| - observer.Wait();
|
| - }
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(BackOnNTPCommitObserver);
|
| -};
|
| -
|
| -// This is a test for http://crbug.com/257277. It simulates the navigations
|
| -// that occur if the user clicks on the "Skip for now" link at the signin page
|
| -// and initiates a back navigation between the point of Commit and
|
| -// DidStopLoading of the NTP.
|
| -IN_PROC_BROWSER_TEST_F(SigninBrowserTest, SigninSkipForNowAndGoBack) {
|
| - // This test is not needed for the webview based sign-in code.
|
| - // OneClickSigninHelper is not used.
|
| - if (switches::IsEnableWebviewBasedSignin())
|
| - return;
|
| -
|
| - GURL ntp_url(chrome::kChromeUINewTabURL);
|
| - GURL start_url = signin::GetPromoURL(
|
| - signin_metrics::SOURCE_START_PAGE, false);
|
| - GURL skip_url = signin::GetLandingURL("ntp", 1);
|
| -
|
| - SigninClient* signin =
|
| - ChromeSigninClientFactory::GetForProfile(browser()->profile());
|
| - EXPECT_FALSE(signin->HasSigninProcess());
|
| -
|
| - ui_test_utils::NavigateToURL(browser(), start_url);
|
| - EXPECT_EQ(kOneClickSigninEnabled, signin->HasSigninProcess());
|
| -
|
| - content::WebContents* web_contents =
|
| - browser()->tab_strip_model()->GetActiveWebContents();
|
| -
|
| - // Simulate clicking on the Skip for now link. It's important to have a
|
| - // link transition so that OneClickSigninHelper removes the blank page
|
| - // from the history.
|
| - chrome::NavigateParams navigate_params(browser(),
|
| - skip_url,
|
| - ui::PAGE_TRANSITION_LINK);
|
| - ui_test_utils::NavigateToURL(&navigate_params);
|
| -
|
| - // Register an observer that will navigate back immediately on the commit of
|
| - // the NTP. This will allow us to hit the race condition of navigating back
|
| - // before the DidStopLoading message of NTP gets delivered. This must be
|
| - // created after the navigation to the skip_url has finished loading,
|
| - // otherwise this observer will navigate back, before the history cleaner
|
| - // has had a chance to remove the navigation entry.
|
| - BackOnNTPCommitObserver commit_observer(web_contents);
|
| -
|
| - // Since OneClickSigninHelper aborts redirect to NTP, thus we expect the
|
| - // visible URL to be the starting URL.
|
| - EXPECT_EQ(skip_url, web_contents->GetLastCommittedURL());
|
| - EXPECT_EQ(start_url, web_contents->GetVisibleURL());
|
| -
|
| - content::WindowedNotificationObserver observer(
|
| - content::NOTIFICATION_LOAD_STOP,
|
| - content::NotificationService::AllSources());
|
| - observer.Wait();
|
| - EXPECT_EQ(start_url, web_contents->GetLastCommittedURL());
|
| -}
|
| -#endif // CHROME_BROWSER_SIGNIN_SIGNIN_BROWSERTEST_H_
|
|
|