Commit 4a8af424 authored by jhawkins@chromium.org's avatar jhawkins@chromium.org

Make firefox_importer_utils.cc compile on Posix.

Review URL: http://codereview.chromium.org/27249

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10564 0039d316-1c4b-4281-b951-d872f2087c98
parent e2824413
...@@ -691,7 +691,6 @@ if not env.Bit('windows'): ...@@ -691,7 +691,6 @@ if not env.Bit('windows'):
# Otherwise shared link builds won't work on Linux. # Otherwise shared link builds won't work on Linux.
'importer/firefox2_importer.cc', 'importer/firefox2_importer.cc',
'importer/firefox3_importer.cc', 'importer/firefox3_importer.cc',
'importer/firefox_importer_utils.cc',
'importer/ie_importer.cc', 'importer/ie_importer.cc',
'importer/toolbar_importer.cc', 'importer/toolbar_importer.cc',
'jankometer.cc', 'jankometer.cc',
......
...@@ -5,23 +5,30 @@ ...@@ -5,23 +5,30 @@
#include "chrome/browser/importer/firefox_importer_utils.h" #include "chrome/browser/importer/firefox_importer_utils.h"
#include <algorithm> #include <algorithm>
#if defined(OS_WIN)
#include <shlobj.h> #include <shlobj.h>
#endif
#include "base/file_util.h" #include "base/file_util.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/registry.h"
#include "base/string_util.h" #include "base/string_util.h"
#include "base/sys_string_conversions.h" #include "base/sys_string_conversions.h"
#include "base/time.h" #include "base/time.h"
#include "chrome/browser/search_engines/template_url.h" #include "chrome/browser/search_engines/template_url.h"
#include "chrome/browser/search_engines/template_url_model.h" #include "chrome/browser/search_engines/template_url_model.h"
#include "chrome/browser/search_engines/template_url_parser.h" #include "chrome/browser/search_engines/template_url_parser.h"
#include "chrome/common/win_util.h"
#include "googleurl/src/gurl.h" #include "googleurl/src/gurl.h"
#include "net/base/base64.h" #include "net/base/base64.h"
#if defined(OS_WIN)
#include "base/registry.h"
#include "chrome/common/win_util.h"
#endif
namespace { namespace {
#if defined(OS_WIN)
// NOTE: Keep these in order since we need test all those paths according // NOTE: Keep these in order since we need test all those paths according
// to priority. For example. One machine has multiple users. One non-admin // to priority. For example. One machine has multiple users. One non-admin
// user installs Firefox 2, which causes there is a Firefox2 entry under HKCU. // user installs Firefox 2, which causes there is a Firefox2 entry under HKCU.
...@@ -32,6 +39,7 @@ static const HKEY kFireFoxRegistryPaths[] = { ...@@ -32,6 +39,7 @@ static const HKEY kFireFoxRegistryPaths[] = {
HKEY_CURRENT_USER, HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE HKEY_LOCAL_MACHINE
}; };
#endif
// FirefoxURLParameterFilter is used to remove parameter mentioning Firefox from // FirefoxURLParameterFilter is used to remove parameter mentioning Firefox from
// the search URL when importing search engines. // the search URL when importing search engines.
...@@ -44,8 +52,9 @@ class FirefoxURLParameterFilter : public TemplateURLParser::ParameterFilter { ...@@ -44,8 +52,9 @@ class FirefoxURLParameterFilter : public TemplateURLParser::ParameterFilter {
virtual bool KeepParameter(const std::string& key, virtual bool KeepParameter(const std::string& key,
const std::string& value) { const std::string& value) {
std::string low_value = StringToLowerASCII(value); std::string low_value = StringToLowerASCII(value);
if (low_value.find("mozilla") != -1 || low_value.find("firefox") != -1 || if (low_value.find("mozilla") != std::string::npos ||
low_value.find("moz:") != -1 ) low_value.find("firefox") != std::string::npos ||
low_value.find("moz:") != std::string::npos )
return false; return false;
return true; return true;
} }
...@@ -54,6 +63,7 @@ class FirefoxURLParameterFilter : public TemplateURLParser::ParameterFilter { ...@@ -54,6 +63,7 @@ class FirefoxURLParameterFilter : public TemplateURLParser::ParameterFilter {
DISALLOW_EVIL_CONSTRUCTORS(FirefoxURLParameterFilter); DISALLOW_EVIL_CONSTRUCTORS(FirefoxURLParameterFilter);
}; };
#if defined(OS_WIN)
typedef BOOL (WINAPI* SetDllDirectoryFunc)(LPCTSTR lpPathName); typedef BOOL (WINAPI* SetDllDirectoryFunc)(LPCTSTR lpPathName);
// A helper class whose destructor calls SetDllDirectory(NULL) to undo the // A helper class whose destructor calls SetDllDirectory(NULL) to undo the
...@@ -73,10 +83,12 @@ class SetDllDirectoryCaller { ...@@ -73,10 +83,12 @@ class SetDllDirectoryCaller {
private: private:
SetDllDirectoryFunc func_; SetDllDirectoryFunc func_;
}; };
#endif
} // namespace } // namespace
int GetCurrentFirefoxMajorVersion() { int GetCurrentFirefoxMajorVersion() {
#if defined(OS_WIN)
TCHAR ver_buffer[128]; TCHAR ver_buffer[128];
DWORD ver_buffer_length = sizeof(ver_buffer); DWORD ver_buffer_length = sizeof(ver_buffer);
int highest_version = 0; int highest_version = 0;
...@@ -92,8 +104,14 @@ int GetCurrentFirefoxMajorVersion() { ...@@ -92,8 +104,14 @@ int GetCurrentFirefoxMajorVersion() {
highest_version = std::max(highest_version, _wtoi(ver_buffer)); highest_version = std::max(highest_version, _wtoi(ver_buffer));
} }
return highest_version; return highest_version;
#else
// TODO(port): Read in firefox configuration.
NOTIMPLEMENTED();
return 0;
#endif
} }
#if defined(OS_WIN)
std::wstring GetProfilesINI() { std::wstring GetProfilesINI() {
// The default location of the profile folder containing user data is // The default location of the profile folder containing user data is
// under the "Application Data" folder in Windows XP. // under the "Application Data" folder in Windows XP.
...@@ -110,25 +128,6 @@ std::wstring GetProfilesINI() { ...@@ -110,25 +128,6 @@ std::wstring GetProfilesINI() {
return ini_file; return ini_file;
} }
std::wstring GetFirefoxInstallPath() {
// Detects the path that Firefox is installed in.
std::wstring registry_path = L"Software\\Mozilla\\Mozilla Firefox";
TCHAR buffer[MAX_PATH];
DWORD buffer_length = sizeof(buffer);
bool result;
result = ReadFromRegistry(HKEY_LOCAL_MACHINE, registry_path.c_str(),
L"CurrentVersion", buffer, &buffer_length);
if (!result)
return std::wstring();
registry_path += L"\\" + std::wstring(buffer) + L"\\Main";
buffer_length = sizeof(buffer);
result = ReadFromRegistry(HKEY_LOCAL_MACHINE, registry_path.c_str(),
L"Install Directory", buffer, &buffer_length);
if (!result)
return std::wstring();
return buffer;
}
void ParseProfileINI(std::wstring file, DictionaryValue* root) { void ParseProfileINI(std::wstring file, DictionaryValue* root) {
// Reads the whole INI file. // Reads the whole INI file.
std::string content; std::string content;
...@@ -172,6 +171,32 @@ void ParseProfileINI(std::wstring file, DictionaryValue* root) { ...@@ -172,6 +171,32 @@ void ParseProfileINI(std::wstring file, DictionaryValue* root) {
} }
} }
} }
#endif
std::wstring GetFirefoxInstallPath() {
#if defined(OS_WIN)
// Detects the path that Firefox is installed in.
std::wstring registry_path = L"Software\\Mozilla\\Mozilla Firefox";
TCHAR buffer[MAX_PATH];
DWORD buffer_length = sizeof(buffer);
bool result;
result = ReadFromRegistry(HKEY_LOCAL_MACHINE, registry_path.c_str(),
L"CurrentVersion", buffer, &buffer_length);
if (!result)
return std::wstring();
registry_path += L"\\" + std::wstring(buffer) + L"\\Main";
buffer_length = sizeof(buffer);
result = ReadFromRegistry(HKEY_LOCAL_MACHINE, registry_path.c_str(),
L"Install Directory", buffer, &buffer_length);
if (!result)
return std::wstring();
return buffer;
#else
// TODO(port): Load firefox configuration.
NOTIMPLEMENTED();
return std::wstring();
#endif
}
bool CanImportURL(const GURL& url) { bool CanImportURL(const GURL& url) {
const char* kInvalidSchemes[] = {"wyciwyg", "place", "about", "chrome"}; const char* kInvalidSchemes[] = {"wyciwyg", "place", "about", "chrome"};
...@@ -181,7 +206,7 @@ bool CanImportURL(const GURL& url) { ...@@ -181,7 +206,7 @@ bool CanImportURL(const GURL& url) {
return false; return false;
// Filter out the URLs with unsupported schemes. // Filter out the URLs with unsupported schemes.
for (int i = 0; i < arraysize(kInvalidSchemes); ++i) { for (size_t i = 0; i < arraysize(kInvalidSchemes); ++i) {
if (url.SchemeIs(kInvalidSchemes[i])) if (url.SchemeIs(kInvalidSchemes[i]))
return false; return false;
} }
...@@ -219,8 +244,8 @@ void ParseSearchEnginesFromXMLFiles(const std::vector<std::wstring>& xml_files, ...@@ -219,8 +244,8 @@ void ParseSearchEnginesFromXMLFiles(const std::vector<std::wstring>& xml_files,
search_engine_for_url.erase(iter); search_engine_for_url.erase(iter);
} }
// Give this a keyword to facilitate tab-to-search, if possible. // Give this a keyword to facilitate tab-to-search, if possible.
template_url->set_keyword(TemplateURLModel::GenerateKeyword(GURL(url), template_url->set_keyword(
false)); TemplateURLModel::GenerateKeyword(GURL(WideToUTF8(url)), false));
template_url->set_show_in_default_list(true); template_url->set_show_in_default_list(true);
search_engine_for_url[url] = template_url; search_engine_for_url[url] = template_url;
if (!default_turl) if (!default_turl)
...@@ -270,15 +295,16 @@ std::string ReadBrowserConfigProp(const std::wstring& app_path, ...@@ -270,15 +295,16 @@ std::string ReadBrowserConfigProp(const std::wstring& app_path,
// This file has the syntax: key=value. // This file has the syntax: key=value.
size_t prop_index = content.find(pref_key + "="); size_t prop_index = content.find(pref_key + "=");
if (prop_index == -1) if (prop_index == std::string::npos)
return ""; return "";
size_t start = prop_index + pref_key.length(); size_t start = prop_index + pref_key.length();
size_t stop = -1; size_t stop = std::string::npos;
if (start != -1) if (start != std::string::npos)
stop = content.find("\n", start + 1); stop = content.find("\n", start + 1);
if (start == -1 || stop == -1 || (start == stop)) { if (start == std::string::npos ||
stop == std::string::npos || (start == stop)) {
NOTREACHED() << "Firefox property " << pref_key << " could not be parsed."; NOTREACHED() << "Firefox property " << pref_key << " could not be parsed.";
return ""; return "";
} }
...@@ -296,15 +322,15 @@ std::string ReadPrefsJsValue(const std::wstring& profile_path, ...@@ -296,15 +322,15 @@ std::string ReadPrefsJsValue(const std::wstring& profile_path,
std::string search_for = std::string("user_pref(\"") + pref_key + std::string search_for = std::string("user_pref(\"") + pref_key +
std::string("\", "); std::string("\", ");
size_t prop_index = content.find(search_for); size_t prop_index = content.find(search_for);
if (prop_index == -1) if (prop_index == std::string::npos)
return ""; return "";
size_t start = prop_index + search_for.length(); size_t start = prop_index + search_for.length();
size_t stop = -1; size_t stop = std::string::npos;
if (start != -1) if (start != std::string::npos)
stop = content.find(")", start + 1); stop = content.find(")", start + 1);
if (start == -1 || stop == -1) { if (start == std::string::npos || stop == std::string::npos) {
NOTREACHED() << "Firefox property " << pref_key << " could not be parsed."; NOTREACHED() << "Firefox property " << pref_key << " could not be parsed.";
return ""; return "";
} }
...@@ -402,7 +428,9 @@ NSSDecryptor::NSSDecryptor() ...@@ -402,7 +428,9 @@ NSSDecryptor::NSSDecryptor()
PK11_CheckUserPassword(NULL), PK11_FreeSlot(NULL), PK11_CheckUserPassword(NULL), PK11_FreeSlot(NULL),
PK11_Authenticate(NULL), PK11SDR_Decrypt(NULL), SECITEM_FreeItem(NULL), PK11_Authenticate(NULL), PK11SDR_Decrypt(NULL), SECITEM_FreeItem(NULL),
PL_ArenaFinish(NULL), PR_Cleanup(NULL), PL_ArenaFinish(NULL), PR_Cleanup(NULL),
#if defined(OS_WIN)
nss3_dll_(NULL), softokn3_dll_(NULL), nss3_dll_(NULL), softokn3_dll_(NULL),
#endif
is_nss_initialized_(false) { is_nss_initialized_(false) {
} }
...@@ -412,6 +440,7 @@ NSSDecryptor::~NSSDecryptor() { ...@@ -412,6 +440,7 @@ NSSDecryptor::~NSSDecryptor() {
bool NSSDecryptor::Init(const std::wstring& dll_path, bool NSSDecryptor::Init(const std::wstring& dll_path,
const std::wstring& db_path) { const std::wstring& db_path) {
#if defined(OS_WIN)
// We call SetDllDirectory to work around a Purify bug (GetModuleHandle // We call SetDllDirectory to work around a Purify bug (GetModuleHandle
// fails inside Purify under certain conditions). SetDllDirectory only // fails inside Purify under certain conditions). SetDllDirectory only
// exists on Windows XP SP1 or later, so we look up its address at run time. // exists on Windows XP SP1 or later, so we look up its address at run time.
...@@ -501,6 +530,11 @@ bool NSSDecryptor::Init(const std::wstring& dll_path, ...@@ -501,6 +530,11 @@ bool NSSDecryptor::Init(const std::wstring& dll_path,
is_nss_initialized_ = true; is_nss_initialized_ = true;
return true; return true;
#else
// TODO(port): Load NSS.
NOTIMPLEMENTED();
return false;
#endif
} }
void NSSDecryptor::Free() { void NSSDecryptor::Free() {
...@@ -510,12 +544,14 @@ void NSSDecryptor::Free() { ...@@ -510,12 +544,14 @@ void NSSDecryptor::Free() {
PR_Cleanup(); PR_Cleanup();
is_nss_initialized_ = false; is_nss_initialized_ = false;
} }
#if defined(OS_WIN)
if (softokn3_dll_ != NULL) if (softokn3_dll_ != NULL)
FreeLibrary(softokn3_dll_); FreeLibrary(softokn3_dll_);
softokn3_dll_ = NULL; softokn3_dll_ = NULL;
if (nss3_dll_ != NULL) if (nss3_dll_ != NULL)
FreeLibrary(nss3_dll_); FreeLibrary(nss3_dll_);
nss3_dll_ = NULL; nss3_dll_ = NULL;
#endif
NSS_Init = NULL; NSS_Init = NULL;
NSS_Shutdown = NULL; NSS_Shutdown = NULL;
PK11_GetInternalKeySlot = NULL; PK11_GetInternalKeySlot = NULL;
...@@ -568,9 +604,15 @@ void NSSDecryptor::Free() { ...@@ -568,9 +604,15 @@ void NSSDecryptor::Free() {
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
std::wstring NSSDecryptor::Decrypt(const std::string& crypt) const { std::wstring NSSDecryptor::Decrypt(const std::string& crypt) const {
#if defined(OS_WIN_)
// Do nothing if NSS is not loaded. // Do nothing if NSS is not loaded.
if (!nss3_dll_) if (!nss3_dll_)
return std::wstring(); return std::wstring();
#else
// TODO(port): Load nss3.
NOTIMPLEMENTED();
return std::wstring();
#endif
std::string plain; std::string plain;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#ifndef CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_ #ifndef CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
#define CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_ #define CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
#include "base/basictypes.h"
#include "base/values.h" #include "base/values.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "webkit/glue/password_form.h" #include "webkit/glue/password_form.h"
...@@ -18,15 +19,12 @@ class TemplateURL; ...@@ -18,15 +19,12 @@ class TemplateURL;
// biased to return the biggest version. // biased to return the biggest version.
int GetCurrentFirefoxMajorVersion(); int GetCurrentFirefoxMajorVersion();
#if defined(OS_WIN)
// Gets the full path of the profiles.ini file. This file records // Gets the full path of the profiles.ini file. This file records
// the profiles that can be used by Firefox. Returns an empty // the profiles that can be used by Firefox. Returns an empty
// string if failed. // string if failed.
std::wstring GetProfilesINI(); std::wstring GetProfilesINI();
// Detects where Firefox lives. Returns a empty string if Firefox
// is not installed.
std::wstring GetFirefoxInstallPath();
// Parses the profile.ini file, and stores its information in |root|. // Parses the profile.ini file, and stores its information in |root|.
// This file is a plain-text file. Key/value pairs are stored one per // This file is a plain-text file. Key/value pairs are stored one per
// line, and they are separeated in different sections. For example: // line, and they are separeated in different sections. For example:
...@@ -40,6 +38,11 @@ std::wstring GetFirefoxInstallPath(); ...@@ -40,6 +38,11 @@ std::wstring GetFirefoxInstallPath();
// We set "[value]" in path "<Section>.<Key>". For example, the path // We set "[value]" in path "<Section>.<Key>". For example, the path
// "Genenral.StartWithLastProfile" has the value "1". // "Genenral.StartWithLastProfile" has the value "1".
void ParseProfileINI(std::wstring file, DictionaryValue* root); void ParseProfileINI(std::wstring file, DictionaryValue* root);
#endif
// Detects where Firefox lives. Returns a empty string if Firefox
// is not installed.
std::wstring GetFirefoxInstallPath();
// Returns true if we want to add the URL to the history. We filter // Returns true if we want to add the URL to the history. We filter
// out the URL with a unsupported scheme. // out the URL with a unsupported scheme.
......
...@@ -647,9 +647,14 @@ void ImporterHost::DetectFirefoxProfiles() { ...@@ -647,9 +647,14 @@ void ImporterHost::DetectFirefoxProfiles() {
return; return;
} }
std::wstring ini_file = GetProfilesINI();
DictionaryValue root; DictionaryValue root;
#if defined(OS_WIN)
std::wstring ini_file = GetProfilesINI();
ParseProfileINI(ini_file, &root); ParseProfileINI(ini_file, &root);
#else
// TODO(port): Do we need to concern ourselves with profiles on posix?
NOTIMPLEMENTED();
#endif
std::wstring source_path; std::wstring source_path;
for (int i = 0; ; ++i) { for (int i = 0; ; ++i) {
...@@ -664,6 +669,7 @@ void ImporterHost::DetectFirefoxProfiles() { ...@@ -664,6 +669,7 @@ void ImporterHost::DetectFirefoxProfiles() {
root.GetString(current_profile + L".Path", &path)) { root.GetString(current_profile + L".Path", &path)) {
ReplaceSubstringsAfterOffset(&path, 0, L"/", L"\\"); ReplaceSubstringsAfterOffset(&path, 0, L"/", L"\\");
#if defined(OS_WIN)
// IsRelative=1 means the folder path would be relative to the // IsRelative=1 means the folder path would be relative to the
// path of profiles.ini. IsRelative=0 refers to a custom profile // path of profiles.ini. IsRelative=0 refers to a custom profile
// location. // location.
...@@ -673,6 +679,7 @@ void ImporterHost::DetectFirefoxProfiles() { ...@@ -673,6 +679,7 @@ void ImporterHost::DetectFirefoxProfiles() {
} else { } else {
profile_path = path; profile_path = path;
} }
#endif
// We only import the default profile when multiple profiles exist, // We only import the default profile when multiple profiles exist,
// since the other profiles are used mostly by developers for testing. // since the other profiles are used mostly by developers for testing.
......
...@@ -1168,7 +1168,6 @@ ...@@ -1168,7 +1168,6 @@
'browser/debugger/debugger_window.cc', 'browser/debugger/debugger_window.cc',
'browser/importer/firefox2_importer.cc', 'browser/importer/firefox2_importer.cc',
'browser/importer/firefox3_importer.cc', 'browser/importer/firefox3_importer.cc',
'browser/importer/firefox_importer_utils.cc',
'browser/importer/ie_importer.cc', 'browser/importer/ie_importer.cc',
'browser/tab_contents/native_ui_contents.cc', 'browser/tab_contents/native_ui_contents.cc',
'browser/tab_contents/render_view_context_menu_controller.cc', 'browser/tab_contents/render_view_context_menu_controller.cc',
......
...@@ -270,6 +270,7 @@ ...@@ -270,6 +270,7 @@
71784BA931A610A94A7FEDC9 /* history_querying_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D7BF9F50E9D48F7009A6919 /* history_querying_unittest.cc */; }; 71784BA931A610A94A7FEDC9 /* history_querying_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D7BF9F50E9D48F7009A6919 /* history_querying_unittest.cc */; };
7442556F908264C52BEBFE4D /* starred_url_database_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D7BFA090E9D48F7009A6919 /* starred_url_database_unittest.cc */; }; 7442556F908264C52BEBFE4D /* starred_url_database_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D7BFA090E9D48F7009A6919 /* starred_url_database_unittest.cc */; };
7988AD180F4E5C710003C5CF /* child_process_info.cc in Sources */ = {isa = PBXBuildFile; fileRef = BA9BC2620F44DCBE00588450 /* child_process_info.cc */; }; 7988AD180F4E5C710003C5CF /* child_process_info.cc in Sources */ = {isa = PBXBuildFile; fileRef = BA9BC2620F44DCBE00588450 /* child_process_info.cc */; };
7A25BF747B2F2CC2115A2818 /* firefox_importer_utils.cc in Sources */ = {isa = PBXBuildFile; fileRef = E7A3400C283C5FA030AD4BF2 /* firefox_importer_utils.cc */; };
7D296C6300A94C463E1E7BC7 /* interstitial_page.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6CCB9D10F1EC32700106F0D /* interstitial_page.cc */; }; 7D296C6300A94C463E1E7BC7 /* interstitial_page.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6CCB9D10F1EC32700106F0D /* interstitial_page.cc */; };
7D7BF08CA9978F8782A1E82D /* browser_shutdown.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D7BF8460E9D4839009A6919 /* browser_shutdown.cc */; }; 7D7BF08CA9978F8782A1E82D /* browser_shutdown.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D7BF8460E9D4839009A6919 /* browser_shutdown.cc */; };
7F84A3FF0F6102F46E0E5155 /* history_publisher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 269003C4E493789D82B6B0F9 /* history_publisher.cc */; }; 7F84A3FF0F6102F46E0E5155 /* history_publisher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 269003C4E493789D82B6B0F9 /* history_publisher.cc */; };
...@@ -2947,6 +2948,7 @@ ...@@ -2947,6 +2948,7 @@
E4F324420EE5CE94002533CE /* extension_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extension_unittest.cc; sourceTree = "<group>"; }; E4F324420EE5CE94002533CE /* extension_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extension_unittest.cc; sourceTree = "<group>"; };
E4F324780EE5D17E002533CE /* referrer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = referrer.h; sourceTree = "<group>"; }; E4F324780EE5D17E002533CE /* referrer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = referrer.h; sourceTree = "<group>"; };
E4F324790EE5D17E002533CE /* referrer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = referrer.cc; sourceTree = "<group>"; }; E4F324790EE5D17E002533CE /* referrer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = referrer.cc; sourceTree = "<group>"; };
E7A3400C283C5FA030AD4BF2 /* firefox_importer_utils.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = firefox_importer_utils.cc; path = browser/importer/firefox_importer_utils.cc; sourceTree = SOURCE_ROOT; };
E7FDE61828F151056D975855 /* bookmark_drag_data.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bookmark_drag_data.cc; path = browser/bookmarks/bookmark_drag_data.cc; sourceTree = SOURCE_ROOT; }; E7FDE61828F151056D975855 /* bookmark_drag_data.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bookmark_drag_data.cc; path = browser/bookmarks/bookmark_drag_data.cc; sourceTree = SOURCE_ROOT; };
E81681ADC802675FE949BC63 /* child_thread.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = child_thread.cc; sourceTree = "<group>"; }; E81681ADC802675FE949BC63 /* child_thread.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = child_thread.cc; sourceTree = "<group>"; };
EA72C084DB3FC0FC595E525E /* template_url_model.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = template_url_model.cc; sourceTree = "<group>"; }; EA72C084DB3FC0FC595E525E /* template_url_model.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = template_url_model.cc; sourceTree = "<group>"; };
...@@ -3358,6 +3360,7 @@ ...@@ -3358,6 +3360,7 @@
12F137DA942221A44BFA0967 /* bookmark_drop_info.cc */, 12F137DA942221A44BFA0967 /* bookmark_drop_info.cc */,
90BF0D1189BB7158BD7F1600 /* bookmark_context_menu.cc */, 90BF0D1189BB7158BD7F1600 /* bookmark_context_menu.cc */,
D224399513442348FF231FCB /* importer.cc */, D224399513442348FF231FCB /* importer.cc */,
E7A3400C283C5FA030AD4BF2 /* firefox_importer_utils.cc */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
...@@ -5775,6 +5778,7 @@ ...@@ -5775,6 +5778,7 @@
9E85B39CA40439D93CE52E60 /* fav_icon_helper.cc in Sources */, 9E85B39CA40439D93CE52E60 /* fav_icon_helper.cc in Sources */,
E45075C10F1506F2003BE099 /* firefox2_importer.cc in Sources */, E45075C10F1506F2003BE099 /* firefox2_importer.cc in Sources */,
E45075C40F150701003BE099 /* firefox3_importer.cc in Sources */, E45075C40F150701003BE099 /* firefox3_importer.cc in Sources */,
7A25BF747B2F2CC2115A2818 /* firefox_importer_utils.cc in Sources */,
E45075C60F15070D003BE099 /* firefox_profile_lock.cc in Sources */, E45075C60F15070D003BE099 /* firefox_profile_lock.cc in Sources */,
85C8A66BBC97243AF1C11166 /* gears_integration.cc in Sources */, 85C8A66BBC97243AF1C11166 /* gears_integration.cc in Sources */,
4D7BF9990E9D486B009A6919 /* google_url_tracker.cc in Sources */, 4D7BF9990E9D486B009A6919 /* google_url_tracker.cc in Sources */,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment