blob: 1fd650e37e7fc7e5e32ecaae358d920deb19b814 [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001// 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_UTILITY_PROFILE_IMPORT_HANDLER_H_
6#define CHROME_UTILITY_PROFILE_IMPORT_HANDLER_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/memory/ref_counted.h"
11#include "base/memory/scoped_ptr.h"
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010012#include "chrome/utility/utility_message_handler.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000013
14class ExternalProcessImporterBridge;
15class Importer;
16
17namespace base {
18class DictionaryValue;
19class Thread;
20}
21
22namespace importer {
23struct SourceProfile;
24}
25
26namespace chrome {
27
28// Dispatches IPCs for out of process profile import.
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010029class ProfileImportHandler : public UtilityMessageHandler {
Torne (Richard Coles)58218062012-11-14 11:43:16 +000030 public:
31 ProfileImportHandler();
32 virtual ~ProfileImportHandler();
33
34 // IPC::Listener:
35 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
36
37 private:
38 void OnImportStart(
39 const importer::SourceProfile& source_profile,
40 uint16 items,
41 const base::DictionaryValue& localized_strings);
42 void OnImportCancel();
43 void OnImportItemFinished(uint16 item);
44
45 // The following are used with out of process profile import:
46 void ImporterCleanup();
47
48 static bool Send(IPC::Message* message);
49
50 // Thread that importer runs on, while ProfileImportThread handles messages
51 // from the browser process.
52 scoped_ptr<base::Thread> import_thread_;
53
54 // Bridge object is passed to importer, so that it can send IPC calls
55 // directly back to the ProfileImportProcessHost.
56 scoped_refptr<ExternalProcessImporterBridge> bridge_;
57
58 // A bitmask of importer::ImportItem.
59 uint16 items_to_import_;
60
61 // Importer of the appropriate type (Firefox, Safari, IE, etc.)
62 scoped_refptr<Importer> importer_;
63};
64
65} // namespace chrome
66
67#endif // CHROME_UTILITY_PROFILE_IMPORT_HANDLER_H_