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

Unified Diff: chrome/browser/ui/webui/options/options_ui_browsertest.cc

Issue 2913343002: Start removing deprecated Options UI code (Closed)
Patch Set: thestig@ review Created 3 years, 6 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/ui/webui/options/options_ui_browsertest.cc
diff --git a/chrome/browser/ui/webui/options/options_ui_browsertest.cc b/chrome/browser/ui/webui/options/options_ui_browsertest.cc
deleted file mode 100644
index b37522637fcc93f97063494775c432f0cf834e05..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/options/options_ui_browsertest.cc
+++ /dev/null
@@ -1,344 +0,0 @@
-// Copyright (c) 2012 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/ui/webui/options/options_ui_browsertest.h"
-
-#include "base/scoped_observer.h"
-#include "base/strings/string16.h"
-#include "base/strings/utf_string_conversions.h"
-#include "build/build_config.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/signin/account_tracker_service_factory.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/chrome_pages.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/browser/ui/webui/options/options_ui.h"
-#include "chrome/browser/ui/webui/uber/uber_ui.h"
-#include "chrome/common/chrome_features.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/grit/generated_resources.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "components/prefs/pref_service.h"
-#include "components/signin/core/browser/account_tracker_service.h"
-#include "components/signin/core/browser/signin_manager.h"
-#include "components/strings/grit/components_strings.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-#include "ui/base/l10n/l10n_util.h"
-
-#if !defined(OS_CHROMEOS)
-#include <string>
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/files/file_path.h"
-#include "base/run_loop.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_attributes_storage.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/browser_commands.h"
-#include "content/public/test/test_navigation_observer.h"
-#include "ui/base/window_open_disposition.h"
-#include "url/gurl.h"
-#endif
-
-using content::MessageLoopRunner;
-
-namespace options {
-
-namespace {
-
-class SignOutWaiter : public SigninManagerBase::Observer {
- public:
- explicit SignOutWaiter(SigninManagerBase* signin_manager)
- : seen_(false), running_(false), scoped_observer_(this) {
- scoped_observer_.Add(signin_manager);
- }
- ~SignOutWaiter() override {}
-
- void Wait() {
- if (seen_)
- return;
-
- running_ = true;
- message_loop_runner_ = new MessageLoopRunner;
- message_loop_runner_->Run();
- EXPECT_TRUE(seen_);
- }
-
- void GoogleSignedOut(const std::string& account_id,
- const std::string& username) override {
- seen_ = true;
- if (!running_)
- return;
-
- message_loop_runner_->Quit();
- running_ = false;
- }
-
- private:
- bool seen_;
- bool running_;
- ScopedObserver<SigninManagerBase, SignOutWaiter> scoped_observer_;
- scoped_refptr<MessageLoopRunner> message_loop_runner_;
-};
-
-#if !defined(OS_CHROMEOS)
-void RunClosureWhenProfileInitialized(const base::Closure& closure,
- Profile* profile,
- Profile::CreateStatus status) {
- if (status == Profile::CREATE_STATUS_INITIALIZED)
- closure.Run();
-}
-#endif
-
-bool FrameHasSettingsSourceHost(content::RenderFrameHost* frame) {
- return frame->GetLastCommittedURL().DomainIs(
- chrome::kChromeUISettingsFrameHost);
-}
-
-} // namespace
-
-OptionsUIBrowserTest::OptionsUIBrowserTest() {
-}
-
-void OptionsUIBrowserTest::SetUpInProcessBrowserTestFixture() {
- InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
- disable_md_settings_.InitAndDisableFeature(features::kMaterialDesignSettings);
-}
-
-void OptionsUIBrowserTest::NavigateToSettings() {
- NavigateToSettingsSubpage("");
-}
-
-void OptionsUIBrowserTest::NavigateToSettingsSubpage(
- const std::string& sub_page) {
- const GURL& url = chrome::GetSettingsUrl(sub_page);
- ui_test_utils::NavigateToURLWithDisposition(
- browser(), url, WindowOpenDisposition::CURRENT_TAB, 0);
-
- content::WebContents* web_contents =
- browser()->tab_strip_model()->GetActiveWebContents();
- ASSERT_TRUE(web_contents);
- ASSERT_TRUE(web_contents->GetWebUI());
-
- content::WebUIController* controller =
- web_contents->GetWebUI()->GetController();
-#if !defined(OS_CHROMEOS)
- controller = static_cast<UberUI*>(controller)->
- GetSubpage(chrome::kChromeUISettingsFrameURL)->GetController();
-#endif
- OptionsUI* options_ui = static_cast<OptionsUI*>(controller);
-
- // It is not possible to subscribe to the OnFinishedLoading event before the
- // call to NavigateToURL(), because the WebUI does not yet exist at that time.
- // However, it is safe to subscribe afterwards, because the event will always
- // be posted asynchronously to the message loop.
- scoped_refptr<MessageLoopRunner> message_loop_runner(new MessageLoopRunner);
- std::unique_ptr<OptionsUI::OnFinishedLoadingCallbackList::Subscription>
- subscription = options_ui->RegisterOnFinishedLoadingCallback(
- message_loop_runner->QuitClosure());
- message_loop_runner->Run();
-
- // The OnFinishedLoading event, which indicates that all WebUI initialization
- // methods have been called on the JS side, is temporally unrelated to whether
- // or not the WebContents considers itself to have finished loading. We want
- // to wait for this too, however, because, e.g. this is a sufficient condition
- // to get the focus properly placed on a form element.
- content::WaitForLoadStop(web_contents);
-}
-
-void OptionsUIBrowserTest::NavigateToSettingsFrame() {
- const GURL& url = GURL(chrome::kChromeUISettingsFrameURL);
- ui_test_utils::NavigateToURL(browser(), url);
-}
-
-void OptionsUIBrowserTest::VerifyNavbar() {
- bool navbar_exist = false;
-#if defined(OS_CHROMEOS)
- bool should_navbar_exist = false;
-#else
- bool should_navbar_exist = true;
-#endif
- EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
- browser()->tab_strip_model()->GetActiveWebContents(),
- "domAutomationController.send("
- " !!document.getElementById('navigation'))",
- &navbar_exist));
- EXPECT_EQ(should_navbar_exist, navbar_exist);
-}
-
-void OptionsUIBrowserTest::VerifyTitle() {
- base::string16 title =
- browser()->tab_strip_model()->GetActiveWebContents()->GetTitle();
- base::string16 expected_title = l10n_util::GetStringUTF16(IDS_SETTINGS_TITLE);
- EXPECT_NE(title.find(expected_title), base::string16::npos);
-}
-
-content::RenderFrameHost* OptionsUIBrowserTest::GetSettingsFrame() {
- // NB: The utility function content::FrameHasSourceUrl can't be used because
- // the settings frame navigates itself to chrome://settings-frame/settings
- // to indicate that it's showing the top-level settings. Therefore, just
- // match the host.
- return content::FrameMatchingPredicate(
- browser()->tab_strip_model()->GetActiveWebContents(),
- base::Bind(&FrameHasSettingsSourceHost));
-}
-
-IN_PROC_BROWSER_TEST_F(OptionsUIBrowserTest, LoadOptionsByURL) {
- NavigateToSettings();
- VerifyTitle();
- VerifyNavbar();
-}
-
-// Flaky on Linux, Mac and Win: http://crbug.com/469113
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-#define MAYBE_VerifyManagedSignout DISABLED_VerifyManagedSignout
-#else
-#define MAYBE_VerifyManagedSignout VerifyManagedSignout
-#endif
-
-#if !defined(OS_CHROMEOS)
-IN_PROC_BROWSER_TEST_F(OptionsUIBrowserTest, MAYBE_VerifyManagedSignout) {
- SigninManager* signin =
- SigninManagerFactory::GetForProfile(browser()->profile());
- signin->OnExternalSigninCompleted("test@example.com");
- signin->ProhibitSignout(true);
-
- NavigateToSettingsFrame();
-
- // This script simulates a click on the "Disconnect your Google Account"
- // button and returns true if the hidden flag of the appropriate dialog gets
- // flipped.
- bool result = false;
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- browser()->tab_strip_model()->GetActiveWebContents(),
- "var dialog = $('manage-profile-overlay-disconnect-managed');"
- "var original_status = dialog.hidden;"
- "var original = ManageProfileOverlay.showDisconnectManagedProfileDialog;"
- "var teststub = function(event) {"
- " original(event);"
- " domAutomationController.send(original_status && !dialog.hidden);"
- "};"
- "ManageProfileOverlay.showDisconnectManagedProfileDialog = teststub;"
- "$('start-stop-sync').click();",
- &result));
-
- EXPECT_TRUE(result);
-
- base::FilePath profile_dir = browser()->profile()->GetPath();
- ProfileAttributesStorage& storage =
- g_browser_process->profile_manager()->GetProfileAttributesStorage();
- ProfileAttributesEntry* entry;
-
- EXPECT_TRUE(DirectoryExists(profile_dir));
- EXPECT_TRUE(storage.GetProfileAttributesWithPath(profile_dir, &entry));
-
- // TODO(kaliamoorthi): Get the macos problem fixed and remove this code.
- // Deleting the Profile also destroys all browser windows of that Profile.
- // Wait for the current browser to close before resuming, otherwise
- // the browser_tests shutdown code will be confused on the Mac.
- content::WindowedNotificationObserver wait_for_browser_closed(
- chrome::NOTIFICATION_BROWSER_CLOSED,
- content::NotificationService::AllSources());
-
- ASSERT_TRUE(content::ExecuteScript(
- browser()->tab_strip_model()->GetActiveWebContents(),
- "$('disconnect-managed-profile-ok').click();"));
-
- EXPECT_TRUE(storage.GetProfileAttributesWithPath(profile_dir, &entry));
-
- wait_for_browser_closed.Wait();
-}
-
-IN_PROC_BROWSER_TEST_F(OptionsUIBrowserTest, VerifyUnmanagedSignout) {
- const std::string user = "test@example.com";
- AccountTrackerServiceFactory::GetForProfile(browser()->profile())
- ->SeedAccountInfo("12345", user);
- SigninManager* signin =
- SigninManagerFactory::GetForProfile(browser()->profile());
- signin->OnExternalSigninCompleted(user);
-
- NavigateToSettingsFrame();
-
- // This script simulates a click on the "Disconnect your Google Account"
- // button and returns true if the hidden flag of the appropriate dialog gets
- // flipped.
- bool result = false;
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- browser()->tab_strip_model()->GetActiveWebContents(),
- "var dialog = $('sync-setup-stop-syncing');"
- "var original_status = dialog.hidden;"
- "$('start-stop-sync').click();"
- "domAutomationController.send(original_status && !dialog.hidden);",
- &result));
-
- EXPECT_TRUE(result);
-
- SignOutWaiter sign_out_waiter(signin);
-
- ASSERT_TRUE(content::ExecuteScript(
- browser()->tab_strip_model()->GetActiveWebContents(),
- "$('stop-syncing-ok').click();"));
-
- sign_out_waiter.Wait();
-
- EXPECT_TRUE(browser()->profile()->GetProfileUserName() != user);
- EXPECT_FALSE(signin->IsAuthenticated());
-}
-
-// Regression test for http://crbug.com/301436, excluded on Chrome OS because
-// profile management in the settings UI exists on desktop platforms only.
-IN_PROC_BROWSER_TEST_F(OptionsUIBrowserTest, NavigateBackFromOverlayDialog) {
- NavigateToSettingsFrame();
-
- // Click a button that opens an overlay dialog.
- content::WebContents* contents =
- browser()->tab_strip_model()->GetActiveWebContents();
- ASSERT_TRUE(content::ExecuteScript(
- contents, "$('manage-default-search-engines').click();"));
-
- // Go back to the settings page.
- content::TestNavigationObserver observer(contents);
- chrome::GoBack(browser(), WindowOpenDisposition::CURRENT_TAB);
- observer.Wait();
-
- // Verify that the settings page lists one profile.
- const char javascript[] =
- "domAutomationController.send("
- " document.querySelectorAll('list#profiles-list > div[role=listitem]')"
- " .length);";
- int profiles;
- ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
- contents, javascript, &profiles));
- EXPECT_EQ(1, profiles);
-
- // Create a second profile.
- ProfileManager* profile_manager = g_browser_process->profile_manager();
- const base::FilePath profile_path =
- profile_manager->GenerateNextProfileDirectoryPath();
-
- base::RunLoop run_loop;
- profile_manager->CreateProfileAsync(
- profile_manager->GenerateNextProfileDirectoryPath(),
- base::Bind(&RunClosureWhenProfileInitialized,
- run_loop.QuitClosure()),
- base::string16(),
- std::string(),
- std::string());
- run_loop.Run();
-
- // Verify that the settings page has updated and lists two profiles.
- ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
- contents, javascript, &profiles));
- EXPECT_EQ(2, profiles);
-}
-#endif
-
-} // namespace options

Powered by Google App Engine
This is Rietveld 408576698