diff options
author | dzhioev@google.com <dzhioev@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-23 12:54:23 +0000 |
---|---|---|
committer | dzhioev@google.com <dzhioev@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-23 12:54:23 +0000 |
commit | 603717992e0d57a85ace487a83386803f1a78e4a (patch) | |
tree | 248a53826f07dc7855ade53223c2be4d38acd44d | |
parent | 008cf4ea2e2294513f33967da1deb57dff403273 (diff) | |
download | chromium_src-603717992e0d57a85ace487a83386803f1a78e4a.zip chromium_src-603717992e0d57a85ace487a83386803f1a78e4a.tar.gz chromium_src-603717992e0d57a85ace487a83386803f1a78e4a.tar.bz2 |
Merge 241933 "Created browser test for first-run UI."
Merge attempt 2.
> Created browser test for first-run UI.
>
> BUG=312474
> TEST=browser_tests --gtest_filter=FirstRunUIBrowserTest.*
>
> Review URL: https://codereview.chromium.org/101543008
TBR=dzhioev@chromium.org
Review URL: https://codereview.chromium.org/120713002
git-svn-id: svn://svn.chromium.org/chrome/branches/1750/src@242374 0039d316-1c4b-4281-b951-d872f2087c98
13 files changed, 54 insertions, 11 deletions
diff --git a/chrome/browser/chromeos/first_run/first_run_controller.cc b/chrome/browser/chromeos/first_run/first_run_controller.cc index b1775e4e..65ed426 100644 --- a/chrome/browser/chromeos/first_run/first_run_controller.cc +++ b/chrome/browser/chromeos/first_run/first_run_controller.cc @@ -50,6 +50,10 @@ void FirstRunController::Stop() { g_instance = NULL; } +FirstRunController* FirstRunController::GetInstanceForTest() { + return g_instance; +} + FirstRunController::FirstRunController() : actor_(NULL), current_step_index_(NONE_STEP_INDEX), @@ -70,6 +74,7 @@ void FirstRunController::Init() { actor_->set_delegate(this); shell_helper_->GetOverlayWidget()->Show(); view->RequestFocus(); + web_contents_for_tests_ = view->GetWebContents(); if (actor_->IsInitialized()) OnActorInitialized(); @@ -112,6 +117,10 @@ void FirstRunController::OnStepHidden(const std::string& step_name) { ShowNextStep(); } +void FirstRunController::OnStepShown(const std::string& step_name) { + DCHECK(GetCurrentStep() && GetCurrentStep()->name() == step_name); +} + void FirstRunController::OnActorFinalized() { if (!on_actor_finalized_.is_null()) on_actor_finalized_.Run(); diff --git a/chrome/browser/chromeos/first_run/first_run_controller.h b/chrome/browser/chromeos/first_run/first_run_controller.h index f9c00ec..85f3eb6 100644 --- a/chrome/browser/chromeos/first_run/first_run_controller.h +++ b/chrome/browser/chromeos/first_run/first_run_controller.h @@ -18,8 +18,14 @@ class Profile; +namespace content { +class WebContents; +} + namespace chromeos { +class FirstRunUIBrowserTest; + namespace first_run { class Step; } @@ -41,14 +47,19 @@ class FirstRunController : public FirstRunActor::Delegate, static void Stop(); private: + friend class FirstRunUIBrowserTest; + FirstRunController(); void Init(); void Finalize(); + static FirstRunController* GetInstanceForTest(); + // Overriden from FirstRunActor::Delegate. virtual void OnActorInitialized() OVERRIDE; virtual void OnNextButtonClicked(const std::string& step_name) OVERRIDE; virtual void OnHelpButtonClicked() OVERRIDE; + virtual void OnStepShown(const std::string& step_name) OVERRIDE; virtual void OnStepHidden(const std::string& step_name) OVERRIDE; virtual void OnActorFinalized() OVERRIDE; virtual void OnActorDestroyed() OVERRIDE; @@ -80,6 +91,9 @@ class FirstRunController : public FirstRunActor::Delegate, // The work that should be made after actor has been finalized. base::Closure on_actor_finalized_; + // Web contents of WebUI. + content::WebContents* web_contents_for_tests_; + DISALLOW_COPY_AND_ASSIGN(FirstRunController); }; diff --git a/chrome/browser/chromeos/first_run/first_run_view.cc b/chrome/browser/chromeos/first_run/first_run_view.cc index d08a925d1..211898f 100644 --- a/chrome/browser/chromeos/first_run/first_run_view.cc +++ b/chrome/browser/chromeos/first_run/first_run_view.cc @@ -50,6 +50,10 @@ void FirstRunView::RequestFocus() { web_view_->RequestFocus(); } +content::WebContents* FirstRunView::GetWebContents() { + return web_view_->web_contents(); +} + bool FirstRunView::HandleContextMenu( const content::ContextMenuParams& params) { // Discards context menu. diff --git a/chrome/browser/chromeos/first_run/first_run_view.h b/chrome/browser/chromeos/first_run/first_run_view.h index 6d07e6b..86fdefa 100644 --- a/chrome/browser/chromeos/first_run/first_run_view.h +++ b/chrome/browser/chromeos/first_run/first_run_view.h @@ -36,6 +36,8 @@ class FirstRunView : public views::View, virtual void Layout() OVERRIDE; virtual void RequestFocus() OVERRIDE; + content::WebContents* GetWebContents(); + private: // Overriden from content::WebContentsDelegate. virtual bool HandleContextMenu( diff --git a/chrome/browser/chromeos/login/login_manager_test.cc b/chrome/browser/chromeos/login/login_manager_test.cc index 511839b..4d8738d 100644 --- a/chrome/browser/chromeos/login/login_manager_test.cc +++ b/chrome/browser/chromeos/login/login_manager_test.cc @@ -105,13 +105,7 @@ void LoginManagerTest::AddUser(const std::string& username) { } void LoginManagerTest::JSExpect(const std::string& expression) { - bool result; - EXPECT_TRUE(web_contents_ != NULL); - ASSERT_TRUE(content::ExecuteScriptAndExtractBool( - web_contents(), - "window.domAutomationController.send(!!(" + expression + "));", - &result)); - ASSERT_TRUE(result) << expression; + js_checker_.ExpectTrue(expression); } void LoginManagerTest::InitializeWebContents() { @@ -122,6 +116,7 @@ void LoginManagerTest::InitializeWebContents() { host->GetWebUILoginView()->GetWebContents(); EXPECT_TRUE(web_contents != NULL); set_web_contents(web_contents); + js_checker_.set_web_contents(web_contents); } } // namespace chromeos diff --git a/chrome/browser/chromeos/login/login_manager_test.h b/chrome/browser/chromeos/login/login_manager_test.h index 573ffcb..8504acb 100644 --- a/chrome/browser/chromeos/login/login_manager_test.h +++ b/chrome/browser/chromeos/login/login_manager_test.h @@ -6,6 +6,7 @@ #define CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_TEST_H_ #include "chrome/browser/chromeos/login/mock_login_utils.h" +#include "chrome/browser/chromeos/login/test/js_checker.h" #include "chrome/test/base/in_process_browser_test.h" namespace content { @@ -73,6 +74,7 @@ class LoginManagerTest : public InProcessBrowserTest { MockLoginUtils* mock_login_utils_; bool should_launch_browser_; content::WebContents* web_contents_; + test::JSChecker js_checker_; DISALLOW_COPY_AND_ASSIGN(LoginManagerTest); }; diff --git a/chrome/browser/chromeos/login/test/oobe_screen_waiter.h b/chrome/browser/chromeos/login/test/oobe_screen_waiter.h index 8df9b8b..d515be1 100644 --- a/chrome/browser/chromeos/login/test/oobe_screen_waiter.h +++ b/chrome/browser/chromeos/login/test/oobe_screen_waiter.h @@ -44,7 +44,6 @@ class OobeScreenWaiter : public OobeUI::Observer { DISALLOW_COPY_AND_ASSIGN(OobeScreenWaiter); }; - } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_LOGIN_TEST_OOBE_SCREEN_WAITER_H_ diff --git a/chrome/browser/resources/chromeos/first_run/first_run.js b/chrome/browser/resources/chromeos/first_run/first_run.js index 2e061f3..10ba74b 100644 --- a/chrome/browser/resources/chromeos/first_run/first_run.js +++ b/chrome/browser/resources/chromeos/first_run/first_run.js @@ -235,8 +235,9 @@ cr.define('cr.FirstRun', function() { step.setPointsTo(pointWithOffset.slice(0, 2), pointWithOffset[2]); step.show(true, function(step) { step.focusDefaultControl(); - }); - this.currentStep_ = step; + this.currentStep_ = step; + chrome.send('stepShown', [name]); + }.bind(this)); }, /** diff --git a/chrome/browser/ui/webui/chromeos/first_run/first_run_actor.h b/chrome/browser/ui/webui/chromeos/first_run/first_run_actor.h index 5de3464..e797570 100644 --- a/chrome/browser/ui/webui/chromeos/first_run/first_run_actor.h +++ b/chrome/browser/ui/webui/chromeos/first_run/first_run_actor.h @@ -30,7 +30,10 @@ class FirstRunActor { // Called when user clicked "Keep exploring" button. virtual void OnHelpButtonClicked() = 0; - // Called after setp with |step_name| has been hidden. + // Called after step with |step_name| has been shown. + virtual void OnStepShown(const std::string& step_name) = 0; + + // Called after step with |step_name| has been shown. virtual void OnStepHidden(const std::string& step_name) = 0; // Called in answer to Finalize() call. diff --git a/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.cc b/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.cc index b935980..6dec368 100644 --- a/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.cc +++ b/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.cc @@ -87,6 +87,9 @@ void FirstRunHandler::RegisterMessages() { web_ui()->RegisterMessageCallback("helpButtonClicked", base::Bind(&FirstRunHandler::HandleHelpButtonClicked, base::Unretained(this))); + web_ui()->RegisterMessageCallback("stepShown", + base::Bind(&FirstRunHandler::HandleStepShown, + base::Unretained(this))); web_ui()->RegisterMessageCallback("stepHidden", base::Bind(&FirstRunHandler::HandleStepHidden, base::Unretained(this))); @@ -113,6 +116,13 @@ void FirstRunHandler::HandleHelpButtonClicked(const base::ListValue* args) { delegate()->OnHelpButtonClicked(); } +void FirstRunHandler::HandleStepShown(const base::ListValue* args) { + std::string step_name; + CHECK(args->GetString(0, &step_name)); + if (delegate()) + delegate()->OnStepShown(step_name); +} + void FirstRunHandler::HandleStepHidden(const base::ListValue* args) { std::string step_name; CHECK(args->GetString(0, &step_name)); diff --git a/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.h b/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.h index 39588b4..6bdcd85 100644 --- a/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.h +++ b/chrome/browser/ui/webui/chromeos/first_run/first_run_handler.h @@ -43,6 +43,7 @@ class FirstRunHandler : public FirstRunActor, void HandleInitialized(const base::ListValue* args); void HandleNextButtonClicked(const base::ListValue* args); void HandleHelpButtonClicked(const base::ListValue* args); + void HandleStepShown(const base::ListValue* args); void HandleStepHidden(const base::ListValue* args); void HandleFinalized(const base::ListValue* args); diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 5351f5d..f819c1d 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -1004,6 +1004,7 @@ 'browser/chromeos/file_manager/file_manager_jstest.cc', 'browser/chromeos/file_manager/zip_file_creator_browsertest.cc', 'browser/chromeos/first_run/drive_first_run_browsertest.cc', + 'browser/chromeos/first_run/first_run_browsertest.cc', 'browser/chromeos/input_method/input_method_engine_browsertests.cc', 'browser/chromeos/input_method/mode_indicator_browsertest.cc', 'browser/chromeos/kiosk_mode/mock_kiosk_mode_settings.cc', diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi index 24f6034..6543ba7 100644 --- a/chrome/chrome_tests_unit.gypi +++ b/chrome/chrome_tests_unit.gypi @@ -103,6 +103,8 @@ 'browser/chromeos/login/mock_user_manager.h', 'browser/chromeos/login/test/oobe_screen_waiter.cc', 'browser/chromeos/login/test/oobe_screen_waiter.h', + 'browser/chromeos/login/test/js_checker.cc', + 'browser/chromeos/login/test/js_checker.h', 'browser/chromeos/policy/cloud_external_data_manager_base_test_util.cc', 'browser/chromeos/policy/cloud_external_data_manager_base_test_util.h', 'browser/chromeos/policy/device_policy_builder.cc', |