• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_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"
12 #include "chrome/utility/utility_message_handler.h"
13 
14 class ExternalProcessImporterBridge;
15 class Importer;
16 
17 namespace base {
18 class DictionaryValue;
19 class Thread;
20 }
21 
22 namespace importer {
23 struct SourceProfile;
24 }
25 
26 // Dispatches IPCs for out of process profile import.
27 class ProfileImportHandler : public UtilityMessageHandler {
28  public:
29   ProfileImportHandler();
30   virtual ~ProfileImportHandler();
31 
32   // IPC::Listener:
33   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
34 
35  private:
36   void OnImportStart(
37       const importer::SourceProfile& source_profile,
38       uint16 items,
39       const base::DictionaryValue& localized_strings);
40   void OnImportCancel();
41   void OnImportItemFinished(uint16 item);
42 
43   // The following are used with out of process profile import:
44   void ImporterCleanup();
45 
46   // Thread that importer runs on, while ProfileImportThread handles messages
47   // from the browser process.
48   scoped_ptr<base::Thread> import_thread_;
49 
50   // Bridge object is passed to importer, so that it can send IPC calls
51   // directly back to the ProfileImportProcessHost.
52   scoped_refptr<ExternalProcessImporterBridge> bridge_;
53 
54   // A bitmask of importer::ImportItem.
55   uint16 items_to_import_;
56 
57   // Importer of the appropriate type (Firefox, Safari, IE, etc.)
58   scoped_refptr<Importer> importer_;
59 };
60 
61 #endif  // CHROME_UTILITY_PROFILE_IMPORT_HANDLER_H_
62