password_changed_view.h revision 4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_PASSWORD_CHANGED_VIEW_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_LOGIN_PASSWORD_CHANGED_VIEW_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/button/button.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/textfield/textfield.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/view.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/window/dialog_delegate.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace views { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Button; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Label; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass RadioButton; 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Textfield; 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace views 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A dialog box that is shown when password change was detected. 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// User is presented with an option to sync all settings or 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// enter old password and sync only delta. 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PasswordChangedView : public views::View, 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public views::DialogDelegate, 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public views::ButtonListener, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public views::Textfield::Controller { 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Delegate class to get notifications from the view. 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch class Delegate { 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~Delegate() {} 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // User provided |old_password|, decrypt homedir and sync only delta. 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void RecoverEncryptedData(const std::string& old_password) = 0; 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Ignores password change and forces full sync. 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ResyncEncryptedData() = 0; 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch PasswordChangedView(Delegate* delegate, bool full_sync_disabled); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~PasswordChangedView() {} 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::DialogDelegate overrides: 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool Accept(); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual int GetDialogButtons() const; 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::WindowDelegate overrides: 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual View* GetInitiallyFocusedView(); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsModal() const { return true; } 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual views::View* GetContentsView() { return this; } 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::View overrides: 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual std::wstring GetWindowTitle() const; 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::ButtonListener overrides: 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ButtonPressed(views::Button* sender, 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const views::Event& event); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::Textfield::Controller overrides: 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool HandleKeystroke(views::Textfield* sender, 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const views::Textfield::Keystroke& keystroke); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ContentsChanged(views::Textfield* sender, 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& new_contents) {} 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::View overrides: 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual gfx::Size GetPreferredSize(); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ViewHierarchyChanged(bool is_add, 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* parent, 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* child); 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Called when dialog is accepted. 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool ExitDialog(); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Initialize view layout. 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Init(); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Screen controls. 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Label* title_label_; 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Label* description_label_; 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::RadioButton* full_sync_radio_; 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::RadioButton* delta_sync_radio_; 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Textfield* old_password_field_; 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Notifications receiver. 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Delegate* delegate_; 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Whether full sync option is disabled. 954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool full_sync_disabled_; 964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(PasswordChangedView); 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_CHROMEOS_LOGIN_PASSWORD_CHANGED_VIEW_H_ 103