Home | History | Annotate | Download | only in importer
      1 // Copyright 2013 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 // Multiply-included message file, no traditonal include guard.
      6 #include <string>
      7 #include <vector>
      8 
      9 #include "base/basictypes.h"
     10 #include "base/strings/string16.h"
     11 #include "base/values.h"
     12 #include "chrome/common/common_param_traits_macros.h"
     13 #include "chrome/common/importer/imported_bookmark_entry.h"
     14 #include "chrome/common/importer/imported_favicon_usage.h"
     15 #include "chrome/common/importer/importer_data_types.h"
     16 #include "chrome/common/importer/importer_url_row.h"
     17 #include "components/autofill/content/common/autofill_param_traits_macros.h"
     18 #include "components/autofill/core/common/password_form.h"
     19 #include "content/public/common/common_param_traits.h"
     20 #include "ipc/ipc_message_macros.h"
     21 #include "ipc/ipc_message_utils.h"
     22 
     23 #ifndef CHROME_COMMON_IMPORTER_PROFILE_IMPORT_PROCESS_MESSAGES_H_
     24 #define CHROME_COMMON_IMPORTER_PROFILE_IMPORT_PROCESS_MESSAGES_H_
     25 
     26 namespace IPC {
     27 
     28 // Traits for importer::SourceProfile struct to pack/unpack.
     29 template <>
     30 struct ParamTraits<importer::SourceProfile> {
     31   typedef importer::SourceProfile param_type;
     32   static void Write(Message* m, const param_type& p) {
     33     WriteParam(m, p.importer_name);
     34     WriteParam(m, static_cast<int>(p.importer_type));
     35     WriteParam(m, p.source_path);
     36     WriteParam(m, p.app_path);
     37     WriteParam(m, static_cast<int>(p.services_supported));
     38     WriteParam(m, p.locale);
     39   }
     40   static bool Read(const Message* m, PickleIterator* iter, param_type* p) {
     41     if (!ReadParam(m, iter, &p->importer_name))
     42       return false;
     43 
     44     int importer_type = 0;
     45     if (!ReadParam(m, iter, &importer_type))
     46       return false;
     47     p->importer_type = static_cast<importer::ImporterType>(importer_type);
     48 
     49     if (!ReadParam(m, iter, &p->source_path) ||
     50         !ReadParam(m, iter, &p->app_path)) {
     51         return false;
     52     }
     53 
     54     int services_supported = 0;
     55     if (!ReadParam(m, iter, &services_supported))
     56       return false;
     57     p->services_supported = static_cast<uint16>(services_supported);
     58 
     59     if (!ReadParam(m, iter, &p->locale))
     60       return false;
     61 
     62     return true;
     63   }
     64   static void Log(const param_type& p, std::string* l) {
     65     l->append("(");
     66     LogParam(p.importer_name, l);
     67     l->append(", ");
     68     LogParam(static_cast<int>(p.importer_type), l);
     69     l->append(", ");
     70     LogParam(p.source_path, l);
     71     l->append(", ");
     72     LogParam(p.app_path, l);
     73     l->append(", ");
     74     LogParam(static_cast<int>(p.services_supported), l);
     75     l->append(", ");
     76     LogParam(p.locale, l);
     77     l->append(")");
     78   }
     79 };  // ParamTraits<importer::SourceProfile>
     80 
     81 // Traits for ImporterURLRow to pack/unpack.
     82 template <>
     83 struct ParamTraits<ImporterURLRow> {
     84   typedef ImporterURLRow param_type;
     85   static void Write(Message* m, const param_type& p) {
     86     WriteParam(m, p.url);
     87     WriteParam(m, p.title);
     88     WriteParam(m, p.visit_count);
     89     WriteParam(m, p.typed_count);
     90     WriteParam(m, p.last_visit);
     91     WriteParam(m, p.hidden);
     92   }
     93   static bool Read(const Message* m, PickleIterator* iter, param_type* p) {
     94     GURL url;
     95     base::string16 title;
     96     int visit_count, typed_count;
     97     base::Time last_visit;
     98     bool hidden;
     99     if (!ReadParam(m, iter, &url) ||
    100         !ReadParam(m, iter, &title) ||
    101         !ReadParam(m, iter, &visit_count) ||
    102         !ReadParam(m, iter, &typed_count) ||
    103         !ReadParam(m, iter, &last_visit) ||
    104         !ReadParam(m, iter, &hidden))
    105       return false;
    106     *p = ImporterURLRow(url);
    107     p->title = title;
    108     p->visit_count = visit_count;
    109     p->typed_count = typed_count;
    110     p->last_visit = last_visit;
    111     p->hidden = hidden;
    112     return true;
    113   }
    114   static void Log(const param_type& p, std::string* l) {
    115     l->append("(");
    116     LogParam(p.url, l);
    117     l->append(", ");
    118     LogParam(p.title, l);
    119     l->append(", ");
    120     LogParam(p.visit_count, l);
    121     l->append(", ");
    122     LogParam(p.typed_count, l);
    123     l->append(", ");
    124     LogParam(p.last_visit, l);
    125     l->append(", ");
    126     LogParam(p.hidden, l);
    127     l->append(")");
    128   }
    129 };  // ParamTraits<ImporterURLRow>
    130 
    131 // Traits for ImportedBookmarkEntry to pack/unpack.
    132 template <>
    133 struct ParamTraits<ImportedBookmarkEntry> {
    134   typedef ImportedBookmarkEntry param_type;
    135   static void Write(Message* m, const param_type& p) {
    136     WriteParam(m, p.in_toolbar);
    137     WriteParam(m, p.is_folder);
    138     WriteParam(m, p.url);
    139     WriteParam(m, p.path);
    140     WriteParam(m, p.title);
    141     WriteParam(m, p.creation_time);
    142   }
    143   static bool Read(const Message* m, PickleIterator* iter, param_type* p) {
    144     return
    145         (ReadParam(m, iter, &p->in_toolbar)) &&
    146         (ReadParam(m, iter, &p->is_folder)) &&
    147         (ReadParam(m, iter, &p->url)) &&
    148         (ReadParam(m, iter, &p->path)) &&
    149         (ReadParam(m, iter, &p->title)) &&
    150         (ReadParam(m, iter, &p->creation_time));
    151   }
    152   static void Log(const param_type& p, std::string* l) {
    153     l->append("(");
    154     LogParam(p.in_toolbar, l);
    155     l->append(", ");
    156     LogParam(p.is_folder, l);
    157     l->append(", ");
    158     LogParam(p.url, l);
    159     l->append(", ");
    160     LogParam(p.path, l);
    161     l->append(", ");
    162     LogParam(p.title, l);
    163     l->append(", ");
    164     LogParam(p.creation_time, l);
    165     l->append(")");
    166   }
    167 };  // ParamTraits<ImportedBookmarkEntry>
    168 
    169 // Traits for ImportedFaviconUsage.
    170 template <>
    171 struct ParamTraits<ImportedFaviconUsage> {
    172   typedef ImportedFaviconUsage param_type;
    173   static void Write(Message* m, const param_type& p) {
    174     WriteParam(m, p.favicon_url);
    175     WriteParam(m, p.png_data);
    176     WriteParam(m, p.urls);
    177   }
    178   static bool Read(const Message* m, PickleIterator* iter, param_type* p) {
    179     return
    180         ReadParam(m, iter, &p->favicon_url) &&
    181         ReadParam(m, iter, &p->png_data) &&
    182         ReadParam(m, iter, &p->urls);
    183   }
    184   static void Log(const param_type& p, std::string* l) {
    185     l->append("(");
    186     LogParam(p.favicon_url, l);
    187     l->append(", ");
    188     LogParam(p.png_data, l);
    189     l->append(", ");
    190     LogParam(p.urls, l);
    191     l->append(")");
    192   }
    193 };  // ParamTraits<ImportedFaviconUsage>
    194 
    195 // Traits for importer::URLKeywordInfo
    196 template <>
    197 struct ParamTraits<importer::URLKeywordInfo> {
    198   typedef importer::URLKeywordInfo param_type;
    199   static void Write(Message* m, const param_type& p) {
    200     WriteParam(m, p.url);
    201     WriteParam(m, p.keyword);
    202     WriteParam(m, p.display_name);
    203   }
    204 
    205   static bool Read(const Message* m, PickleIterator* iter, param_type* p) {
    206     return
    207         ReadParam(m, iter, &p->url) &&
    208         ReadParam(m, iter, &p->keyword) &&
    209         ReadParam(m, iter, &p->display_name);
    210   }
    211 
    212   static void Log(const param_type& p, std::string* l) {
    213     l->append("(");
    214     LogParam(p.url, l);
    215     l->append(", ");
    216     LogParam(p.keyword, l);
    217     l->append(", ");
    218     LogParam(p.display_name, l);
    219     l->append(")");
    220   }
    221 };  // ParamTraits<importer::URLKeywordInfo>
    222 
    223 #if defined(OS_WIN)
    224 // Traits for importer::ImporterIE7PasswordInfo
    225 template <>
    226 struct ParamTraits<importer::ImporterIE7PasswordInfo> {
    227   typedef importer::ImporterIE7PasswordInfo param_type;
    228   static void Write(Message* m, const param_type& p) {
    229     WriteParam(m, p.url_hash);
    230     WriteParam(m, p.encrypted_data);
    231     WriteParam(m, p.date_created);
    232   }
    233 
    234   static bool Read(const Message* m, PickleIterator* iter, param_type* p) {
    235     return
    236         ReadParam(m, iter, &p->url_hash) &&
    237         ReadParam(m, iter, &p->encrypted_data) &&
    238         ReadParam(m, iter, &p->date_created);
    239   }
    240 
    241   static void Log(const param_type& p, std::string* l) {
    242     l->append("(");
    243     LogParam(p.url_hash, l);
    244     l->append(", ");
    245     LogParam(p.encrypted_data, l);
    246     l->append(", ");
    247     LogParam(p.date_created, l);
    248     l->append(")");
    249   }
    250 };  // ParamTraits<importer::ImporterIE7PasswordInfo>
    251 #endif
    252 
    253 }  // namespace IPC
    254 
    255 #endif  // CHROME_COMMON_IMPORTER_PROFILE_IMPORT_PROCESS_MESSAGES_H_
    256 
    257 #define IPC_MESSAGE_START ProfileImportMsgStart
    258 
    259 //-----------------------------------------------------------------------------
    260 // ProfileImportProcess messages
    261 // These are messages sent from the browser to the profile import process.
    262 IPC_MESSAGE_CONTROL3(ProfileImportProcessMsg_StartImport,
    263                      importer::SourceProfile,
    264                      int                     /* Bitmask of items to import. */,
    265                      base::DictionaryValue   /* Localized strings. */)
    266 
    267 IPC_MESSAGE_CONTROL0(ProfileImportProcessMsg_CancelImport)
    268 
    269 IPC_MESSAGE_CONTROL1(ProfileImportProcessMsg_ReportImportItemFinished,
    270                      int  /* ImportItem */)
    271 
    272 //---------------------------------------------------------------------------
    273 // ProfileImportProcessHost messages
    274 // These are messages sent from the profile import process to the browser.
    275 // These messages send information about the status of the import and
    276 // individual import tasks.
    277 IPC_MESSAGE_CONTROL0(ProfileImportProcessHostMsg_Import_Started)
    278 
    279 IPC_MESSAGE_CONTROL2(ProfileImportProcessHostMsg_Import_Finished,
    280                      bool         /* was import successful? */,
    281                      std::string  /* error message, if any */)
    282 
    283 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_ImportItem_Started,
    284                      int  /* ImportItem */)
    285 
    286 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_ImportItem_Finished,
    287                      int  /* ImportItem */)
    288 
    289 // These messages send data from the external importer process back to
    290 // the process host so it can be written to the profile.
    291 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyHistoryImportStart,
    292                      int  /* total number of ImporterURLRow items */)
    293 
    294 IPC_MESSAGE_CONTROL2(ProfileImportProcessHostMsg_NotifyHistoryImportGroup,
    295                      std::vector<ImporterURLRow>,
    296                      int  /* the source of URLs as in history::VisitSource.*/
    297                           /* To simplify IPC call, pass as an integer */)
    298 
    299 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyHomePageImportReady,
    300                      GURL  /* GURL of home page */)
    301 
    302 IPC_MESSAGE_CONTROL2(ProfileImportProcessHostMsg_NotifyBookmarksImportStart,
    303                      base::string16  /* first folder name */,
    304                      int             /* total number of bookmarks */)
    305 
    306 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyBookmarksImportGroup,
    307                      std::vector<ImportedBookmarkEntry>)
    308 
    309 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyFaviconsImportStart,
    310                      int  /* total number of favicons */)
    311 
    312 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyFaviconsImportGroup,
    313                      std::vector<ImportedFaviconUsage>)
    314 
    315 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyPasswordFormReady,
    316                      autofill::PasswordForm)
    317 
    318 IPC_MESSAGE_CONTROL2(ProfileImportProcessHostMsg_NotifyKeywordsReady,
    319                      std::vector<importer::URLKeywordInfo>, // url_keywords
    320                      bool  /* unique on host and path */)
    321 
    322 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyFirefoxSearchEngData,
    323                      std::vector<std::string>) // search_engine_data
    324 
    325 #if defined(OS_WIN)
    326 IPC_MESSAGE_CONTROL1(ProfileImportProcessHostMsg_NotifyIE7PasswordInfo,
    327                      importer::ImporterIE7PasswordInfo) // password_info
    328 #endif
    329