Home | History | Annotate | Download | only in passwords
      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 
     13 namespace content {
     14 class 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).
     20 class 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