1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_UI_CONTROLLER_MOCK_H_ 6#define CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_UI_CONTROLLER_MOCK_H_ 7 8#include "base/basictypes.h" 9#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" 10#include "components/password_manager/core/common/password_manager_ui.h" 11#include "content/public/browser/navigation_details.h" 12 13namespace content { 14class WebContents; 15} // namespace content 16 17// This mock is used in tests to ensure that we're just testing the controller 18// behavior, and not the behavior of the bits and pieces it relies upon (like 19// FormManager). 20class ManagePasswordsUIControllerMock 21 : public ManagePasswordsUIController { 22 public: 23 explicit ManagePasswordsUIControllerMock( 24 content::WebContents* contents); 25 virtual ~ManagePasswordsUIControllerMock(); 26 27 // Navigation, surprisingly, is platform-specific; Android's settings page 28 // is native UI and therefore isn't available in a tab for unit tests. 29 // 30 // TODO(mkwst): Determine how to reasonably test this on that platform. 31 virtual void NavigateToPasswordManagerSettingsPage() OVERRIDE; 32 bool navigated_to_settings_page() const { 33 return navigated_to_settings_page_; 34 } 35 36 // We don't have a FormManager in tests, so stub these out. 37 virtual void SavePasswordInternal() OVERRIDE; 38 bool saved_password() const { return saved_password_; } 39 40 virtual void NeverSavePasswordInternal() OVERRIDE; 41 bool never_saved_password() const { return never_saved_password_; } 42 43 virtual const autofill::PasswordForm& PendingCredentials() const OVERRIDE; 44 void SetPendingCredentials(autofill::PasswordForm pending_credentials); 45 46 // Sneaky setters for testing. 47 void SetPasswordFormMap(const autofill::ConstPasswordFormMap& map) { 48 password_form_map_ = map; 49 } 50 void SetState(password_manager::ui::State state) { state_ = state; } 51 52 void SetTimer(base::ElapsedTimer* timer) { timer_.reset(timer); } 53 54 // True if this controller is installed on |web_contents()|. 55 bool IsInstalled() const; 56 57 using ManagePasswordsUIController::DidNavigateMainFrame; 58 59 private: 60 bool navigated_to_settings_page_; 61 bool saved_password_; 62 bool never_saved_password_; 63 64 autofill::PasswordForm pending_credentials_; 65 66 DISALLOW_COPY_AND_ASSIGN(ManagePasswordsUIControllerMock); 67}; 68 69#endif // CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_UI_CONTROLLER_MOCK_H_ 70