Index: chrome/browser/extensions/extension_webstore_private_browsertest.cc |
diff --git a/chrome/browser/extensions/extension_webstore_private_browsertest.cc b/chrome/browser/extensions/extension_webstore_private_browsertest.cc |
deleted file mode 100644 |
index a82a41c8d87cf92dd4f423ed7063e62108a5057d..0000000000000000000000000000000000000000 |
--- a/chrome/browser/extensions/extension_webstore_private_browsertest.cc |
+++ /dev/null |
@@ -1,206 +0,0 @@ |
-// Copyright (c) 2011 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 "base/string_number_conversions.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/browser_signin.h" |
-#include "chrome/browser/extensions/extension_browsertest.h" |
-#include "chrome/browser/extensions/extension_test_message_listener.h" |
-#include "chrome/browser/extensions/extension_webstore_private_api.h" |
-#include "chrome/browser/net/gaia/token_service.h" |
-#include "chrome/browser/profiles/profile_manager.h" |
-#include "chrome/browser/sync/profile_sync_service.h" |
-#include "chrome/browser/sync/signin_manager.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/common/net/gaia/gaia_constants.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/test/base/ui_test_utils.h" |
-#include "content/browser/tab_contents/tab_contents.h" |
-#include "googleurl/src/gurl.h" |
-#include "net/base/mock_host_resolver.h" |
- |
-using chrome::kHttpScheme; |
-using chrome::kStandardSchemeSeparator; |
- |
-namespace { |
- |
-const char kTestUrlHostname[] = "www.example.com"; |
- |
-} // namespace |
- |
-// A fake version of ProfileSyncService used for testing. |
-class FakeProfileSyncService : public ProfileSyncService { |
- public: |
- FakeProfileSyncService() |
- : ProfileSyncService(NULL, NULL, new SigninManager(), ""), |
- setup_(false) { |
- } |
- virtual ~FakeProfileSyncService() {} |
- |
- // Overrides of virtual methods in ProfileSyncService. |
- virtual bool HasSyncSetupCompleted() const { |
- return setup_; |
- } |
- virtual void ChangePreferredDataTypes(const syncable::ModelTypeSet& types) { |
- types_ = types; |
- } |
- virtual void GetPreferredDataTypes(syncable::ModelTypeSet* types) const { |
- *types = types_; |
- } |
- virtual void SetSyncSetupCompleted() { |
- setup_ = true; |
- } |
- |
- private: |
- bool setup_; |
- syncable::ModelTypeSet types_; |
-}; |
- |
-class FakeBrowserSignin : public BrowserSignin { |
- public: |
- // The |username_after_login| parameter determines what this fake |
- // BrowserSignin will set the username to when ShowLoginDialog is called. |
- FakeBrowserSignin(bool should_succeed, |
- const std::string& initial_username, |
- const std::string& username_after_login) |
- : BrowserSignin(NULL), |
- should_succeed_(should_succeed), |
- username_(initial_username), |
- username_after_login_(username_after_login) { |
- } |
- virtual ~FakeBrowserSignin() {} |
- |
- virtual std::string GetSignedInUsername() const { |
- return username_; |
- } |
- |
- virtual void RequestSignin(TabContents* tab_contents, |
- const string16& preferred_email, |
- const string16& message, |
- SigninDelegate* delegate) { |
- if (should_succeed_) { |
- // Simulate valid login. |
- username_ = username_after_login_; |
- delegate->OnLoginSuccess(); |
- |
- // Fake a token available notification. |
- Profile* profile = Profile::FromBrowserContext( |
- tab_contents->browser_context())->GetOriginalProfile(); |
- TokenService* token_service = profile->GetTokenService(); |
- token_service->IssueAuthTokenForTest(GaiaConstants::kGaiaService, |
- "new_token"); |
- } else { |
- delegate->OnLoginFailure(GoogleServiceAuthError( |
- GoogleServiceAuthError::REQUEST_CANCELED)); |
- } |
- } |
- |
- private: |
- bool should_succeed_; |
- std::string username_; |
- std::string username_after_login_; |
-}; |
- |
-class ExtensionWebstorePrivateBrowserTest : public ExtensionBrowserTest { |
- public: |
- ExtensionWebstorePrivateBrowserTest() { |
- test_url_base_ = std::string() + kHttpScheme + kStandardSchemeSeparator + |
- kTestUrlHostname; |
- } |
- |
- void SetUpCommandLine(CommandLine* command_line) { |
- ExtensionBrowserTest::SetUpCommandLine(command_line); |
- command_line->AppendSwitchASCII(switches::kAppsGalleryURL, test_url_base_); |
- } |
- |
- // This generates a regular test server url pointing to a test file at |
- // |relative_path|, but replaces the hostname with kTestUrlHostname so that |
- // we get the webstore private APIs injected (this happens because of the |
- // command line switch we added in SetupCommandLine). |
- GURL GetUrl(const std::string& relative_path) { |
- GURL base_url = test_server()->GetURL( |
- "files/extensions/webstore_private/" + relative_path); |
- GURL::Replacements replacements; |
- std::string replacement_host = std::string(kTestUrlHostname); |
- replacements.SetHostStr(replacement_host); |
- return base_url.ReplaceComponents(replacements); |
- } |
- |
- void RunLoginTestImpl(bool incognito, |
- const std::string& relative_path, |
- const std::string& initial_login, |
- bool login_succeeds, |
- const std::string& login_result) { |
- // Clear the token service so previous tests don't affect things. |
- TokenService* token_service = browser()->profile()->GetTokenService(); |
- token_service->ResetCredentialsInMemory(); |
- if (!initial_login.empty()) { |
- // Initialize the token service with an existing token. |
- token_service->IssueAuthTokenForTest(GaiaConstants::kGaiaService, |
- "existing_token"); |
- } |
- |
- FakeProfileSyncService sync_service; |
- FakeBrowserSignin signin(login_succeeds, initial_login, login_result); |
- WebstorePrivateApi::SetTestingProfileSyncService(&sync_service); |
- WebstorePrivateApi::SetTestingBrowserSignin(&signin); |
- |
- ExtensionTestMessageListener listener("success", false); |
- GURL url = GetUrl(relative_path); |
- if (incognito) { |
- ui_test_utils::OpenURLOffTheRecord(browser()->profile(), url); |
- } else { |
- ui_test_utils::NavigateToURL(browser(), url); |
- } |
- EXPECT_TRUE(listener.WaitUntilSatisfied()); |
- |
- WebstorePrivateApi::SetTestingBrowserSignin(NULL); |
- WebstorePrivateApi::SetTestingProfileSyncService(NULL); |
- } |
- |
- void RunLoginTest(const std::string& relative_path, |
- const std::string& initial_login, |
- bool login_succeeds, |
- const std::string& login_result) { |
- RunLoginTestImpl(true, |
- relative_path, |
- initial_login, |
- login_succeeds, |
- login_result); |
- RunLoginTestImpl(false, |
- relative_path, |
- initial_login, |
- login_succeeds, |
- login_result); |
- } |
- |
- protected: |
- std::string test_url_base_; |
-}; |
- |
-// TODO(asargent) I've added some extra logging to this test since we've seen a |
-// few failures on the bots lately. See crbug.com/91753 for details. |
-IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateBrowserTest, BrowserLogin) { |
- LOG(INFO) << "Adding rule to host resolver"; |
- host_resolver()->AddRule(kTestUrlHostname, "127.0.0.1"); |
- |
- LOG(INFO) << "Starting test server"; |
- ASSERT_TRUE(test_server()->Start()); |
- |
- LOG(INFO) << "expect_nonempty.html"; |
- RunLoginTest("browser_login/expect_nonempty.html", |
- "foo@bar.com", false, ""); |
- |
- LOG(INFO) << "prompt_no_preferred.html"; |
- RunLoginTest("browser_login/prompt_no_preferred.html", "", true, ""); |
- |
- LOG(INFO) << "prompt_preferred.html"; |
- RunLoginTest("browser_login/prompt_preferred.html", "", true, "foo@bar.com"); |
- |
- LOG(INFO) << "prompt_login_fails.html"; |
- RunLoginTest("browser_login/prompt_login_fails.html", |
- "", false, "foo@bar.com"); |
-} |