OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/histogram_samples.h" | 8 #include "base/metrics/histogram_samples.h" |
9 #include "base/metrics/statistics_recorder.h" | 9 #include "base/metrics/statistics_recorder.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 | 71 |
72 // Normally Wait() will not return until a main frame navigation occurs. | 72 // Normally Wait() will not return until a main frame navigation occurs. |
73 // If a path is set, Wait() will return after this path has been seen, | 73 // If a path is set, Wait() will return after this path has been seen, |
74 // regardless of the frame that navigated. Useful for multi-frame pages. | 74 // regardless of the frame that navigated. Useful for multi-frame pages. |
75 void SetPathToWaitFor(const std::string& path) { | 75 void SetPathToWaitFor(const std::string& path) { |
76 wait_for_path_ = path; | 76 wait_for_path_ = path; |
77 } | 77 } |
78 | 78 |
79 // content::WebContentsObserver: | 79 // content::WebContentsObserver: |
80 virtual void DidFinishLoad(content::RenderFrameHost* render_frame_host, | 80 virtual void DidFinishLoad(content::RenderFrameHost* render_frame_host, |
81 const GURL& validated_url) OVERRIDE { | 81 const GURL& validated_url) override { |
82 if (!wait_for_path_.empty()) { | 82 if (!wait_for_path_.empty()) { |
83 if (validated_url.path() == wait_for_path_) | 83 if (validated_url.path() == wait_for_path_) |
84 message_loop_runner_->Quit(); | 84 message_loop_runner_->Quit(); |
85 } else if (!render_frame_host->GetParent()) { | 85 } else if (!render_frame_host->GetParent()) { |
86 message_loop_runner_->Quit(); | 86 message_loop_runner_->Quit(); |
87 } | 87 } |
88 } | 88 } |
89 | 89 |
90 void Wait() { message_loop_runner_->Run(); } | 90 void Wait() { message_loop_runner_->Run(); } |
91 | 91 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 infobar_service_->AddObserver(this); | 138 infobar_service_->AddObserver(this); |
139 } | 139 } |
140 | 140 |
141 virtual ~InfoBarObserver() { | 141 virtual ~InfoBarObserver() { |
142 if (infobar_service_) | 142 if (infobar_service_) |
143 infobar_service_->RemoveObserver(this); | 143 infobar_service_->RemoveObserver(this); |
144 } | 144 } |
145 | 145 |
146 private: | 146 private: |
147 // PromptObserver: | 147 // PromptObserver: |
148 virtual bool IsShowingPrompt() const OVERRIDE { | 148 virtual bool IsShowingPrompt() const override { |
149 return infobar_is_being_shown_; | 149 return infobar_is_being_shown_; |
150 } | 150 } |
151 | 151 |
152 virtual void AcceptImpl() const OVERRIDE { | 152 virtual void AcceptImpl() const override { |
153 EXPECT_EQ(1u, infobar_service_->infobar_count()); | 153 EXPECT_EQ(1u, infobar_service_->infobar_count()); |
154 if (!infobar_service_->infobar_count()) | 154 if (!infobar_service_->infobar_count()) |
155 return; // Let the test finish to gather possibly more diagnostics. | 155 return; // Let the test finish to gather possibly more diagnostics. |
156 | 156 |
157 // ConfirmInfoBarDelegate::Accept returning true means the infobar is | 157 // ConfirmInfoBarDelegate::Accept returning true means the infobar is |
158 // immediately closed. Checking the return value is preferred to testing | 158 // immediately closed. Checking the return value is preferred to testing |
159 // IsShowingPrompt() here, for it avoids the delay until the closing | 159 // IsShowingPrompt() here, for it avoids the delay until the closing |
160 // notification is received. | 160 // notification is received. |
161 EXPECT_TRUE(infobar_service_->infobar_at(0) | 161 EXPECT_TRUE(infobar_service_->infobar_at(0) |
162 ->delegate() | 162 ->delegate() |
163 ->AsConfirmInfoBarDelegate() | 163 ->AsConfirmInfoBarDelegate() |
164 ->Accept()); | 164 ->Accept()); |
165 } | 165 } |
166 | 166 |
167 // infobars::InfoBarManager::Observer: | 167 // infobars::InfoBarManager::Observer: |
168 virtual void OnInfoBarAdded(infobars::InfoBar* infobar) OVERRIDE { | 168 virtual void OnInfoBarAdded(infobars::InfoBar* infobar) override { |
169 infobar_is_being_shown_ = true; | 169 infobar_is_being_shown_ = true; |
170 } | 170 } |
171 | 171 |
172 virtual void OnInfoBarRemoved(infobars::InfoBar* infobar, | 172 virtual void OnInfoBarRemoved(infobars::InfoBar* infobar, |
173 bool animate) OVERRIDE { | 173 bool animate) override { |
174 infobar_is_being_shown_ = false; | 174 infobar_is_being_shown_ = false; |
175 } | 175 } |
176 | 176 |
177 virtual void OnManagerShuttingDown( | 177 virtual void OnManagerShuttingDown( |
178 infobars::InfoBarManager* manager) OVERRIDE { | 178 infobars::InfoBarManager* manager) override { |
179 ASSERT_EQ(infobar_service_, manager); | 179 ASSERT_EQ(infobar_service_, manager); |
180 infobar_service_->RemoveObserver(this); | 180 infobar_service_->RemoveObserver(this); |
181 infobar_service_ = NULL; | 181 infobar_service_ = NULL; |
182 } | 182 } |
183 | 183 |
184 bool infobar_is_being_shown_; | 184 bool infobar_is_being_shown_; |
185 InfoBarService* infobar_service_; | 185 InfoBarService* infobar_service_; |
186 | 186 |
187 DISALLOW_COPY_AND_ASSIGN(InfoBarObserver); | 187 DISALLOW_COPY_AND_ASSIGN(InfoBarObserver); |
188 }; | 188 }; |
189 | 189 |
190 class BubbleObserver : public PromptObserver { | 190 class BubbleObserver : public PromptObserver { |
191 public: | 191 public: |
192 explicit BubbleObserver(content::WebContents* web_contents) | 192 explicit BubbleObserver(content::WebContents* web_contents) |
193 : ui_controller_( | 193 : ui_controller_( |
194 ManagePasswordsUIController::FromWebContents(web_contents)) {} | 194 ManagePasswordsUIController::FromWebContents(web_contents)) {} |
195 | 195 |
196 virtual ~BubbleObserver() {} | 196 virtual ~BubbleObserver() {} |
197 | 197 |
198 private: | 198 private: |
199 // PromptObserver: | 199 // PromptObserver: |
200 virtual bool IsShowingPrompt() const OVERRIDE { | 200 virtual bool IsShowingPrompt() const override { |
201 return ui_controller_->PasswordPendingUserDecision(); | 201 return ui_controller_->PasswordPendingUserDecision(); |
202 } | 202 } |
203 | 203 |
204 virtual void AcceptImpl() const OVERRIDE { | 204 virtual void AcceptImpl() const override { |
205 ui_controller_->SavePassword(); | 205 ui_controller_->SavePassword(); |
206 EXPECT_FALSE(IsShowingPrompt()); | 206 EXPECT_FALSE(IsShowingPrompt()); |
207 } | 207 } |
208 | 208 |
209 ManagePasswordsUIController* const ui_controller_; | 209 ManagePasswordsUIController* const ui_controller_; |
210 | 210 |
211 DISALLOW_COPY_AND_ASSIGN(BubbleObserver); | 211 DISALLOW_COPY_AND_ASSIGN(BubbleObserver); |
212 }; | 212 }; |
213 | 213 |
214 GURL GetFileURL(const char* filename) { | 214 GURL GetFileURL(const char* filename) { |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 | 257 |
258 | 258 |
259 // PasswordManagerBrowserTest ------------------------------------------------- | 259 // PasswordManagerBrowserTest ------------------------------------------------- |
260 | 260 |
261 class PasswordManagerBrowserTest : public InProcessBrowserTest { | 261 class PasswordManagerBrowserTest : public InProcessBrowserTest { |
262 public: | 262 public: |
263 PasswordManagerBrowserTest() {} | 263 PasswordManagerBrowserTest() {} |
264 virtual ~PasswordManagerBrowserTest() {} | 264 virtual ~PasswordManagerBrowserTest() {} |
265 | 265 |
266 // InProcessBrowserTest: | 266 // InProcessBrowserTest: |
267 virtual void SetUpOnMainThread() OVERRIDE { | 267 virtual void SetUpOnMainThread() override { |
268 // Use TestPasswordStore to remove a possible race. Normally the | 268 // Use TestPasswordStore to remove a possible race. Normally the |
269 // PasswordStore does its database manipulation on the DB thread, which | 269 // PasswordStore does its database manipulation on the DB thread, which |
270 // creates a possible race during navigation. Specifically the | 270 // creates a possible race during navigation. Specifically the |
271 // PasswordManager will ignore any forms in a page if the load from the | 271 // PasswordManager will ignore any forms in a page if the load from the |
272 // PasswordStore has not completed. | 272 // PasswordStore has not completed. |
273 PasswordStoreFactory::GetInstance()->SetTestingFactory( | 273 PasswordStoreFactory::GetInstance()->SetTestingFactory( |
274 browser()->profile(), TestPasswordStoreService::Build); | 274 browser()->profile(), TestPasswordStoreService::Build); |
275 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 275 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
276 ASSERT_FALSE(CommandLine::ForCurrentProcess()->HasSwitch( | 276 ASSERT_FALSE(CommandLine::ForCurrentProcess()->HasSwitch( |
277 password_manager::switches::kEnableAutomaticPasswordSaving)); | 277 password_manager::switches::kEnableAutomaticPasswordSaving)); |
278 } | 278 } |
279 | 279 |
280 virtual void TearDownOnMainThread() OVERRIDE { | 280 virtual void TearDownOnMainThread() override { |
281 ASSERT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); | 281 ASSERT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); |
282 } | 282 } |
283 | 283 |
284 protected: | 284 protected: |
285 content::WebContents* WebContents() { | 285 content::WebContents* WebContents() { |
286 return browser()->tab_strip_model()->GetActiveWebContents(); | 286 return browser()->tab_strip_model()->GetActiveWebContents(); |
287 } | 287 } |
288 | 288 |
289 content::RenderViewHost* RenderViewHost() { | 289 content::RenderViewHost* RenderViewHost() { |
290 return WebContents()->GetRenderViewHost(); | 290 return WebContents()->GetRenderViewHost(); |
(...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1273 NavigateToFile("/password/form_with_only_password_field.html"); | 1273 NavigateToFile("/password/form_with_only_password_field.html"); |
1274 | 1274 |
1275 // Let the user interact with the page, so that DOM gets modification events, | 1275 // Let the user interact with the page, so that DOM gets modification events, |
1276 // needed for autofilling fields. | 1276 // needed for autofilling fields. |
1277 content::SimulateMouseClickAt( | 1277 content::SimulateMouseClickAt( |
1278 WebContents(), 0, blink::WebMouseEvent::ButtonLeft, gfx::Point(1, 1)); | 1278 WebContents(), 0, blink::WebMouseEvent::ButtonLeft, gfx::Point(1, 1)); |
1279 | 1279 |
1280 // Wait until that interaction causes the password value to be revealed. | 1280 // Wait until that interaction causes the password value to be revealed. |
1281 WaitForElementValue("password", "mypassword"); | 1281 WaitForElementValue("password", "mypassword"); |
1282 } | 1282 } |
OLD | NEW |