1// Copyright (c) 2012 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_WEBUI_OPTIONS_IMPORT_DATA_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_OPTIONS_IMPORT_DATA_HANDLER_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/memory/scoped_ptr.h"
11#include "chrome/browser/importer/importer_progress_observer.h"
12#include "chrome/browser/ui/webui/options/options_ui.h"
13#include "chrome/common/importer/importer_data_types.h"
14#include "ui/shell_dialogs/select_file_dialog.h"
15
16class ExternalProcessImporterHost;
17class ImporterList;
18
19namespace options {
20
21// Chrome personal stuff import data overlay UI handler.
22class ImportDataHandler : public OptionsPageUIHandler,
23                          public importer::ImporterProgressObserver,
24                          public ui::SelectFileDialog::Listener {
25 public:
26  ImportDataHandler();
27  virtual ~ImportDataHandler();
28
29  // OptionsPageUIHandler:
30  virtual void GetLocalizedValues(
31      base::DictionaryValue* localized_strings) OVERRIDE;
32  virtual void InitializeHandler() OVERRIDE;
33  virtual void InitializePage() OVERRIDE;
34
35  // content::WebUIMessageHandler:
36  virtual void RegisterMessages() OVERRIDE;
37
38 private:
39  void StartImport(const importer::SourceProfile& source_profile,
40                   uint16 imported_items);
41
42  void ImportData(const base::ListValue* args);
43
44  // importer::ImporterProgressObserver:
45  virtual void ImportStarted() OVERRIDE;
46  virtual void ImportItemStarted(importer::ImportItem item) OVERRIDE;
47  virtual void ImportItemEnded(importer::ImportItem item) OVERRIDE;
48  virtual void ImportEnded() OVERRIDE;
49
50  // ui::SelectFileDialog::Listener:
51  virtual void FileSelected(const base::FilePath& path,
52                            int index,
53                            void* params) OVERRIDE;
54
55  // Opens a file selection dialog to choose the bookmarks HTML file.
56  void HandleChooseBookmarksFile(const base::ListValue* args);
57
58  scoped_ptr<ImporterList> importer_list_;
59
60  // If non-null it means importing is in progress. ImporterHost takes care
61  // of deleting itself when import is complete.
62  ExternalProcessImporterHost* importer_host_;  // weak
63
64  bool import_did_succeed_;
65
66  scoped_refptr<ui::SelectFileDialog> select_file_dialog_;
67
68  DISALLOW_COPY_AND_ASSIGN(ImportDataHandler);
69};
70
71}  // namespace options
72
73#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_IMPORT_DATA_HANDLER_H_
74