Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8052)

Unified Diff: chrome/browser/ui/webui/options/password_manager_handler.h

Issue 1193143003: Enable import/export of passwords into/from Password Manager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/options/password_manager_handler.h
diff --git a/chrome/browser/ui/webui/options/password_manager_handler.h b/chrome/browser/ui/webui/options/password_manager_handler.h
index cea4f6fb938e6d560b58430220bb00514b347a4f..011acd427a88b63d6e97ae5c174ff9904c2d827b 100644
--- a/chrome/browser/ui/webui/options/password_manager_handler.h
+++ b/chrome/browser/ui/webui/options/password_manager_handler.h
@@ -10,27 +10,42 @@
#include <string>
#include <vector>
+#include "base/gtest_prod_util.h"
#include "base/macros.h"
#include "build/build_config.h"
#include "chrome/browser/ui/passwords/password_manager_presenter.h"
#include "chrome/browser/ui/passwords/password_ui_view.h"
#include "chrome/browser/ui/webui/options/options_ui.h"
+#include "components/password_manager/core/browser/import/password_importer.h"
#include "components/prefs/pref_member.h"
+#include "ui/shell_dialogs/select_file_dialog.h"
+
+class PasswordManagerHandlerTest;
namespace options {
// The WebUI based PasswordUIView. Displays passwords in the web ui.
class PasswordManagerHandler : public OptionsPageUIHandler,
- public PasswordUIView {
+ public PasswordUIView,
+ public ui::SelectFileDialog::Listener {
public:
PasswordManagerHandler();
+ // This constructor is used for testing only.
+ explicit PasswordManagerHandler(
+ scoped_ptr<PasswordManagerPresenter> presenter);
Evan Stade 2016/04/06 21:25:22 this need not be public. You can make it protected
xunlu 2016/04/08 15:38:21 Done.
~PasswordManagerHandler() override;
// OptionsPageUIHandler implementation.
void GetLocalizedValues(base::DictionaryValue* localized_strings) override;
void InitializeHandler() override;
+ void InitializePage() override;
void RegisterMessages() override;
+ // ui::SelectFileDialog::Listener implementation
+ void FileSelected(const base::FilePath& path,
+ int index,
+ void* params) override;
+
// PasswordUIView implementation.
Profile* GetProfile() override;
void ShowPassword(
@@ -64,8 +79,49 @@ class PasswordManagerHandler : public OptionsPageUIHandler,
// |index| The index of the entry.
void HandleRequestShowPassword(const base::ListValue* args);
+ // Import from CSV/JSON file. The steps are:
+ // 1. user click import button -> HandlePasswordImport() ->
+ // start file selector
+ // 2. user selects file -> ImportPasswordFileSeleted() -> read to memory
+ // 3. read completes -> ImportPasswordFileRead() -> store to PasswordStore
+ void HandlePasswordImport(const base::ListValue* args);
+ void ImportPasswordFileSelected(const base::FilePath& path);
+ void ImportPasswordFileRead(password_manager::PasswordImporter::Result result,
+ const std::vector<autofill::PasswordForm>& forms);
+
+ // Export to CSV/JSON file. The steps are:
+ // 1. user click export button -> HandlePasswordExport() ->
+ // check OS password if necessary -> start file selector
+ // 2. user selects file -> ExportPasswordFileSeleted() ->
+ // write to memory buffer -> start write operation
+ void HandlePasswordExport(const base::ListValue* args);
+ void ExportPasswordFileSelected(const base::FilePath& path);
+
+ // A short class to persist imported password forms to password store.
+ class ImportPasswordResultConsumer
+ : public base::RefCountedThreadSafe<ImportPasswordResultConsumer> {
+ public:
+ explicit ImportPasswordResultConsumer(Profile* profile);
+
+ void ConsumePassword(password_manager::PasswordImporter::Result result,
+ const std::vector<autofill::PasswordForm>& forms);
+
+ private:
+ friend class base::RefCountedThreadSafe<ImportPasswordResultConsumer>;
+
+ ~ImportPasswordResultConsumer() {}
+
+ Profile* profile_;
+ };
+
+ // User pref for storing accept languages.
+ std::string languages_;
+
// The PasswordManagerPresenter object owned by the this view.
- PasswordManagerPresenter password_manager_presenter_;
+ scoped_ptr<PasswordManagerPresenter> password_manager_presenter_;
+
+ // Handle for file picker
+ scoped_refptr<ui::SelectFileDialog> selected_file_dialog_;
DISALLOW_COPY_AND_ASSIGN(PasswordManagerHandler);
};

Powered by Google App Engine
This is Rietveld 408576698