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

Unified Diff: chrome/browser/signin/signin_browsertest.cc

Issue 872433006: Disconnect one click sign in code. The code itself will be removed in followup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698