Home | History | Annotate | Download | only in importer
      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_IMPORTER_EXTERNAL_PROCESS_IMPORTER_BRIDGE_H_
      6 #define CHROME_UTILITY_IMPORTER_EXTERNAL_PROCESS_IMPORTER_BRIDGE_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "base/basictypes.h"
     12 #include "base/compiler_specific.h"
     13 #include "base/memory/scoped_ptr.h"
     14 #include "chrome/common/importer/importer_bridge.h"
     15 
     16 class GURL;
     17 struct ImportedBookmarkEntry;
     18 
     19 namespace base {
     20 class DictionaryValue;
     21 class TaskRunner;
     22 }
     23 
     24 namespace importer {
     25 #if defined(OS_WIN)
     26 struct ImporterIE7PasswordInfo;
     27 #endif
     28 struct ImporterURLRow;
     29 struct URLKeywordInfo;
     30 }
     31 
     32 namespace IPC {
     33 class Message;
     34 class Sender;
     35 }
     36 
     37 // When the importer is run in an external process, the bridge is effectively
     38 // split in half by the IPC infrastructure.  The external bridge receives data
     39 // and notifications from the importer, and sends it across IPC.  The
     40 // internal bridge gathers the data from the IPC host and writes it to the
     41 // profile.
     42 class ExternalProcessImporterBridge : public ImporterBridge {
     43  public:
     44   ExternalProcessImporterBridge(
     45       const base::DictionaryValue& localized_strings,
     46       IPC::Sender* sender,
     47       base::TaskRunner* task_runner);
     48 
     49   // Begin ImporterBridge implementation:
     50   virtual void AddBookmarks(
     51       const std::vector<ImportedBookmarkEntry>& bookmarks,
     52       const string16& first_folder_name) OVERRIDE;
     53 
     54   virtual void AddHomePage(const GURL& home_page) OVERRIDE;
     55 
     56 #if defined(OS_WIN)
     57   virtual void AddIE7PasswordInfo(
     58       const importer::ImporterIE7PasswordInfo& password_info) OVERRIDE;
     59 #endif
     60 
     61   virtual void SetFavicons(
     62       const std::vector<ImportedFaviconUsage>& favicons) OVERRIDE;
     63 
     64   virtual void SetHistoryItems(const std::vector<ImporterURLRow>& rows,
     65                                importer::VisitSource visit_source) OVERRIDE;
     66 
     67   virtual void SetKeywords(
     68       const std::vector<importer::URLKeywordInfo>& url_keywords,
     69       bool unique_on_host_and_path) OVERRIDE;
     70 
     71   virtual void SetFirefoxSearchEnginesXMLData(
     72       const std::vector<std::string>& seach_engine_data) OVERRIDE;
     73 
     74   virtual void SetPasswordForm(
     75       const content::PasswordForm& form) OVERRIDE;
     76 
     77   virtual void NotifyStarted() OVERRIDE;
     78   virtual void NotifyItemStarted(importer::ImportItem item) OVERRIDE;
     79   virtual void NotifyItemEnded(importer::ImportItem item) OVERRIDE;
     80   virtual void NotifyEnded() OVERRIDE;
     81 
     82   virtual string16 GetLocalizedString(int message_id) OVERRIDE;
     83   // End ImporterBridge implementation.
     84 
     85  private:
     86   virtual ~ExternalProcessImporterBridge();
     87 
     88   void Send(IPC::Message* message);
     89   void SendInternal(IPC::Message* message);
     90 
     91   // Holds strings needed by the external importer because the resource
     92   // bundle isn't available to the external process.
     93   scoped_ptr<base::DictionaryValue> localized_strings_;
     94 
     95   IPC::Sender* sender_;
     96   scoped_refptr<base::TaskRunner> task_runner_;
     97 
     98   DISALLOW_COPY_AND_ASSIGN(ExternalProcessImporterBridge);
     99 };
    100 
    101 #endif  // CHROME_UTILITY_IMPORTER_EXTERNAL_PROCESS_IMPORTER_BRIDGE_H_
    102