Home | History | Annotate | Download | only in utility
      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 namespace chrome {
     27 
     28 // Dispatches IPCs for out of process profile import.
     29 class ProfileImportHandler : public UtilityMessageHandler {
     30  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_
     68