Home | History | Annotate | Download | only in importer
      1 // Copyright (c) 2011 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_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
      6 #define CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
      7 #pragma once
      8 
      9 #include <string>
     10 #include <vector>
     11 
     12 #include "base/basictypes.h"
     13 #include "build/build_config.h"
     14 
     15 class DictionaryValue;
     16 class FilePath;
     17 class GURL;
     18 class TemplateURL;
     19 
     20 #if defined(OS_WIN)
     21 // Detects which version of Firefox is installed from registry. Returns its
     22 // major version, and drops the minor version. Returns 0 if failed. If there are
     23 // indicators of both Firefox 2 and Firefox 3 it is biased to return the biggest
     24 // version.
     25 int GetCurrentFirefoxMajorVersionFromRegistry();
     26 
     27 // Detects where Firefox lives. Returns an empty path if Firefox is not
     28 // installed.
     29 FilePath GetFirefoxInstallPathFromRegistry();
     30 #endif  // OS_WIN
     31 
     32 #if defined(OS_MACOSX)
     33 // Get the directory in which the Firefox .dylibs live, we need to load these
     34 // in order to decoded FF profile passwords.
     35 // The Path is usuall FF App Bundle/Contents/Mac OS/
     36 // Returns empty path on failure.
     37 FilePath GetFirefoxDylibPath();
     38 #endif  // OS_MACOSX
     39 
     40 // Returns the path to the Firefox profile.
     41 FilePath GetFirefoxProfilePath();
     42 
     43 // Detects version of Firefox and installation path for the given Firefox
     44 // profile.
     45 bool GetFirefoxVersionAndPathFromProfile(const FilePath& profile_path,
     46                                          int* version,
     47                                          FilePath* app_path);
     48 
     49 // Gets the full path of the profiles.ini file. This file records the profiles
     50 // that can be used by Firefox. Returns an empty path if failed.
     51 FilePath GetProfilesINI();
     52 
     53 // Parses the profile.ini file, and stores its information in |root|.
     54 // This file is a plain-text file. Key/value pairs are stored one per line, and
     55 // they are separated in different sections. For example:
     56 //   [General]
     57 //   StartWithLastProfile=1
     58 //
     59 //   [Profile0]
     60 //   Name=default
     61 //   IsRelative=1
     62 //   Path=Profiles/abcdefeg.default
     63 // We set "[value]" in path "<Section>.<Key>". For example, the path
     64 // "Genenral.StartWithLastProfile" has the value "1".
     65 void ParseProfileINI(const FilePath& file, DictionaryValue* root);
     66 
     67 // Returns true if we want to add the URL to the history. We filter out the URL
     68 // with a unsupported scheme.
     69 bool CanImportURL(const GURL& url);
     70 
     71 // Parses the OpenSearch XML files in |xml_files| and populates |search_engines|
     72 // with the resulting TemplateURLs.
     73 void ParseSearchEnginesFromXMLFiles(const std::vector<FilePath>& xml_files,
     74                                     std::vector<TemplateURL*>* search_engines);
     75 
     76 // Returns the index of the default search engine in the |search_engines| list.
     77 // If none is found, -1 is returned.
     78 int GetFirefoxDefaultSearchEngineIndex(
     79     const std::vector<TemplateURL*>& search_engines,
     80     const FilePath& profile_path);
     81 
     82 // Returns the home page set in Firefox in a particular profile.
     83 GURL GetHomepage(const FilePath& profile_path);
     84 
     85 // Checks to see if this home page is a default home page, as specified by
     86 // the resource file browserconfig.properties in the Firefox application
     87 // directory.
     88 bool IsDefaultHomepage(const GURL& homepage, const FilePath& app_path);
     89 
     90 // Parses the prefs found in the file |pref_file| and puts the key/value pairs
     91 // in |prefs|. Keys are strings, and values can be strings, booleans or
     92 // integers.  Returns true if it succeeded, false otherwise (in which case
     93 // |prefs| is not filled).
     94 // Note: for strings, only valid UTF-8 string values are supported. If a
     95 // key/pair is not valid UTF-8, it is ignored and will not appear in |prefs|.
     96 bool ParsePrefFile(const FilePath& pref_file, DictionaryValue* prefs);
     97 
     98 // Parses the value of a particular firefox preference from a string that is the
     99 // contents of the prefs file.
    100 std::string GetPrefsJsValue(const std::string& prefs,
    101                             const std::string& pref_key);
    102 
    103 #endif  // CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
    104