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(const std::vector<ImportedBookmarkEntry>& bookmarks,
     51                             const base::string16& first_folder_name) OVERRIDE;
     52 
     53   virtual void AddHomePage(const GURL& home_page) OVERRIDE;
     54 
     55 #if defined(OS_WIN)
     56   virtual void AddIE7PasswordInfo(
     57       const importer::ImporterIE7PasswordInfo& password_info) OVERRIDE;
     58 #endif
     59 
     60   virtual void SetFavicons(
     61       const std::vector<ImportedFaviconUsage>& favicons) OVERRIDE;
     62 
     63   virtual void SetHistoryItems(const std::vector<ImporterURLRow>& rows,
     64                                importer::VisitSource visit_source) OVERRIDE;
     65 
     66   virtual void SetKeywords(
     67       const std::vector<importer::URLKeywordInfo>& url_keywords,
     68       bool unique_on_host_and_path) OVERRIDE;
     69 
     70   virtual void SetFirefoxSearchEnginesXMLData(
     71       const std::vector<std::string>& seach_engine_data) OVERRIDE;
     72 
     73   virtual void SetPasswordForm(
     74       const autofill::PasswordForm& form) OVERRIDE;
     75 
     76   virtual void NotifyStarted() OVERRIDE;
     77   virtual void NotifyItemStarted(importer::ImportItem item) OVERRIDE;
     78   virtual void NotifyItemEnded(importer::ImportItem item) OVERRIDE;
     79   virtual void NotifyEnded() OVERRIDE;
     80 
     81   virtual base::string16 GetLocalizedString(int message_id) OVERRIDE;
     82   // End ImporterBridge implementation.
     83 
     84  private:
     85   virtual ~ExternalProcessImporterBridge();
     86 
     87   void Send(IPC::Message* message);
     88   void SendInternal(IPC::Message* message);
     89 
     90   // Holds strings needed by the external importer because the resource
     91   // bundle isn't available to the external process.
     92   scoped_ptr<base::DictionaryValue> localized_strings_;
     93 
     94   IPC::Sender* sender_;
     95   scoped_refptr<base::TaskRunner> task_runner_;
     96 
     97   DISALLOW_COPY_AND_ASSIGN(ExternalProcessImporterBridge);
     98 };
     99 
    100 #endif  // CHROME_UTILITY_IMPORTER_EXTERNAL_PROCESS_IMPORTER_BRIDGE_H_
    101