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 // 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