summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2013-05-15 11:34:50 +0100
committerTorne (Richard Coles) <torne@google.com>2013-05-15 11:34:50 +0100
commita93a17c8d99d686bd4a1511e5504e5e6cc9fcadf (patch)
tree2fc96923f36ddec68fee218d79dd407c28fa46f8 /components
parent770489ea635fbf896c1ace4db0d08d6981a2db8b (diff)
downloadchromium_org-a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf.tar.gz
Merge from Chromium at DEPS revision r200144
This commit was generated by merge_to_master.py. Change-Id: I85f3a249ae157fd8253431215fb2dfcd12ee9bf3
Diffstat (limited to 'components')
-rw-r--r--components/autofill.gypi11
-rw-r--r--components/autofill/browser/autocomplete_history_manager_unittest.cc5
-rw-r--r--components/autofill/browser/autofill_country.cc2
-rw-r--r--components/autofill/browser/autofill_data_model.cc2
-rw-r--r--components/autofill/browser/autofill_external_delegate.cc3
-rw-r--r--components/autofill/browser/autofill_manager.cc35
-rw-r--r--components/autofill/browser/autofill_manager.h23
-rw-r--r--components/autofill/browser/autofill_manager_unittest.cc2
-rw-r--r--components/autofill/browser/autofill_profile.cc2
-rw-r--r--components/autofill/browser/autofill_profile_unittest.cc49
-rw-r--r--components/autofill/browser/credit_card.cc171
-rw-r--r--components/autofill/browser/credit_card.h3
-rw-r--r--components/autofill/browser/personal_data_manager_mac.mm2
-rw-r--r--components/autofill/browser/wallet/encryption_escrow_client.cc4
-rw-r--r--components/autofill/browser/wallet/encryption_escrow_client.h2
-rw-r--r--components/autofill/browser/wallet/full_wallet.cc30
-rw-r--r--components/autofill/browser/wallet/full_wallet.h1
-rw-r--r--components/autofill/browser/wallet/full_wallet_unittest.cc26
-rw-r--r--components/autofill/browser/wallet/wallet_client.cc9
-rw-r--r--components/autofill/browser/wallet/wallet_client.h6
-rw-r--r--components/autofill/browser/wallet/wallet_client_unittest.cc6
-rw-r--r--components/autofill/browser/wallet/wallet_items.cc2
-rw-r--r--components/autofill/browser/webdata/autofill_webdata_backend.h126
-rw-r--r--components/autofill/browser/webdata/autofill_webdata_backend_impl.cc (renamed from components/autofill/browser/webdata/autofill_webdata_backend.cc)70
-rw-r--r--components/autofill/browser/webdata/autofill_webdata_backend_impl.h151
-rw-r--r--components/autofill/browser/webdata/autofill_webdata_service.cc56
-rw-r--r--components/autofill/browser/webdata/autofill_webdata_service.h14
-rw-r--r--components/autofill/renderer/autofill_agent.cc3
-rw-r--r--components/autofill/renderer/form_cache.cc2
-rw-r--r--components/autofill_browser.target.darwin-arm.mk8
-rw-r--r--components/autofill_browser.target.darwin-x86.mk8
-rw-r--r--components/autofill_browser.target.linux-arm.mk8
-rw-r--r--components/autofill_browser.target.linux-x86.mk8
-rw-r--r--components/autofill_common.target.darwin-arm.mk2
-rw-r--r--components/autofill_common.target.darwin-x86.mk2
-rw-r--r--components/autofill_common.target.linux-arm.mk2
-rw-r--r--components/autofill_common.target.linux-x86.mk2
-rw-r--r--components/component_resources.grd212
-rw-r--r--components/component_resources.gyp30
-rw-r--r--components/component_resources.target.darwin-arm.mk158
-rw-r--r--components/component_resources.target.darwin-x86.mk158
-rw-r--r--components/component_resources.target.linux-arm.mk158
-rw-r--r--components/component_resources.target.linux-x86.mk158
-rw-r--r--components/tracing/child_trace_message_filter.cc6
-rw-r--r--components/tracing/child_trace_message_filter.h4
-rw-r--r--components/visitedlink_renderer.target.darwin-arm.mk2
-rw-r--r--components/visitedlink_renderer.target.darwin-x86.mk2
-rw-r--r--components/visitedlink_renderer.target.linux-arm.mk2
-rw-r--r--components/visitedlink_renderer.target.linux-x86.mk2
-rw-r--r--components/web_contents_delegate_android.target.darwin-arm.mk2
-rw-r--r--components/web_contents_delegate_android.target.darwin-x86.mk2
-rw-r--r--components/web_contents_delegate_android.target.linux-arm.mk2
-rw-r--r--components/web_contents_delegate_android.target.linux-x86.mk2
-rw-r--r--components/webdata/common/web_data_service_backend.cc27
-rw-r--r--components/webdata/common/web_data_service_backend.h24
-rw-r--r--components/webdata/common/web_database_service.cc4
-rw-r--r--components/webdata/common/web_database_service.h5
57 files changed, 1461 insertions, 357 deletions
diff --git a/components/autofill.gypi b/components/autofill.gypi
index b1faf29d23..ece3a68e19 100644
--- a/components/autofill.gypi
+++ b/components/autofill.gypi
@@ -123,9 +123,7 @@
'../ui/ui.gyp:ui',
'../webkit/support/webkit_support.gyp:webkit_resources',
- # For grip/generated_resources.h and grit/chromium_strings.h
- # TODO(kaiwang): Remove this dependency on chrome.
- '../chrome/chrome_resources.gyp:chrome_strings',
+ 'component_resources.gyp:component_resources',
],
'sources': [
'autofill/browser/address.cc',
@@ -243,8 +241,9 @@
'autofill/browser/webdata/autofill_table.cc',
'autofill/browser/webdata/autofill_table.h',
'autofill/browser/webdata/autofill_webdata.h',
- 'autofill/browser/webdata/autofill_webdata_backend.cc',
'autofill/browser/webdata/autofill_webdata_backend.h',
+ 'autofill/browser/webdata/autofill_webdata_backend_impl.cc',
+ 'autofill/browser/webdata/autofill_webdata_backend_impl.h',
'autofill/browser/webdata/autofill_webdata_service.cc',
'autofill/browser/webdata/autofill_webdata_service.h',
'autofill/browser/webdata/autofill_webdata_service_observer.h',
@@ -271,9 +270,7 @@
'../ipc/ipc.gyp:ipc',
'../skia/skia.gyp:skia',
- # For grip/generated_resources.h and grit/chromium_strings.h
- # TODO(kaiwang): Remove this dependency on chrome.
- '../chrome/chrome_resources.gyp:chrome_strings',
+ 'component_resources.gyp:component_resources',
],
'sources': [
'autofill/renderer/autofill_agent.cc',
diff --git a/components/autofill/browser/autocomplete_history_manager_unittest.cc b/components/autofill/browser/autocomplete_history_manager_unittest.cc
index eb7eb16a71..6eaf07dbba 100644
--- a/components/autofill/browser/autocomplete_history_manager_unittest.cc
+++ b/components/autofill/browser/autocomplete_history_manager_unittest.cc
@@ -255,7 +255,10 @@ TEST_F(AutocompleteHistoryManagerTest, ExternalDelegate) {
web_contents());
AutofillManager::CreateForWebContentsAndDelegate(
- web_contents(), &manager_delegate, "en-US");
+ web_contents(),
+ &manager_delegate,
+ "en-US",
+ AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER);
MockAutofillExternalDelegate external_delegate(web_contents());
autocomplete_history_manager.SetExternalDelegate(&external_delegate);
diff --git a/components/autofill/browser/autofill_country.cc b/components/autofill/browser/autofill_country.cc
index bae6541bd5..ed4223126c 100644
--- a/components/autofill/browser/autofill_country.cc
+++ b/components/autofill/browser/autofill_country.cc
@@ -15,7 +15,7 @@
#include "base/stl_util.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "third_party/icu/public/common/unicode/locid.h"
#include "third_party/icu/public/common/unicode/uloc.h"
#include "third_party/icu/public/common/unicode/unistr.h"
diff --git a/components/autofill/browser/autofill_data_model.cc b/components/autofill/browser/autofill_data_model.cc
index 04cd75c79e..01c54553ad 100644
--- a/components/autofill/browser/autofill_data_model.cc
+++ b/components/autofill/browser/autofill_data_model.cc
@@ -15,7 +15,7 @@
#include "components/autofill/browser/validation.h"
#include "components/autofill/common/form_field_data.h"
#include "googleurl/src/gurl.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "ui/base/l10n/l10n_util.h"
namespace autofill {
diff --git a/components/autofill/browser/autofill_external_delegate.cc b/components/autofill/browser/autofill_external_delegate.cc
index 7034a89471..0286b4bff1 100644
--- a/components/autofill/browser/autofill_external_delegate.cc
+++ b/components/autofill/browser/autofill_external_delegate.cc
@@ -13,8 +13,7 @@
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebAutofillClient.h"
#include "ui/base/l10n/l10n_util.h"
diff --git a/components/autofill/browser/autofill_manager.cc b/components/autofill/browser/autofill_manager.cc
index 406daf7d70..b488ff611d 100644
--- a/components/autofill/browser/autofill_manager.cc
+++ b/components/autofill/browser/autofill_manager.cc
@@ -51,7 +51,7 @@
#include "content/public/browser/web_contents_view.h"
#include "content/public/common/url_constants.h"
#include "googleurl/src/gurl.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "ipc/ipc_message_macros.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebAutofillClient.h"
#include "ui/base/l10n/l10n_util.h"
@@ -175,12 +175,15 @@ void DeterminePossibleFieldTypesForUpload(
void AutofillManager::CreateForWebContentsAndDelegate(
content::WebContents* contents,
autofill::AutofillManagerDelegate* delegate,
- const std::string& app_locale) {
+ const std::string& app_locale,
+ AutofillDownloadManagerState enable_download_manager) {
if (FromWebContents(contents))
return;
- contents->SetUserData(kAutofillManagerWebContentsUserDataKey,
- new AutofillManager(contents, delegate, app_locale));
+ contents->SetUserData(
+ kAutofillManagerWebContentsUserDataKey,
+ new AutofillManager(
+ contents, delegate, app_locale, enable_download_manager));
// Trigger the lazy creation of AutocheckoutWhitelistManagerService, and
// schedule a fetch of the Autocheckout whitelist file if it's not already
@@ -196,15 +199,15 @@ AutofillManager* AutofillManager::FromWebContents(
contents->GetUserData(kAutofillManagerWebContentsUserDataKey));
}
-AutofillManager::AutofillManager(content::WebContents* web_contents,
- autofill::AutofillManagerDelegate* delegate,
- const std::string& app_locale)
+AutofillManager::AutofillManager(
+ content::WebContents* web_contents,
+ autofill::AutofillManagerDelegate* delegate,
+ const std::string& app_locale,
+ AutofillDownloadManagerState enable_download_manager)
: content::WebContentsObserver(web_contents),
manager_delegate_(delegate),
app_locale_(app_locale),
personal_data_(delegate->GetPersonalDataManager()),
- download_manager_(web_contents->GetBrowserContext(), this),
- disable_download_manager_requests_(false),
autocomplete_history_manager_(web_contents),
autocheckout_manager_(this),
metric_logger_(new AutofillMetrics),
@@ -217,6 +220,10 @@ AutofillManager::AutofillManager(content::WebContents* web_contents,
external_delegate_(NULL),
test_delegate_(NULL),
weak_ptr_factory_(this) {
+ if (enable_download_manager == ENABLE_AUTOFILL_DOWNLOAD_MANAGER) {
+ download_manager_.reset(
+ new AutofillDownloadManager(web_contents->GetBrowserContext(), this));
+ }
}
AutofillManager::~AutofillManager() {}
@@ -917,7 +924,7 @@ void AutofillManager::UploadFormDataAsyncCallback(
}
void AutofillManager::UploadFormData(const FormStructure& submitted_form) {
- if (disable_download_manager_requests_)
+ if (!download_manager_)
return;
// Check if the form is among the forms that were recently auto-filled.
@@ -934,7 +941,7 @@ void AutofillManager::UploadFormData(const FormStructure& submitted_form) {
FieldTypeSet non_empty_types;
personal_data_->GetNonEmptyTypes(&non_empty_types);
- download_manager_.StartUploadRequest(submitted_form, was_autofilled,
+ download_manager_->StartUploadRequest(submitted_form, was_autofilled,
non_empty_types);
}
@@ -960,8 +967,6 @@ AutofillManager::AutofillManager(content::WebContents* web_contents,
manager_delegate_(delegate),
app_locale_("en-US"),
personal_data_(personal_data),
- download_manager_(web_contents->GetBrowserContext(), this),
- disable_download_manager_requests_(true),
autocomplete_history_manager_(web_contents),
autocheckout_manager_(this),
metric_logger_(new AutofillMetrics),
@@ -1210,9 +1215,9 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
// terminate Autocheckout and send Autocheckout status.
autocheckout_manager_.OnLoadedPageMetaData(
scoped_ptr<autofill::AutocheckoutPageMetaData>(NULL));
- } else if (!disable_download_manager_requests_) {
+ } else if (download_manager_) {
// Query the server if we have at least one of the forms were parsed.
- download_manager_.StartQueryRequest(form_structures_.get(),
+ download_manager_->StartQueryRequest(form_structures_.get(),
*metric_logger_);
}
diff --git a/components/autofill/browser/autofill_manager.h b/components/autofill/browser/autofill_manager.h
index 5a2b083193..9233659024 100644
--- a/components/autofill/browser/autofill_manager.h
+++ b/components/autofill/browser/autofill_manager.h
@@ -59,6 +59,7 @@ class PrefRegistrySyncable;
namespace autofill {
class AutofillDataModel;
+class AutofillDownloadManager;
class AutofillExternalDelegate;
class AutofillField;
class AutofillProfile;
@@ -78,10 +79,16 @@ class AutofillManager : public content::WebContentsObserver,
public AutofillDownloadManager::Observer,
public base::SupportsUserData::Data {
public:
+ enum AutofillDownloadManagerState {
+ ENABLE_AUTOFILL_DOWNLOAD_MANAGER,
+ DISABLE_AUTOFILL_DOWNLOAD_MANAGER,
+ };
+
static void CreateForWebContentsAndDelegate(
content::WebContents* contents,
autofill::AutofillManagerDelegate* delegate,
- const std::string& app_locale);
+ const std::string& app_locale,
+ AutofillDownloadManagerState enable_download_manager);
static AutofillManager* FromWebContents(content::WebContents* contents);
// Registers our Enable/Disable Autofill pref.
@@ -141,7 +148,8 @@ class AutofillManager : public content::WebContentsObserver,
// Only test code should subclass AutofillManager.
AutofillManager(content::WebContents* web_contents,
autofill::AutofillManagerDelegate* delegate,
- const std::string& app_locale);
+ const std::string& app_locale,
+ AutofillDownloadManagerState enable_download_manager);
virtual ~AutofillManager();
// Test code should prefer to use this constructor.
@@ -348,14 +356,9 @@ class AutofillManager : public content::WebContentsObserver,
std::list<std::string> autofilled_form_signatures_;
- // Handles queries and uploads to Autofill servers.
- AutofillDownloadManager download_manager_;
-
- // Should be set to true in AutofillManagerTest and other tests, false in
- // AutofillDownloadManagerTest and in non-test environment. Is false by
- // default for the public constructor, and true by default for the test-only
- // constructors.
- bool disable_download_manager_requests_;
+ // Handles queries and uploads to Autofill servers. Will be NULL if
+ // the download manager functionality is disabled.
+ scoped_ptr<AutofillDownloadManager> download_manager_;
// Handles single-field autocomplete form data.
AutocompleteHistoryManager autocomplete_history_manager_;
diff --git a/components/autofill/browser/autofill_manager_unittest.cc b/components/autofill/browser/autofill_manager_unittest.cc
index 1c9bd6878b..357fa731e2 100644
--- a/components/autofill/browser/autofill_manager_unittest.cc
+++ b/components/autofill/browser/autofill_manager_unittest.cc
@@ -45,7 +45,7 @@
#include "content/public/test/test_browser_thread.h"
#include "content/public/test/test_utils.h"
#include "googleurl/src/gurl.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "ipc/ipc_test_sink.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/autofill/browser/autofill_profile.cc b/components/autofill/browser/autofill_profile.cc
index d2fe5658cc..098a0db702 100644
--- a/components/autofill/browser/autofill_profile.cc
+++ b/components/autofill/browser/autofill_profile.cc
@@ -23,7 +23,7 @@
#include "components/autofill/browser/phone_number.h"
#include "components/autofill/browser/phone_number_i18n.h"
#include "components/autofill/common/form_field_data.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "ui/base/l10n/l10n_util.h"
namespace autofill {
diff --git a/components/autofill/browser/autofill_profile_unittest.cc b/components/autofill/browser/autofill_profile_unittest.cc
index f90e95b1f3..78f58b5298 100644
--- a/components/autofill/browser/autofill_profile_unittest.cc
+++ b/components/autofill/browser/autofill_profile_unittest.cc
@@ -13,7 +13,7 @@
#include "components/autofill/browser/autofill_common_test.h"
#include "components/autofill/browser/autofill_profile.h"
#include "components/autofill/common/form_field_data.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace autofill {
@@ -141,7 +141,7 @@ TEST(AutofillProfileTest, PreviewSummaryString) {
}
TEST(AutofillProfileTest, AdjustInferredLabels) {
- std::vector<AutofillProfile*> profiles;
+ ScopedVector<AutofillProfile> profiles;
profiles.push_back(new AutofillProfile);
test::SetProfileInfo(
profiles[0],
@@ -171,9 +171,9 @@ TEST(AutofillProfileTest, AdjustInferredLabels) {
"US",
"12345678910");
// As labels are empty they are adjusted the first time.
- EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles));
+ EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles.get()));
// No need to adjust them anymore.
- EXPECT_FALSE(AutofillProfile::AdjustInferredLabels(&profiles));
+ EXPECT_FALSE(AutofillProfile::AdjustInferredLabels(&profiles.get()));
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St."),
profiles[0]->Label());
EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."),
@@ -193,7 +193,7 @@ TEST(AutofillProfileTest, AdjustInferredLabels) {
"91111",
"US",
"16502111111");
- EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles));
+ EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles.get()));
// Profile 0 and 2 inferred label now includes an e-mail.
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., johndoe@hades.com"),
@@ -203,8 +203,7 @@ TEST(AutofillProfileTest, AdjustInferredLabels) {
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., johndoe@tertium.com"),
profiles[2]->Label());
- delete profiles[2];
- profiles.pop_back();
+ profiles.resize(2);
profiles.push_back(new AutofillProfile);
test::SetProfileInfo(
@@ -221,7 +220,7 @@ TEST(AutofillProfileTest, AdjustInferredLabels) {
"US",
"16502111111");
- EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles));
+ EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles.get()));
// Profile 0 and 2 inferred label now includes a state.
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"),
@@ -246,7 +245,7 @@ TEST(AutofillProfileTest, AdjustInferredLabels) {
"US",
"16504444444"); // Phone is different for some.
- EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles));
+ EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles.get()));
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"),
profiles[0]->Label());
@@ -274,7 +273,7 @@ TEST(AutofillProfileTest, AdjustInferredLabels) {
"US",
"16504444444"); // Phone is different for some.
- EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles));
+ EXPECT_TRUE(AutofillProfile::AdjustInferredLabels(&profiles.get()));
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"),
profiles[0]->Label());
@@ -291,14 +290,11 @@ TEST(AutofillProfileTest, AdjustInferredLabels) {
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@styx.com"),
profiles[4]->Label());
- EXPECT_FALSE(AutofillProfile::AdjustInferredLabels(&profiles));
-
- // Clean up.
- STLDeleteContainerPointers(profiles.begin(), profiles.end());
+ EXPECT_FALSE(AutofillProfile::AdjustInferredLabels(&profiles.get()));
}
TEST(AutofillProfileTest, CreateInferredLabels) {
- std::vector<AutofillProfile*> profiles;
+ ScopedVector<AutofillProfile> profiles;
profiles.push_back(new AutofillProfile);
test::SetProfileInfo(profiles[0],
"John",
@@ -327,13 +323,13 @@ TEST(AutofillProfileTest, CreateInferredLabels) {
"12345678910");
std::vector<base::string16> labels;
// Two fields at least - no filter.
- AutofillProfile::CreateInferredLabels(&profiles, NULL, UNKNOWN_TYPE, 2,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), NULL, UNKNOWN_TYPE, 2,
&labels);
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St."), labels[0]);
EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]);
// Three fields at least - no filter.
- AutofillProfile::CreateInferredLabels(&profiles, NULL, UNKNOWN_TYPE, 3,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), NULL, UNKNOWN_TYPE, 3,
&labels);
EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., Elysium"),
labels[0]);
@@ -346,20 +342,20 @@ TEST(AutofillProfileTest, CreateInferredLabels) {
suggested_fields.push_back(ADDRESS_HOME_ZIP);
// Two fields at least, from suggested fields - no filter.
- AutofillProfile::CreateInferredLabels(&profiles, &suggested_fields,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields,
UNKNOWN_TYPE, 2, &labels);
EXPECT_EQ(ASCIIToUTF16("Elysium, CA"), labels[0]);
EXPECT_EQ(ASCIIToUTF16("Dis, CA"), labels[1]);
// Three fields at least, from suggested fields - no filter.
- AutofillProfile::CreateInferredLabels(&profiles, &suggested_fields,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields,
UNKNOWN_TYPE, 3, &labels);
EXPECT_EQ(ASCIIToUTF16("Elysium, CA, 91111"), labels[0]);
EXPECT_EQ(ASCIIToUTF16("Dis, CA, 91222"), labels[1]);
// Three fields at least, from suggested fields - but filter reduces available
// fields to two.
- AutofillProfile::CreateInferredLabels(&profiles, &suggested_fields,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields,
ADDRESS_HOME_STATE, 3, &labels);
EXPECT_EQ(ASCIIToUTF16("Elysium, 91111"), labels[0]);
EXPECT_EQ(ASCIIToUTF16("Dis, 91222"), labels[1]);
@@ -368,14 +364,14 @@ TEST(AutofillProfileTest, CreateInferredLabels) {
// In our implementation we always display NAME_FULL for all NAME* fields...
suggested_fields.push_back(NAME_MIDDLE);
// One field at least, from suggested fields - no filter.
- AutofillProfile::CreateInferredLabels(&profiles, &suggested_fields,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields,
UNKNOWN_TYPE, 1, &labels);
EXPECT_EQ(ASCIIToUTF16("John Doe"), labels[0]);
EXPECT_EQ(ASCIIToUTF16("Jane Doe"), labels[1]);
// One field at least, from suggested fields - filter the same as suggested
// field.
- AutofillProfile::CreateInferredLabels(&profiles, &suggested_fields,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields,
NAME_MIDDLE, 1, &labels);
EXPECT_EQ(base::string16(), labels[0]);
EXPECT_EQ(base::string16(), labels[1]);
@@ -384,7 +380,7 @@ TEST(AutofillProfileTest, CreateInferredLabels) {
// In our implementation we always display NAME_FULL for NAME_MIDDLE_INITIAL
suggested_fields.push_back(NAME_MIDDLE_INITIAL);
// One field at least, from suggested fields - no filter.
- AutofillProfile::CreateInferredLabels(&profiles, &suggested_fields,
+ AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields,
UNKNOWN_TYPE, 1, &labels);
EXPECT_EQ(ASCIIToUTF16("John Doe"), labels[0]);
EXPECT_EQ(ASCIIToUTF16("Jane Doe"), labels[1]);
@@ -395,13 +391,10 @@ TEST(AutofillProfileTest, CreateInferredLabels) {
suggested_fields.push_back(UNKNOWN_TYPE);
suggested_fields.push_back(NAME_FULL);
suggested_fields.push_back(ADDRESS_HOME_LINE1);
- AutofillProfile::CreateInferredLabels(&profiles, &suggested_fields, NAME_FULL,
- 1, &labels);
+ AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields,
+ NAME_FULL, 1, &labels);
EXPECT_EQ(base::string16(ASCIIToUTF16("666 Erebus St.")), labels[0]);
EXPECT_EQ(base::string16(ASCIIToUTF16("123 Letha Shore.")), labels[1]);
-
- // Clean up.
- STLDeleteContainerPointers(profiles.begin(), profiles.end());
}
// Test that we fall back to using the full name if there are no other
diff --git a/components/autofill/browser/credit_card.cc b/components/autofill/browser/credit_card.cc
index 479d2ac396..056a79cc17 100644
--- a/components/autofill/browser/credit_card.cc
+++ b/components/autofill/browser/credit_card.cc
@@ -23,7 +23,7 @@
#include "components/autofill/browser/field_types.h"
#include "components/autofill/browser/validation.h"
#include "components/autofill/common/form_field_data.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "grit/webkit_resources.h"
#include "third_party/icu/public/common/unicode/uloc.h"
#include "third_party/icu/public/i18n/unicode/dtfmtsym.h"
@@ -40,90 +40,6 @@ const char16 kCreditCardObfuscationSymbol = '*';
// too large and fills the screen.
const size_t kMaxObfuscationSize = 20;
-std::string GetCreditCardType(const base::string16& number) {
- // Don't check for a specific type if this is not a credit card number.
- if (!autofill::IsValidCreditCardNumber(number))
- return kGenericCard;
-
- // Credit card number specifications taken from:
- // http://en.wikipedia.org/wiki/Credit_card_numbers and
- // http://www.beachnet.com/~hstiles/cardtype.html
- // Card Type Prefix(es) Length
- // ---------------------------------------------------------------
- // Visa 4 13,16
- // American Express 34,37 15
- // Diners Club 300-305,2014,2149,36, 14,15
- // Discover Card 6011,65 16
- // JCB 3 16
- // JCB 2131,1800 15
- // MasterCard 51-55 16
- // Solo (debit card) 6334,6767 16,18,19
-
- // We need at least 4 digits to work with.
- if (number.length() < 4)
- return kGenericCard;
-
- int first_four_digits = 0;
- if (!base::StringToInt(number.substr(0, 4), &first_four_digits))
- return kGenericCard;
-
- int first_three_digits = first_four_digits / 10;
- int first_two_digits = first_three_digits / 10;
- int first_digit = first_two_digits / 10;
-
- switch (number.length()) {
- case 13:
- if (first_digit == 4)
- return kVisaCard;
-
- break;
- case 14:
- if (first_three_digits >= 300 && first_three_digits <= 305)
- return kDinersCard;
-
- if (first_digit == 36)
- return kDinersCard;
-
- break;
- case 15:
- if (first_two_digits == 34 || first_two_digits == 37)
- return kAmericanExpressCard;
-
- if (first_four_digits == 2131 || first_four_digits == 1800)
- return kJCBCard;
-
- if (first_four_digits == 2014 || first_four_digits == 2149)
- return kDinersCard;
-
- break;
- case 16:
- if (first_four_digits == 6011 || first_two_digits == 65)
- return kDiscoverCard;
-
- if (first_four_digits == 6334 || first_four_digits == 6767)
- return kSoloCard;
-
- if (first_two_digits >= 51 && first_two_digits <= 55)
- return kMasterCard;
-
- if (first_digit == 3)
- return kJCBCard;
-
- if (first_digit == 4)
- return kVisaCard;
-
- break;
- case 18:
- case 19:
- if (first_four_digits == 6334 || first_four_digits == 6767)
- return kSoloCard;
-
- break;
- }
-
- return kGenericCard;
-}
-
bool ConvertYear(const base::string16& year, int* num) {
// If the |year| is empty, clear the stored value.
if (year.empty()) {
@@ -245,6 +161,91 @@ base::string16 CreditCard::TypeForDisplay(const std::string& type) {
return base::string16();
}
+// static
+std::string CreditCard::GetCreditCardType(const base::string16& number) {
+ // Don't check for a specific type if this is not a credit card number.
+ if (!autofill::IsValidCreditCardNumber(number))
+ return kGenericCard;
+
+ // Credit card number specifications taken from:
+ // http://en.wikipedia.org/wiki/Credit_card_numbers and
+ // http://www.beachnet.com/~hstiles/cardtype.html
+ // Card Type Prefix(es) Length
+ // ---------------------------------------------------------------
+ // Visa 4 13,16
+ // American Express 34,37 15
+ // Diners Club 300-305,2014,2149,36, 14,15
+ // Discover Card 6011,65 16
+ // JCB 3 16
+ // JCB 2131,1800 15
+ // MasterCard 51-55 16
+ // Solo (debit card) 6334,6767 16,18,19
+
+ // We need at least 4 digits to work with.
+ if (number.length() < 4)
+ return kGenericCard;
+
+ int first_four_digits = 0;
+ if (!base::StringToInt(number.substr(0, 4), &first_four_digits))
+ return kGenericCard;
+
+ int first_three_digits = first_four_digits / 10;
+ int first_two_digits = first_three_digits / 10;
+ int first_digit = first_two_digits / 10;
+
+ switch (number.length()) {
+ case 13:
+ if (first_digit == 4)
+ return kVisaCard;
+
+ break;
+ case 14:
+ if (first_three_digits >= 300 && first_three_digits <= 305)
+ return kDinersCard;
+
+ if (first_digit == 36)
+ return kDinersCard;
+
+ break;
+ case 15:
+ if (first_two_digits == 34 || first_two_digits == 37)
+ return kAmericanExpressCard;
+
+ if (first_four_digits == 2131 || first_four_digits == 1800)
+ return kJCBCard;
+
+ if (first_four_digits == 2014 || first_four_digits == 2149)
+ return kDinersCard;
+
+ break;
+ case 16:
+ if (first_four_digits == 6011 || first_two_digits == 65)
+ return kDiscoverCard;
+
+ if (first_four_digits == 6334 || first_four_digits == 6767)
+ return kSoloCard;
+
+ if (first_two_digits >= 51 && first_two_digits <= 55)
+ return kMasterCard;
+
+ if (first_digit == 3)
+ return kJCBCard;
+
+ if (first_digit == 4)
+ return kVisaCard;
+
+ break;
+ case 18:
+ case 19:
+ if (first_four_digits == 6334 || first_four_digits == 6767)
+ return kSoloCard;
+
+ break;
+ }
+
+ return kGenericCard;
+}
+
base::string16 CreditCard::GetRawInfo(AutofillFieldType type) const {
switch (type) {
case CREDIT_CARD_NAME:
diff --git a/components/autofill/browser/credit_card.h b/components/autofill/browser/credit_card.h
index 452627dd57..c17babbaa0 100644
--- a/components/autofill/browser/credit_card.h
+++ b/components/autofill/browser/credit_card.h
@@ -34,6 +34,9 @@ class CreditCard : public AutofillDataModel {
// The user-visible type of the card, e.g. 'Mastercard'.
static base::string16 TypeForDisplay(const std::string& type);
+ // The internal representation of credit card type.
+ static std::string GetCreditCardType(const base::string16& number);
+
// FormGroup:
virtual void GetMatchingTypes(const base::string16& text,
const std::string& app_locale,
diff --git a/components/autofill/browser/personal_data_manager_mac.mm b/components/autofill/browser/personal_data_manager_mac.mm
index 789357f05c..61d1c34b34 100644
--- a/components/autofill/browser/personal_data_manager_mac.mm
+++ b/components/autofill/browser/personal_data_manager_mac.mm
@@ -19,7 +19,7 @@
#include "components/autofill/browser/autofill_country.h"
#include "components/autofill/browser/autofill_profile.h"
#include "components/autofill/browser/phone_number.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "ui/base/l10n/l10n_util_mac.h"
namespace autofill {
diff --git a/components/autofill/browser/wallet/encryption_escrow_client.cc b/components/autofill/browser/wallet/encryption_escrow_client.cc
index 4b74c1acae..53754a2092 100644
--- a/components/autofill/browser/wallet/encryption_escrow_client.cc
+++ b/components/autofill/browser/wallet/encryption_escrow_client.cc
@@ -109,6 +109,10 @@ void EncryptionEscrowClient::CancelRequest() {
request_type_ = NO_PENDING_REQUEST;
}
+bool EncryptionEscrowClient::HasRequestInProgress() const {
+ return request_;
+}
+
void EncryptionEscrowClient::MakeRequest(const GURL& url,
const std::string& post_body) {
DCHECK(!request_.get());
diff --git a/components/autofill/browser/wallet/encryption_escrow_client.h b/components/autofill/browser/wallet/encryption_escrow_client.h
index ddd93d4bc3..9af04f6aad 100644
--- a/components/autofill/browser/wallet/encryption_escrow_client.h
+++ b/components/autofill/browser/wallet/encryption_escrow_client.h
@@ -52,6 +52,8 @@ class EncryptionEscrowClient : public net::URLFetcherDelegate {
// Cancels |request_| (if it exists).
void CancelRequest();
+ bool HasRequestInProgress() const;
+
protected:
// Exposed for testing.
const net::URLFetcher* request() const { return request_.get(); }
diff --git a/components/autofill/browser/wallet/full_wallet.cc b/components/autofill/browser/wallet/full_wallet.cc
index b68c1aa2a0..14dc6058cf 100644
--- a/components/autofill/browser/wallet/full_wallet.cc
+++ b/components/autofill/browser/wallet/full_wallet.cc
@@ -8,6 +8,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
+#include "components/autofill/browser/credit_card.h"
namespace {
@@ -136,11 +137,40 @@ base::string16 FullWallet::GetInfo(AutofillFieldType type) {
return UTF8ToUTF16(GetCvn());
case CREDIT_CARD_EXP_MONTH:
+ if (expiration_month() == 0)
+ return base::string16();
return base::IntToString16(expiration_month());
case CREDIT_CARD_EXP_4_DIGIT_YEAR:
+ if (expiration_year() == 0)
+ return base::string16();
return base::IntToString16(expiration_year());
+ case CREDIT_CARD_EXP_2_DIGIT_YEAR:
+ if (expiration_year() == 0)
+ return base::string16();
+ return base::IntToString16(expiration_year() % 100);
+
+ case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:
+ if (expiration_month() == 0 || expiration_year() == 0)
+ return base::string16();
+ return base::IntToString16(expiration_month()) + ASCIIToUTF16("/") +
+ base::IntToString16(expiration_year() % 100);
+
+ case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:
+ if (expiration_month() == 0 || expiration_year() == 0)
+ return base::string16();
+ return base::IntToString16(expiration_month()) + ASCIIToUTF16("/") +
+ base::IntToString16(expiration_year());
+
+ case CREDIT_CARD_TYPE: {
+ std::string internal_type =
+ CreditCard::GetCreditCardType(UTF8ToUTF16(GetPan()));
+ if (internal_type == kGenericCard)
+ return base::string16();
+ return CreditCard::TypeForDisplay(internal_type);
+ }
+
default:
NOTREACHED();
}
diff --git a/components/autofill/browser/wallet/full_wallet.h b/components/autofill/browser/wallet/full_wallet.h
index f2d287a664..5f03c2385d 100644
--- a/components/autofill/browser/wallet/full_wallet.h
+++ b/components/autofill/browser/wallet/full_wallet.h
@@ -70,6 +70,7 @@ class FullWallet {
FRIEND_TEST_ALL_PREFIXES(FullWalletTest, CreateFullWalletWithRequiredActions);
FRIEND_TEST_ALL_PREFIXES(FullWalletTest, EvenRestDecryptionTest);
FRIEND_TEST_ALL_PREFIXES(FullWalletTest, OddRestDecryptionTest);
+ FRIEND_TEST_ALL_PREFIXES(FullWalletTest, GetCreditCardInfo);
FullWallet(int expiration_month,
int expiration_year,
const std::string& iin,
diff --git a/components/autofill/browser/wallet/full_wallet_unittest.cc b/components/autofill/browser/wallet/full_wallet_unittest.cc
index 9ab93a0e28..f262cec976 100644
--- a/components/autofill/browser/wallet/full_wallet_unittest.cc
+++ b/components/autofill/browser/wallet/full_wallet_unittest.cc
@@ -475,5 +475,31 @@ TEST_F(FullWalletTest, OddRestDecryptionTest) {
full_wallet.GetInfo(CREDIT_CARD_VERIFICATION_CODE));
}
+TEST_F(FullWalletTest, GetCreditCardInfo) {
+ std::vector<RequiredAction> required_actions;
+ FullWallet full_wallet(12,
+ 2015,
+ "528512",
+ "1a068673eb0",
+ GetTestAddress(),
+ GetTestShippingAddress(),
+ required_actions);
+
+ EXPECT_EQ(ASCIIToUTF16("15"),
+ full_wallet.GetInfo(CREDIT_CARD_EXP_2_DIGIT_YEAR));
+
+ EXPECT_EQ(ASCIIToUTF16("12/15"),
+ full_wallet.GetInfo(CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR));
+
+ EXPECT_EQ(ASCIIToUTF16("12/2015"),
+ full_wallet.GetInfo(CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR));
+
+ std::vector<uint8> one_time_pad;
+ EXPECT_TRUE(base::HexStringToBytes("075DA779F98B", &one_time_pad));
+ full_wallet.set_one_time_pad(one_time_pad);
+ EXPECT_EQ(ASCIIToUTF16("MasterCard"),
+ full_wallet.GetInfo(CREDIT_CARD_TYPE));
+}
+
} // namespace wallet
} // namespace autofill
diff --git a/components/autofill/browser/wallet/wallet_client.cc b/components/autofill/browser/wallet/wallet_client.cc
index 4dbf5524e1..ace0f5d4c0 100644
--- a/components/autofill/browser/wallet/wallet_client.cc
+++ b/components/autofill/browser/wallet/wallet_client.cc
@@ -188,6 +188,7 @@ const char kInstrumentKey[] = "instrument";
const char kInstrumentEscrowHandleKey[] = "instrument_escrow_handle";
const char kInstrumentExpMonthKey[] = "instrument.credit_card.exp_month";
const char kInstrumentExpYearKey[] = "instrument.credit_card.exp_year";
+const char kInstrumentType[] = "instrument.type";
const char kInstrumentPhoneNumberKey[] = "instrument_phone_number";
const char kMerchantDomainKey[] = "merchant_domain";
const char kReasonKey[] = "reason";
@@ -559,6 +560,9 @@ void WalletClient::UpdateInstrument(
update_instrument_request.expiration_year);
}
+ if (active_request_body->HasKey(kInstrumentKey))
+ active_request_body->SetString(kInstrumentType, "CREDIT_CARD");
+
if (update_instrument_request.card_verification_number.empty()) {
std::string post_body;
base::JSONWriter::Write(active_request_body, &post_body);
@@ -571,7 +575,10 @@ void WalletClient::UpdateInstrument(
}
bool WalletClient::HasRequestInProgress() const {
- return request_.get() != NULL;
+ // |SaveInstrument*()| and |UpdateInstrument()| methods don't set |request_|
+ // until sensitive info has been escrowed, so this class is considered to have
+ // a request in progress if |encryption_escrow_client_| is working as well.
+ return request_ || encryption_escrow_client_.HasRequestInProgress();
}
void WalletClient::CancelRequests() {
diff --git a/components/autofill/browser/wallet/wallet_client.h b/components/autofill/browser/wallet/wallet_client.h
index 31ec90ab26..51f74ba551 100644
--- a/components/autofill/browser/wallet/wallet_client.h
+++ b/components/autofill/browser/wallet/wallet_client.h
@@ -214,16 +214,14 @@ class WalletClient
const std::string& google_transaction_id);
// UpdateAddress updates Online Wallet with the data in |address|.
- void UpdateAddress(const Address& address,
- const GURL& source_url);
+ virtual void UpdateAddress(const Address& address, const GURL& source_url);
// Updates Online Wallet with the data in |update_instrument_request| and, if
// it's provided, |billing_address|.
- void UpdateInstrument(
+ virtual void UpdateInstrument(
const UpdateInstrumentRequest& update_instrument_request,
scoped_ptr<Address> billing_address);
- // Whether there is a currently running request (i.e. |request_| != NULL).
bool HasRequestInProgress() const;
// Cancels and clears the current |request_| and |pending_requests_| (if any).
diff --git a/components/autofill/browser/wallet/wallet_client_unittest.cc b/components/autofill/browser/wallet/wallet_client_unittest.cc
index 8ceb029a07..dd5244c4d1 100644
--- a/components/autofill/browser/wallet/wallet_client_unittest.cc
+++ b/components/autofill/browser/wallet/wallet_client_unittest.cc
@@ -532,7 +532,8 @@ const char kUpdateInstrumentAddressAndExpirationDateValidRequest[] =
"{"
"\"exp_month\":12,"
"\"exp_year\":2015"
- "}"
+ "},"
+ "\"type\":\"CREDIT_CARD\""
"},"
"\"instrument_escrow_handle\":\"escrow_handle\","
"\"instrument_phone_number\":\"phone_number\","
@@ -562,7 +563,8 @@ const char kUpdateInstrumentExpirationDateValidRequest[] =
"{"
"\"exp_month\":12,"
"\"exp_year\":2015"
- "}"
+ "},"
+ "\"type\":\"CREDIT_CARD\""
"},"
"\"instrument_escrow_handle\":\"escrow_handle\","
"\"merchant_domain\":\"https://example.com/\","
diff --git a/components/autofill/browser/wallet/wallet_items.cc b/components/autofill/browser/wallet/wallet_items.cc
index 6d99c5ed34..ff81bcc474 100644
--- a/components/autofill/browser/wallet/wallet_items.cc
+++ b/components/autofill/browser/wallet/wallet_items.cc
@@ -11,7 +11,7 @@
#include "components/autofill/browser/autofill_type.h"
#include "components/autofill/browser/credit_card.h"
#include "googleurl/src/gurl.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "grit/webkit_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
diff --git a/components/autofill/browser/webdata/autofill_webdata_backend.h b/components/autofill/browser/webdata/autofill_webdata_backend.h
index 3ab841e64c..6287de7fd4 100644
--- a/components/autofill/browser/webdata/autofill_webdata_backend.h
+++ b/components/autofill/browser/webdata/autofill_webdata_backend.h
@@ -5,127 +5,39 @@
#ifndef COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_
#define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_
-#include "base/memory/ref_counted.h"
-#include "base/observer_list.h"
-#include "components/autofill/browser/webdata/autofill_webdata.h"
-#include "components/autofill/common/form_field_data.h"
-#include "components/webdata/common/web_data_results.h"
-#include "components/webdata/common/web_data_service_base.h"
-#include "components/webdata/common/web_data_service_consumer.h"
-#include "components/webdata/common/web_database.h"
+class WebDatabase;
namespace autofill {
-class AutofillChange;
-class AutofillProfile;
class AutofillWebDataServiceObserverOnDBThread;
-class CreditCard;
-// Backend implentation for the AutofillWebDataService. This class runs on the
-// DB thread, as it handles reads and writes to the WebDatabase, and functions
-// in it should only be called from that thread. Most functions here are just
-// the implementations of the corresponding functions in the Autofill
-// WebDataService.
-class AutofillWebDataBackend
- : public base::RefCountedThreadSafe<AutofillWebDataBackend,
- content::BrowserThread::DeleteOnDBThread> {
+// Interface for doing Autofill work directly on the DB thread (used by
+// Sync, mostly), without fully exposing the AutofillWebDataBackend to clients.
+class AutofillWebDataBackend {
public:
- AutofillWebDataBackend();
+ virtual ~AutofillWebDataBackend() {}
- // Adds form fields to the web database.
- WebDatabase::State AddFormElements(const std::vector<FormFieldData>& fields,
- WebDatabase* db);
-
- // Returns a vector of values which have been entered in form input fields
- // named |name|.
- scoped_ptr<WDTypedResult> GetFormValuesForElementName(
- const base::string16& name,
- const base::string16& prefix,
- int limit,
- WebDatabase* db);
-
- // Returns true if there are any elements in the form.
- scoped_ptr<WDTypedResult> HasFormElements(WebDatabase* db);
-
- // Removes form elements recorded for Autocomplete from the database.
- WebDatabase::State RemoveFormElementsAddedBetween(
- const base::Time& delete_begin,
- const base::Time& delete_end,
- WebDatabase* db);
-
- // Removes expired form elements recorded for Autocomplete from the database.
- WebDatabase::State RemoveExpiredFormElements(WebDatabase* db);
-
- // Removes the Form-value |value| which has been entered in form input fields
- // named |name| from the database.
- WebDatabase::State RemoveFormValueForElementName(const base::string16& name,
- const base::string16& value,
- WebDatabase* db);
-
- // Adds an Autofill profile to the web database.
- WebDatabase::State AddAutofillProfile(const AutofillProfile& profile,
- WebDatabase* db);
-
- // Updates an Autofill profile in the web database.
- WebDatabase::State UpdateAutofillProfile(const AutofillProfile& profile,
- WebDatabase* db);
-
- // Removes an Autofill profile from the web database.
- WebDatabase::State RemoveAutofillProfile(const std::string& guid,
- WebDatabase* db);
-
- // Returns all Autofill profiles from the web database.
- scoped_ptr<WDTypedResult> GetAutofillProfiles(WebDatabase* db);
-
- // Adds a credit card to the web database.
- WebDatabase::State AddCreditCard(const CreditCard& credit_card,
- WebDatabase* db);
-
- // Updates a credit card in the web database.
- WebDatabase::State UpdateCreditCard(const CreditCard& credit_card,
- WebDatabase* db);
-
- // Removes a credit card from the web database.
- WebDatabase::State RemoveCreditCard(const std::string& guid,
- WebDatabase* db);
-
- // Returns a vector of all credit cards from the web database.
- scoped_ptr<WDTypedResult> GetCreditCards(WebDatabase* db);
-
- // Removes Autofill records from the database.
- WebDatabase::State RemoveAutofillDataModifiedBetween(
- const base::Time& delete_begin,
- const base::Time& delete_end,
- WebDatabase* db);
+ // Get a raw pointer to the WebDatabase.
+ virtual WebDatabase* GetDatabase() = 0;
// Add an observer to be notified of changes on the DB thread.
- void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer);
+ virtual void AddObserver(
+ AutofillWebDataServiceObserverOnDBThread* observer) = 0;
// Remove an observer.
- void RemoveObserver(AutofillWebDataServiceObserverOnDBThread* observer);
-
- protected:
- virtual ~AutofillWebDataBackend();
-
- private:
- friend struct content::BrowserThread::DeleteOnThread<
- content::BrowserThread::DB>;
- friend class base::DeleteHelper<AutofillWebDataBackend>;
- // We have to friend RCTS<> so WIN shared-lib build is happy
- // (http://crbug/112250).
- friend class base::RefCountedThreadSafe<AutofillWebDataBackend,
- content::BrowserThread::DeleteOnDBThread>;
-
- // Callbacks to ensure that sensitive info is destroyed if request is
- // cancelled.
- void DestroyAutofillProfileResult(const WDTypedResult* result);
- void DestroyAutofillCreditCardResult(const WDTypedResult* result);
+ virtual void RemoveObserver(
+ AutofillWebDataServiceObserverOnDBThread* observer) = 0;
- ObserverList<AutofillWebDataServiceObserverOnDBThread> db_observer_list_;
+ // Remove expired elements from the database and commit if needed.
+ virtual void RemoveExpiredFormElementsWrapper() = 0;
- DISALLOW_COPY_AND_ASSIGN(AutofillWebDataBackend);
+ // Notifies listeners on the UI thread that multiple changes have been made to
+ // to Autofill records of the database.
+ // NOTE: This method is intended to be called from the DB thread. It
+ // asynchronously notifies listeners on the UI thread.
+ virtual void NotifyOfMultipleAutofillChanges() = 0;
};
-} // namespace autofill
+} // namespace autofill
#endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_
diff --git a/components/autofill/browser/webdata/autofill_webdata_backend.cc b/components/autofill/browser/webdata/autofill_webdata_backend_impl.cc
index e8c5fd8fdc..f7e4f30c16 100644
--- a/components/autofill/browser/webdata/autofill_webdata_backend.cc
+++ b/components/autofill/browser/webdata/autofill_webdata_backend_impl.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "components/autofill/browser/webdata/autofill_webdata_backend.h"
+#include "components/autofill/browser/webdata/autofill_webdata_backend_impl.h"
#include "base/logging.h"
#include "base/stl_util.h"
@@ -14,6 +14,7 @@
#include "components/autofill/browser/webdata/autofill_table.h"
#include "components/autofill/browser/webdata/autofill_webdata_service_observer.h"
#include "components/autofill/common/form_field_data.h"
+#include "components/webdata/common/web_data_service_backend.h"
using base::Bind;
using base::Time;
@@ -21,25 +22,46 @@ using content::BrowserThread;
namespace autofill {
-AutofillWebDataBackend::AutofillWebDataBackend() {
+AutofillWebDataBackendImpl::AutofillWebDataBackendImpl(
+ scoped_refptr<WebDataServiceBackend> web_database_backend,
+ const base::Closure& on_changed_callback)
+ : web_database_backend_(web_database_backend),
+ on_changed_callback_(on_changed_callback) {
}
-void AutofillWebDataBackend::AddObserver(
+void AutofillWebDataBackendImpl::AddObserver(
AutofillWebDataServiceObserverOnDBThread* observer) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
db_observer_list_.AddObserver(observer);
}
-void AutofillWebDataBackend::RemoveObserver(
+void AutofillWebDataBackendImpl::RemoveObserver(
AutofillWebDataServiceObserverOnDBThread* observer) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
db_observer_list_.RemoveObserver(observer);
}
-AutofillWebDataBackend::~AutofillWebDataBackend() {
+AutofillWebDataBackendImpl::~AutofillWebDataBackendImpl() {
}
-WebDatabase::State AutofillWebDataBackend::AddFormElements(
+WebDatabase* AutofillWebDataBackendImpl::GetDatabase() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
+ return web_database_backend_->database();
+}
+
+void AutofillWebDataBackendImpl::RemoveExpiredFormElementsWrapper() {
+ web_database_backend_->ExecuteWriteTask(
+ Bind(&AutofillWebDataBackendImpl::RemoveExpiredFormElements, this));
+}
+
+void AutofillWebDataBackendImpl::NotifyOfMultipleAutofillChanges() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
+ BrowserThread::PostTask(BrowserThread::UI,
+ FROM_HERE,
+ on_changed_callback_);
+}
+
+WebDatabase::State AutofillWebDataBackendImpl::AddFormElements(
const std::vector<FormFieldData>& fields, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
AutofillChangeList changes;
@@ -60,7 +82,7 @@ WebDatabase::State AutofillWebDataBackend::AddFormElements(
}
scoped_ptr<WDTypedResult>
-AutofillWebDataBackend::GetFormValuesForElementName(
+AutofillWebDataBackendImpl::GetFormValuesForElementName(
const base::string16& name, const base::string16& prefix, int limit,
WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
@@ -72,7 +94,7 @@ AutofillWebDataBackend::GetFormValuesForElementName(
values));
}
-scoped_ptr<WDTypedResult> AutofillWebDataBackend::HasFormElements(
+scoped_ptr<WDTypedResult> AutofillWebDataBackendImpl::HasFormElements(
WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
bool value = AutofillTable::FromWebDatabase(db)->HasFormElements();
@@ -80,7 +102,7 @@ scoped_ptr<WDTypedResult> AutofillWebDataBackend::HasFormElements(
new WDResult<bool>(AUTOFILL_VALUE_RESULT, value));
}
-WebDatabase::State AutofillWebDataBackend::RemoveFormElementsAddedBetween(
+WebDatabase::State AutofillWebDataBackendImpl::RemoveFormElementsAddedBetween(
const base::Time& delete_begin, const base::Time& delete_end,
WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
@@ -101,7 +123,7 @@ WebDatabase::State AutofillWebDataBackend::RemoveFormElementsAddedBetween(
return WebDatabase::COMMIT_NOT_NEEDED;
}
-WebDatabase::State AutofillWebDataBackend::RemoveExpiredFormElements(
+WebDatabase::State AutofillWebDataBackendImpl::RemoveExpiredFormElements(
WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
AutofillChangeList changes;
@@ -120,7 +142,7 @@ WebDatabase::State AutofillWebDataBackend::RemoveExpiredFormElements(
return WebDatabase::COMMIT_NOT_NEEDED;
}
-WebDatabase::State AutofillWebDataBackend::RemoveFormValueForElementName(
+WebDatabase::State AutofillWebDataBackendImpl::RemoveFormValueForElementName(
const base::string16& name, const base::string16& value, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
@@ -139,7 +161,7 @@ WebDatabase::State AutofillWebDataBackend::RemoveFormValueForElementName(
return WebDatabase::COMMIT_NOT_NEEDED;
}
-WebDatabase::State AutofillWebDataBackend::AddAutofillProfile(
+WebDatabase::State AutofillWebDataBackendImpl::AddAutofillProfile(
const AutofillProfile& profile, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
if (!AutofillTable::FromWebDatabase(db)->AddAutofillProfile(profile)) {
@@ -157,7 +179,7 @@ WebDatabase::State AutofillWebDataBackend::AddAutofillProfile(
return WebDatabase::COMMIT_NEEDED;
}
-WebDatabase::State AutofillWebDataBackend::UpdateAutofillProfile(
+WebDatabase::State AutofillWebDataBackendImpl::UpdateAutofillProfile(
const AutofillProfile& profile, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
// Only perform the update if the profile exists. It is currently
@@ -186,7 +208,7 @@ WebDatabase::State AutofillWebDataBackend::UpdateAutofillProfile(
return WebDatabase::COMMIT_NEEDED;
}
-WebDatabase::State AutofillWebDataBackend::RemoveAutofillProfile(
+WebDatabase::State AutofillWebDataBackendImpl::RemoveAutofillProfile(
const std::string& guid, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
AutofillProfile* profile = NULL;
@@ -210,7 +232,7 @@ WebDatabase::State AutofillWebDataBackend::RemoveAutofillProfile(
return WebDatabase::COMMIT_NEEDED;
}
-scoped_ptr<WDTypedResult> AutofillWebDataBackend::GetAutofillProfiles(
+scoped_ptr<WDTypedResult> AutofillWebDataBackendImpl::GetAutofillProfiles(
WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
std::vector<AutofillProfile*> profiles;
@@ -219,11 +241,11 @@ scoped_ptr<WDTypedResult> AutofillWebDataBackend::GetAutofillProfiles(
new WDDestroyableResult<std::vector<AutofillProfile*> >(
AUTOFILL_PROFILES_RESULT,
profiles,
- base::Bind(&AutofillWebDataBackend::DestroyAutofillProfileResult,
+ base::Bind(&AutofillWebDataBackendImpl::DestroyAutofillProfileResult,
base::Unretained(this))));
}
-WebDatabase::State AutofillWebDataBackend::AddCreditCard(
+WebDatabase::State AutofillWebDataBackendImpl::AddCreditCard(
const CreditCard& credit_card, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
if (!AutofillTable::FromWebDatabase(db)->AddCreditCard(credit_card)) {
@@ -234,7 +256,7 @@ WebDatabase::State AutofillWebDataBackend::AddCreditCard(
return WebDatabase::COMMIT_NEEDED;
}
-WebDatabase::State AutofillWebDataBackend::UpdateCreditCard(
+WebDatabase::State AutofillWebDataBackendImpl::UpdateCreditCard(
const CreditCard& credit_card, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
// It is currently valid to try to update a missing profile. We simply drop
@@ -253,7 +275,7 @@ WebDatabase::State AutofillWebDataBackend::UpdateCreditCard(
return WebDatabase::COMMIT_NEEDED;
}
-WebDatabase::State AutofillWebDataBackend::RemoveCreditCard(
+WebDatabase::State AutofillWebDataBackendImpl::RemoveCreditCard(
const std::string& guid, WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
if (!AutofillTable::FromWebDatabase(db)->RemoveCreditCard(guid)) {
@@ -263,7 +285,7 @@ WebDatabase::State AutofillWebDataBackend::RemoveCreditCard(
return WebDatabase::COMMIT_NEEDED;
}
-scoped_ptr<WDTypedResult> AutofillWebDataBackend::GetCreditCards(
+scoped_ptr<WDTypedResult> AutofillWebDataBackendImpl::GetCreditCards(
WebDatabase* db) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
std::vector<CreditCard*> credit_cards;
@@ -272,12 +294,12 @@ scoped_ptr<WDTypedResult> AutofillWebDataBackend::GetCreditCards(
new WDDestroyableResult<std::vector<CreditCard*> >(
AUTOFILL_CREDITCARDS_RESULT,
credit_cards,
- base::Bind(&AutofillWebDataBackend::DestroyAutofillCreditCardResult,
+ base::Bind(&AutofillWebDataBackendImpl::DestroyAutofillCreditCardResult,
base::Unretained(this))));
}
WebDatabase::State
- AutofillWebDataBackend::RemoveAutofillDataModifiedBetween(
+ AutofillWebDataBackendImpl::RemoveAutofillDataModifiedBetween(
const base::Time& delete_begin,
const base::Time& delete_end,
WebDatabase* db) {
@@ -303,7 +325,7 @@ WebDatabase::State
return WebDatabase::COMMIT_NOT_NEEDED;
}
-void AutofillWebDataBackend::DestroyAutofillProfileResult(
+void AutofillWebDataBackendImpl::DestroyAutofillProfileResult(
const WDTypedResult* result) {
DCHECK(result->GetType() == AUTOFILL_PROFILES_RESULT);
const WDResult<std::vector<AutofillProfile*> >* r =
@@ -312,7 +334,7 @@ void AutofillWebDataBackend::DestroyAutofillProfileResult(
STLDeleteElements(&profiles);
}
-void AutofillWebDataBackend::DestroyAutofillCreditCardResult(
+void AutofillWebDataBackendImpl::DestroyAutofillCreditCardResult(
const WDTypedResult* result) {
DCHECK(result->GetType() == AUTOFILL_CREDITCARDS_RESULT);
const WDResult<std::vector<CreditCard*> >* r =
diff --git a/components/autofill/browser/webdata/autofill_webdata_backend_impl.h b/components/autofill/browser/webdata/autofill_webdata_backend_impl.h
new file mode 100644
index 0000000000..525adcbc81
--- /dev/null
+++ b/components/autofill/browser/webdata/autofill_webdata_backend_impl.h
@@ -0,0 +1,151 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_IMPL_H_
+#define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_IMPL_H_
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/observer_list.h"
+#include "components/autofill/browser/webdata/autofill_webdata.h"
+#include "components/autofill/browser/webdata/autofill_webdata_backend.h"
+#include "components/autofill/common/form_field_data.h"
+#include "components/webdata/common/web_data_results.h"
+#include "components/webdata/common/web_data_service_base.h"
+#include "components/webdata/common/web_data_service_consumer.h"
+#include "components/webdata/common/web_database.h"
+
+class WebDataServiceBackend;
+
+namespace autofill {
+
+class AutofillChange;
+class AutofillProfile;
+class AutofillWebDataServiceObserverOnDBThread;
+class CreditCard;
+
+// Backend implentation for the AutofillWebDataService. This class runs on the
+// DB thread, as it handles reads and writes to the WebDatabase, and functions
+// in it should only be called from that thread. Most functions here are just
+// the implementations of the corresponding functions in the Autofill
+// WebDataService.
+class AutofillWebDataBackendImpl
+ : public base::RefCountedThreadSafe<AutofillWebDataBackendImpl,
+ content::BrowserThread::DeleteOnDBThread>,
+ public AutofillWebDataBackend {
+ public:
+ // |web_database_backend| is used to access the WebDatabase directly for
+ // Sync-related operations. |on_changed_callback| is a closure which can be
+ // used to notify the UI thread of changes initiated by Sync (this callback
+ // may be called multiple times).
+ AutofillWebDataBackendImpl(
+ scoped_refptr<WebDataServiceBackend> web_database_backend,
+ const base::Closure& on_changed_callback);
+
+ // AutofillWebDataBackend implementation.
+ virtual void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer)
+ OVERRIDE;
+ virtual void RemoveObserver(
+ AutofillWebDataServiceObserverOnDBThread* observer) OVERRIDE;
+ virtual WebDatabase* GetDatabase() OVERRIDE;
+ virtual void RemoveExpiredFormElementsWrapper() OVERRIDE;
+ virtual void NotifyOfMultipleAutofillChanges() OVERRIDE;
+
+ // Adds form fields to the web database.
+ WebDatabase::State AddFormElements(const std::vector<FormFieldData>& fields,
+ WebDatabase* db);
+
+ // Returns a vector of values which have been entered in form input fields
+ // named |name|.
+ scoped_ptr<WDTypedResult> GetFormValuesForElementName(
+ const base::string16& name,
+ const base::string16& prefix,
+ int limit,
+ WebDatabase* db);
+
+ // Returns true if there are any elements in the form.
+ scoped_ptr<WDTypedResult> HasFormElements(WebDatabase* db);
+
+ // Removes form elements recorded for Autocomplete from the database.
+ WebDatabase::State RemoveFormElementsAddedBetween(
+ const base::Time& delete_begin,
+ const base::Time& delete_end,
+ WebDatabase* db);
+
+ // Removes expired form elements recorded for Autocomplete from the database.
+ WebDatabase::State RemoveExpiredFormElements(WebDatabase* db);
+
+ // Removes the Form-value |value| which has been entered in form input fields
+ // named |name| from the database.
+ WebDatabase::State RemoveFormValueForElementName(const base::string16& name,
+ const base::string16& value,
+ WebDatabase* db);
+
+ // Adds an Autofill profile to the web database.
+ WebDatabase::State AddAutofillProfile(const AutofillProfile& profile,
+ WebDatabase* db);
+
+ // Updates an Autofill profile in the web database.
+ WebDatabase::State UpdateAutofillProfile(const AutofillProfile& profile,
+ WebDatabase* db);
+
+ // Removes an Autofill profile from the web database.
+ WebDatabase::State RemoveAutofillProfile(const std::string& guid,
+ WebDatabase* db);
+
+ // Returns all Autofill profiles from the web database.
+ scoped_ptr<WDTypedResult> GetAutofillProfiles(WebDatabase* db);
+
+ // Adds a credit card to the web database.
+ WebDatabase::State AddCreditCard(const CreditCard& credit_card,
+ WebDatabase* db);
+
+ // Updates a credit card in the web database.
+ WebDatabase::State UpdateCreditCard(const CreditCard& credit_card,
+ WebDatabase* db);
+
+ // Removes a credit card from the web database.
+ WebDatabase::State RemoveCreditCard(const std::string& guid,
+ WebDatabase* db);
+
+ // Returns a vector of all credit cards from the web database.
+ scoped_ptr<WDTypedResult> GetCreditCards(WebDatabase* db);
+
+ // Removes Autofill records from the database.
+ WebDatabase::State RemoveAutofillDataModifiedBetween(
+ const base::Time& delete_begin,
+ const base::Time& delete_end,
+ WebDatabase* db);
+
+ protected:
+ virtual ~AutofillWebDataBackendImpl();
+
+ private:
+ friend struct content::BrowserThread::DeleteOnThread<
+ content::BrowserThread::DB>;
+ friend class base::DeleteHelper<AutofillWebDataBackendImpl>;
+ // We have to friend RCTS<> so WIN shared-lib build is happy
+ // (http://crbug/112250).
+ friend class base::RefCountedThreadSafe<AutofillWebDataBackendImpl,
+ content::BrowserThread::DeleteOnDBThread>;
+
+ // Callbacks to ensure that sensitive info is destroyed if request is
+ // cancelled.
+ void DestroyAutofillProfileResult(const WDTypedResult* result);
+ void DestroyAutofillCreditCardResult(const WDTypedResult* result);
+
+ ObserverList<AutofillWebDataServiceObserverOnDBThread> db_observer_list_;
+
+ // WebDataServiceBackend allows direct access to DB.
+ // TODO(caitkp): Make it so nobody but us needs direct DB access anymore.
+ scoped_refptr<WebDataServiceBackend> web_database_backend_;
+
+ base::Closure on_changed_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(AutofillWebDataBackendImpl);
+};
+
+} // namespace autofill
+
+#endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_IMPL_H_
diff --git a/components/autofill/browser/webdata/autofill_webdata_service.cc b/components/autofill/browser/webdata/autofill_webdata_service.cc
index 1f7e158fe8..b965b197e2 100644
--- a/components/autofill/browser/webdata/autofill_webdata_service.cc
+++ b/components/autofill/browser/webdata/autofill_webdata_service.cc
@@ -12,9 +12,10 @@
#include "components/autofill/browser/webdata/autofill_change.h"
#include "components/autofill/browser/webdata/autofill_entry.h"
#include "components/autofill/browser/webdata/autofill_table.h"
-#include "components/autofill/browser/webdata/autofill_webdata_backend.h"
+#include "components/autofill/browser/webdata/autofill_webdata_backend_impl.h"
#include "components/autofill/browser/webdata/autofill_webdata_service_observer.h"
#include "components/autofill/common/form_field_data.h"
+#include "components/webdata/common/web_data_service_backend.h"
#include "components/webdata/common/web_database_service.h"
using base::Bind;
@@ -41,16 +42,27 @@ AutofillWebDataService::AutofillWebDataService(
scoped_refptr<WebDatabaseService> wdbs,
const ProfileErrorCallback& callback)
: WebDataServiceBase(wdbs, callback),
- autofill_backend_(new AutofillWebDataBackend()) {
+ weak_ptr_factory_(this),
+ autofill_backend_(NULL) {
+
+ base::Closure on_changed_callback = Bind(
+ &AutofillWebDataService::NotifyAutofillMultipleChangedOnUIThread,
+ weak_ptr_factory_.GetWeakPtr());
+
+ autofill_backend_ = new AutofillWebDataBackendImpl(
+ wdbs_->GetBackend(),
+ on_changed_callback);
}
AutofillWebDataService::AutofillWebDataService()
: WebDataServiceBase(NULL,
WebDataServiceBase::ProfileErrorCallback()),
- autofill_backend_(new AutofillWebDataBackend()) {
+ weak_ptr_factory_(this),
+ autofill_backend_(new AutofillWebDataBackendImpl(NULL, base::Closure())) {
}
void AutofillWebDataService::ShutdownOnUIThread() {
+ weak_ptr_factory_.InvalidateWeakPtrs();
BrowserThread::PostTask(
BrowserThread::DB, FROM_HERE,
base::Bind(&AutofillWebDataService::ShutdownOnDBThread, this));
@@ -60,7 +72,7 @@ void AutofillWebDataService::ShutdownOnUIThread() {
void AutofillWebDataService::AddFormFields(
const std::vector<FormFieldData>& fields) {
wdbs_->ScheduleDBTask(FROM_HERE,
- Bind(&AutofillWebDataBackend::AddFormElements,
+ Bind(&AutofillWebDataBackendImpl::AddFormElements,
autofill_backend_, fields));
}
@@ -68,69 +80,69 @@ WebDataServiceBase::Handle AutofillWebDataService::GetFormValuesForElementName(
const base::string16& name, const base::string16& prefix, int limit,
WebDataServiceConsumer* consumer) {
return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
- Bind(&AutofillWebDataBackend::GetFormValuesForElementName,
+ Bind(&AutofillWebDataBackendImpl::GetFormValuesForElementName,
autofill_backend_, name, prefix, limit), consumer);
}
WebDataServiceBase::Handle AutofillWebDataService::HasFormElements(
WebDataServiceConsumer* consumer) {
return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
- Bind(&AutofillWebDataBackend::HasFormElements, autofill_backend_),
+ Bind(&AutofillWebDataBackendImpl::HasFormElements, autofill_backend_),
consumer);
}
void AutofillWebDataService::RemoveFormElementsAddedBetween(
const Time& delete_begin, const Time& delete_end) {
wdbs_->ScheduleDBTask(FROM_HERE,
- Bind(&AutofillWebDataBackend::RemoveFormElementsAddedBetween,
+ Bind(&AutofillWebDataBackendImpl::RemoveFormElementsAddedBetween,
autofill_backend_, delete_begin, delete_end));
}
void AutofillWebDataService::RemoveExpiredFormElements() {
wdbs_->ScheduleDBTask(FROM_HERE,
- Bind(&AutofillWebDataBackend::RemoveExpiredFormElements,
+ Bind(&AutofillWebDataBackendImpl::RemoveExpiredFormElements,
autofill_backend_));
}
void AutofillWebDataService::RemoveFormValueForElementName(
const base::string16& name, const base::string16& value) {
wdbs_->ScheduleDBTask(FROM_HERE,
- Bind(&AutofillWebDataBackend::RemoveFormValueForElementName,
+ Bind(&AutofillWebDataBackendImpl::RemoveFormValueForElementName,
autofill_backend_, name, value));
}
void AutofillWebDataService::AddAutofillProfile(
const AutofillProfile& profile) {
wdbs_->ScheduleDBTask(FROM_HERE,
- Bind(&AutofillWebDataBackend::AddAutofillProfile,
+ Bind(&AutofillWebDataBackendImpl::AddAutofillProfile,
autofill_backend_, profile));
}
void AutofillWebDataService::UpdateAutofillProfile(
const AutofillProfile& profile) {
wdbs_->ScheduleDBTask(FROM_HERE,
- Bind(&AutofillWebDataBackend::UpdateAutofillProfile,
+ Bind(&AutofillWebDataBackendImpl::UpdateAutofillProfile,
autofill_backend_, profile));
}
void AutofillWebDataService::RemoveAutofillProfile(
const std::string& guid) {
wdbs_->ScheduleDBTask(FROM_HERE,
- Bind(&AutofillWebDataBackend::RemoveAutofillProfile,
+ Bind(&AutofillWebDataBackendImpl::RemoveAutofillProfile,
autofill_backend_, guid));
}
WebDataServiceBase::Handle AutofillWebDataService::GetAutofillProfiles(
WebDataServiceConsumer* consumer) {
return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
- Bind(&AutofillWebDataBackend::GetAutofillProfiles, autofill_backend_),
+ Bind(&AutofillWebDataBackendImpl::GetAutofillProfiles, autofill_backend_),
consumer);
}
void AutofillWebDataService::AddCreditCard(const CreditCard& credit_card) {
wdbs_->ScheduleDBTask(
FROM_HERE,
- Bind(&AutofillWebDataBackend::AddCreditCard,
+ Bind(&AutofillWebDataBackendImpl::AddCreditCard,
autofill_backend_, credit_card));
}
@@ -138,20 +150,21 @@ void AutofillWebDataService::UpdateCreditCard(
const CreditCard& credit_card) {
wdbs_->ScheduleDBTask(
FROM_HERE,
- Bind(&AutofillWebDataBackend::UpdateCreditCard,
+ Bind(&AutofillWebDataBackendImpl::UpdateCreditCard,
autofill_backend_, credit_card));
}
void AutofillWebDataService::RemoveCreditCard(const std::string& guid) {
wdbs_->ScheduleDBTask(
FROM_HERE,
- Bind(&AutofillWebDataBackend::RemoveCreditCard, autofill_backend_, guid));
+ Bind(&AutofillWebDataBackendImpl::RemoveCreditCard,
+ autofill_backend_, guid));
}
WebDataServiceBase::Handle AutofillWebDataService::GetCreditCards(
WebDataServiceConsumer* consumer) {
return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
- Bind(&AutofillWebDataBackend::GetCreditCards, autofill_backend_),
+ Bind(&AutofillWebDataBackendImpl::GetCreditCards, autofill_backend_),
consumer);
}
@@ -160,7 +173,7 @@ void AutofillWebDataService::RemoveAutofillDataModifiedBetween(
const Time& delete_end) {
wdbs_->ScheduleDBTask(
FROM_HERE,
- Bind(&AutofillWebDataBackend::RemoveAutofillDataModifiedBetween,
+ Bind(&AutofillWebDataBackendImpl::RemoveAutofillDataModifiedBetween,
autofill_backend_, delete_begin, delete_end));
}
@@ -197,6 +210,13 @@ base::SupportsUserData* AutofillWebDataService::GetDBUserData() {
return db_thread_user_data_.get();
}
+void AutofillWebDataService::GetAutofillBackend(
+ const base::Callback<void(AutofillWebDataBackend*)>& callback) {
+ BrowserThread::PostTask(BrowserThread::DB,
+ FROM_HERE,
+ base::Bind(callback, autofill_backend_));
+}
+
void AutofillWebDataService::ShutdownOnDBThread() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
db_thread_user_data_.reset();
diff --git a/components/autofill/browser/webdata/autofill_webdata_service.h b/components/autofill/browser/webdata/autofill_webdata_service.h
index 2ca80ef953..2a8731749b 100644
--- a/components/autofill/browser/webdata/autofill_webdata_service.h
+++ b/components/autofill/browser/webdata/autofill_webdata_service.h
@@ -8,6 +8,7 @@
#include <vector>
#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
#include "base/supports_user_data.h"
#include "components/autofill/browser/webdata/autofill_webdata.h"
@@ -28,6 +29,7 @@ namespace autofill {
class AutofillChange;
class AutofillProfile;
class AutofillWebDataBackend;
+class AutofillWebDataBackendImpl;
class AutofillWebDataServiceObserverOnDBThread;
class AutofillWebDataServiceObserverOnUIThread;
class CreditCard;
@@ -99,6 +101,12 @@ class AutofillWebDataService : public AutofillWebData,
// |ShutdownOnUIThread()| is called.
base::SupportsUserData* GetDBUserData();
+ // Takes a callback which will be called on the DB thread with a pointer to an
+ // |AutofillWebdataBackend|. This backend can be used to access or update the
+ // WebDatabase directly on the DB thread.
+ void GetAutofillBackend(
+ const base::Callback<void(AutofillWebDataBackend*)>& callback);
+
protected:
virtual ~AutofillWebDataService();
@@ -126,7 +134,11 @@ class AutofillWebDataService : public AutofillWebData,
ObserverList<AutofillWebDataServiceObserverOnUIThread> ui_observer_list_;
- scoped_refptr<AutofillWebDataBackend> autofill_backend_;
+ // This factory is used on the UI thread. All vended weak pointers are
+ // invalidated in ShutdownOnUIThread().
+ base::WeakPtrFactory<AutofillWebDataService> weak_ptr_factory_;
+
+ scoped_refptr<AutofillWebDataBackendImpl> autofill_backend_;
DISALLOW_COPY_AND_ASSIGN(AutofillWebDataService);
};
diff --git a/components/autofill/renderer/autofill_agent.cc b/components/autofill/renderer/autofill_agent.cc
index 27795c41a8..eff68be26f 100644
--- a/components/autofill/renderer/autofill_agent.cc
+++ b/components/autofill/renderer/autofill_agent.cc
@@ -25,8 +25,7 @@
#include "content/public/common/password_form.h"
#include "content/public/common/ssl_status.h"
#include "content/public/renderer/render_view.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebURLRequest.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h"
diff --git a/components/autofill/renderer/form_cache.cc b/components/autofill/renderer/form_cache.cc
index 5d0bed0923..988aa3d10b 100644
--- a/components/autofill/renderer/form_cache.cc
+++ b/components/autofill/renderer/form_cache.cc
@@ -12,7 +12,7 @@
#include "components/autofill/common/form_field_data.h"
#include "components/autofill/common/form_field_data_predictions.h"
#include "components/autofill/renderer/form_autofill_util.h"
-#include "grit/generated_resources.h"
+#include "grit/component_resources.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
diff --git a/components/autofill_browser.target.darwin-arm.mk b/components/autofill_browser.target.darwin-arm.mk
index 9922a3a3d4..6bced9ceee 100644
--- a/components/autofill_browser.target.darwin-arm.mk
+++ b/components/autofill_browser.target.darwin-arm.mk
@@ -19,7 +19,7 @@ GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
- $(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+ $(call intermediates-dir-for,GYP,components_component_resources_gyp)/component_resources.stamp
GYP_GENERATED_OUTPUTS :=
@@ -86,7 +86,7 @@ LOCAL_SRC_FILES := \
components/autofill/browser/webdata/autofill_change.cc \
components/autofill/browser/webdata/autofill_entry.cc \
components/autofill/browser/webdata/autofill_table.cc \
- components/autofill/browser/webdata/autofill_webdata_backend.cc \
+ components/autofill/browser/webdata/autofill_webdata_backend_impl.cc \
components/autofill/browser/webdata/autofill_webdata_service.cc
@@ -146,7 +146,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DFEATURE_ENABLE_SSL' \
'-DFEATURE_ENABLE_VOICEMAIL' \
@@ -207,7 +207,7 @@ LOCAL_C_INCLUDES := \
$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
$(LOCAL_PATH)/third_party/libphonenumber/src \
$(gyp_shared_intermediate_dir)/webkit \
- $(gyp_shared_intermediate_dir)/chrome \
+ $(gyp_shared_intermediate_dir)/component_resources \
$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
diff --git a/components/autofill_browser.target.darwin-x86.mk b/components/autofill_browser.target.darwin-x86.mk
index 67df85279a..d87925861c 100644
--- a/components/autofill_browser.target.darwin-x86.mk
+++ b/components/autofill_browser.target.darwin-x86.mk
@@ -19,7 +19,7 @@ GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
- $(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+ $(call intermediates-dir-for,GYP,components_component_resources_gyp)/component_resources.stamp
GYP_GENERATED_OUTPUTS :=
@@ -86,7 +86,7 @@ LOCAL_SRC_FILES := \
components/autofill/browser/webdata/autofill_change.cc \
components/autofill/browser/webdata/autofill_entry.cc \
components/autofill/browser/webdata/autofill_table.cc \
- components/autofill/browser/webdata/autofill_webdata_backend.cc \
+ components/autofill/browser/webdata/autofill_webdata_backend_impl.cc \
components/autofill/browser/webdata/autofill_webdata_service.cc
@@ -148,7 +148,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DFEATURE_ENABLE_SSL' \
'-DFEATURE_ENABLE_VOICEMAIL' \
@@ -208,7 +208,7 @@ LOCAL_C_INCLUDES := \
$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
$(LOCAL_PATH)/third_party/libphonenumber/src \
$(gyp_shared_intermediate_dir)/webkit \
- $(gyp_shared_intermediate_dir)/chrome \
+ $(gyp_shared_intermediate_dir)/component_resources \
$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
diff --git a/components/autofill_browser.target.linux-arm.mk b/components/autofill_browser.target.linux-arm.mk
index 9922a3a3d4..6bced9ceee 100644
--- a/components/autofill_browser.target.linux-arm.mk
+++ b/components/autofill_browser.target.linux-arm.mk
@@ -19,7 +19,7 @@ GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
- $(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+ $(call intermediates-dir-for,GYP,components_component_resources_gyp)/component_resources.stamp
GYP_GENERATED_OUTPUTS :=
@@ -86,7 +86,7 @@ LOCAL_SRC_FILES := \
components/autofill/browser/webdata/autofill_change.cc \
components/autofill/browser/webdata/autofill_entry.cc \
components/autofill/browser/webdata/autofill_table.cc \
- components/autofill/browser/webdata/autofill_webdata_backend.cc \
+ components/autofill/browser/webdata/autofill_webdata_backend_impl.cc \
components/autofill/browser/webdata/autofill_webdata_service.cc
@@ -146,7 +146,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DFEATURE_ENABLE_SSL' \
'-DFEATURE_ENABLE_VOICEMAIL' \
@@ -207,7 +207,7 @@ LOCAL_C_INCLUDES := \
$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
$(LOCAL_PATH)/third_party/libphonenumber/src \
$(gyp_shared_intermediate_dir)/webkit \
- $(gyp_shared_intermediate_dir)/chrome \
+ $(gyp_shared_intermediate_dir)/component_resources \
$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
diff --git a/components/autofill_browser.target.linux-x86.mk b/components/autofill_browser.target.linux-x86.mk
index 67df85279a..d87925861c 100644
--- a/components/autofill_browser.target.linux-x86.mk
+++ b/components/autofill_browser.target.linux-x86.mk
@@ -19,7 +19,7 @@ GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
- $(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+ $(call intermediates-dir-for,GYP,components_component_resources_gyp)/component_resources.stamp
GYP_GENERATED_OUTPUTS :=
@@ -86,7 +86,7 @@ LOCAL_SRC_FILES := \
components/autofill/browser/webdata/autofill_change.cc \
components/autofill/browser/webdata/autofill_entry.cc \
components/autofill/browser/webdata/autofill_table.cc \
- components/autofill/browser/webdata/autofill_webdata_backend.cc \
+ components/autofill/browser/webdata/autofill_webdata_backend_impl.cc \
components/autofill/browser/webdata/autofill_webdata_service.cc
@@ -148,7 +148,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DFEATURE_ENABLE_SSL' \
'-DFEATURE_ENABLE_VOICEMAIL' \
@@ -208,7 +208,7 @@ LOCAL_C_INCLUDES := \
$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
$(LOCAL_PATH)/third_party/libphonenumber/src \
$(gyp_shared_intermediate_dir)/webkit \
- $(gyp_shared_intermediate_dir)/chrome \
+ $(gyp_shared_intermediate_dir)/component_resources \
$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
diff --git a/components/autofill_common.target.darwin-arm.mk b/components/autofill_common.target.darwin-arm.mk
index c48d85ad68..99f67904ed 100644
--- a/components/autofill_common.target.darwin-arm.mk
+++ b/components/autofill_common.target.darwin-arm.mk
@@ -96,7 +96,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DPOSIX_AVOID_MMAP' \
'-D__STDC_CONSTANT_MACROS' \
diff --git a/components/autofill_common.target.darwin-x86.mk b/components/autofill_common.target.darwin-x86.mk
index ddc5eac489..a5604bc5e3 100644
--- a/components/autofill_common.target.darwin-x86.mk
+++ b/components/autofill_common.target.darwin-x86.mk
@@ -98,7 +98,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/autofill_common.target.linux-arm.mk b/components/autofill_common.target.linux-arm.mk
index c48d85ad68..99f67904ed 100644
--- a/components/autofill_common.target.linux-arm.mk
+++ b/components/autofill_common.target.linux-arm.mk
@@ -96,7 +96,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DPOSIX_AVOID_MMAP' \
'-D__STDC_CONSTANT_MACROS' \
diff --git a/components/autofill_common.target.linux-x86.mk b/components/autofill_common.target.linux-x86.mk
index ddc5eac489..a5604bc5e3 100644
--- a/components/autofill_common.target.linux-x86.mk
+++ b/components/autofill_common.target.linux-x86.mk
@@ -98,7 +98,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/component_resources.grd b/components/component_resources.grd
new file mode 100644
index 0000000000..61d32395d2
--- /dev/null
+++ b/components/component_resources.grd
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<grit latest_public_release="0" current_release="1"
+ source_lang_id="en" enc_check="möl">
+ <outputs>
+ <output filename="grit/component_resources.h" type="rc_header">
+ <emit emit_type='prepend'></emit>
+ </output>
+ <output filename="component_resources_am.pak" type="data_package" lang="am" />
+ <output filename="component_resources_ar.pak" type="data_package" lang="ar" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_ast.pak" type="data_package" lang="ast" />
+ </if>
+ <output filename="component_resources_bg.pak" type="data_package" lang="bg" />
+ <output filename="component_resources_bn.pak" type="data_package" lang="bn" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_bs.pak" type="data_package" lang="bs" />
+ </if>
+ <output filename="component_resources_ca.pak" type="data_package" lang="ca" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_ca@valencia.pak" type="data_package" lang="ca@valencia" />
+ </if>
+ <output filename="component_resources_cs.pak" type="data_package" lang="cs" />
+ <output filename="component_resources_da.pak" type="data_package" lang="da" />
+ <output filename="component_resources_de.pak" type="data_package" lang="de" />
+ <output filename="component_resources_el.pak" type="data_package" lang="el" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_en-AU.pak" type="data_package" lang="en-AU" />
+ </if>
+ <output filename="component_resources_en-GB.pak" type="data_package" lang="en-GB" />
+ <output filename="component_resources_en-US.pak" type="data_package" lang="en" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_eo.pak" type="data_package" lang="eo" />
+ </if>
+ <output filename="component_resources_es.pak" type="data_package" lang="es" />
+ <output filename="component_resources_es-419.pak" type="data_package" lang="es-419" />
+ <output filename="component_resources_et.pak" type="data_package" lang="et" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_eu.pak" type="data_package" lang="eu" />
+ </if>
+ <output filename="component_resources_fa.pak" type="data_package" lang="fa" />
+ <output filename="component_resources_fake-bidi.pak" type="data_package" lang="fake-bidi" />
+ <output filename="component_resources_fi.pak" type="data_package" lang="fi" />
+ <output filename="component_resources_fil.pak" type="data_package" lang="fil" />
+ <output filename="component_resources_fr.pak" type="data_package" lang="fr" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_gl.pak" type="data_package" lang="gl" />
+ </if>
+ <output filename="component_resources_gu.pak" type="data_package" lang="gu" />
+ <output filename="component_resources_he.pak" type="data_package" lang="he" />
+ <output filename="component_resources_hi.pak" type="data_package" lang="hi" />
+ <output filename="component_resources_hr.pak" type="data_package" lang="hr" />
+ <output filename="component_resources_hu.pak" type="data_package" lang="hu" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_hy.pak" type="data_package" lang="hy" />
+ <output filename="component_resources_ia.pak" type="data_package" lang="ia" />
+ </if>
+ <output filename="component_resources_id.pak" type="data_package" lang="id" />
+ <output filename="component_resources_it.pak" type="data_package" lang="it" />
+ <output filename="component_resources_ja.pak" type="data_package" lang="ja" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_ka.pak" type="data_package" lang="ka" />
+ </if>
+ <output filename="component_resources_kn.pak" type="data_package" lang="kn" />
+ <output filename="component_resources_ko.pak" type="data_package" lang="ko" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_ku.pak" type="data_package" lang="ku" />
+ <output filename="component_resources_kw.pak" type="data_package" lang="kw" />
+ </if>
+ <output filename="component_resources_lt.pak" type="data_package" lang="lt" />
+ <output filename="component_resources_lv.pak" type="data_package" lang="lv" />
+ <output filename="component_resources_ml.pak" type="data_package" lang="ml" />
+ <output filename="component_resources_mr.pak" type="data_package" lang="mr" />
+ <output filename="component_resources_ms.pak" type="data_package" lang="ms" />
+ <output filename="component_resources_nl.pak" type="data_package" lang="nl" />
+ <!-- The translation console uses 'no' for Norwegian Bokmål. It should
+ be 'nb'. -->
+ <output filename="component_resources_nb.pak" type="data_package" lang="no" />
+ <output filename="component_resources_pl.pak" type="data_package" lang="pl" />
+ <if expr="pp_ifdef('ios')">
+ <!-- iOS uses pt for pt-BR -->
+ <output filename="component_resources_pt.pak" type="data_package" lang="pt-BR" />
+ </if>
+ <if expr="not pp_ifdef('ios')">
+ <output filename="component_resources_pt-BR.pak" type="data_package" lang="pt-BR" />
+ </if>
+ <output filename="component_resources_pt-PT.pak" type="data_package" lang="pt-PT" />
+ <output filename="component_resources_ro.pak" type="data_package" lang="ro" />
+ <output filename="component_resources_ru.pak" type="data_package" lang="ru" />
+ <output filename="component_resources_sk.pak" type="data_package" lang="sk" />
+ <output filename="component_resources_sl.pak" type="data_package" lang="sl" />
+ <output filename="component_resources_sr.pak" type="data_package" lang="sr" />
+ <output filename="component_resources_sv.pak" type="data_package" lang="sv" />
+ <output filename="component_resources_sw.pak" type="data_package" lang="sw" />
+ <output filename="component_resources_ta.pak" type="data_package" lang="ta" />
+ <output filename="component_resources_te.pak" type="data_package" lang="te" />
+ <output filename="component_resources_th.pak" type="data_package" lang="th" />
+ <output filename="component_resources_tr.pak" type="data_package" lang="tr" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="component_resources_ug.pak" type="data_package" lang="ug" />
+ </if>
+ <output filename="component_resources_uk.pak" type="data_package" lang="uk" />
+ <output filename="component_resources_vi.pak" type="data_package" lang="vi" />
+ <output filename="component_resources_zh-CN.pak" type="data_package" lang="zh-CN" />
+ <output filename="component_resources_zh-TW.pak" type="data_package" lang="zh-TW" />
+ </outputs>
+ <release seq="1" allow_pseudo="false">
+ <messages fallback_to_english="true">
+ <message name="IDS_AUTOFILL_CLEAR_FORM_MENU_ITEM" desc="The entry in the suggestions dropdown that clears an auto-filled form.">
+ Clear form
+ </message>
+ <message name="IDS_AUTOFILL_WARNING_FORM_DISABLED" desc="Warning text to show when autofill is disabled by the website for a given form.">
+ This webpage has disabled automatic filling for this form.
+ </message>
+ <message name="IDS_AUTOFILL_WARNING_INSECURE_CONNECTION" desc="Warning text to show when credit card autofill is disabled because the website is not using a secure connection.">
+ Automatic credit card filling is disabled because this form does not use a secure connection.
+ </message>
+ <message name="IDS_AUTOFILL_CC_AMEX" desc="American Express credit card name.">
+ American Express
+ </message>
+ <message name="IDS_AUTOFILL_CC_DINERS" desc="Diners Club credit card name.">
+ Diners Club
+ </message>
+ <message name="IDS_AUTOFILL_CC_DISCOVER" desc="Discover credit card name.">
+ Discover
+ </message>
+ <message name="IDS_AUTOFILL_CC_JCB" desc="JCB credit card name.">
+ JCB
+ </message>
+ <message name="IDS_AUTOFILL_CC_MASTERCARD" desc="MasterCard credit card name.">
+ MasterCard
+ </message>
+ <message name="IDS_AUTOFILL_CC_SOLO" desc="Solo debit card name.">
+ Solo
+ </message>
+ <message name="IDS_AUTOFILL_CC_VISA" desc="Visa credit card name.">
+ Visa
+ </message>
+ <message name="IDS_AUTOFILL_MAC_ADDRESS_LINE_SEPARATOR" desc="The separator character used to join multi-line addresses on the Mac.">
+ , '''
+ </message>
+ <message name="IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR" desc="The separator character used in the summary of an address.">
+ , '''
+ </message>
+ <message name="IDS_CREDIT_CARD_NUMBER_PREVIEW_FORMAT"
+ desc="Credit card preview format">
+ <ph name="OBFUSCATED_CC_NUMBER">$1<ex>************1234</ex>
+ </ph>, Exp: <ph name="CC_EXPIRATION_DATE">$2<ex>03/2020</ex>
+ </ph>
+ </message>
+
+ <!-- These are all variants of the same logical field: The major subdivision below the "country" level. -->
+ <message name="IDS_AUTOFILL_FIELD_LABEL_STATE" desc="The label of the State entry.">
+ State
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_AREA" desc="The label of the Area entry.">
+ Area
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_COUNTY" desc="The label of the County entry.">
+ County
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_DEPARTMENT" desc="The label of the Department entry.">
+ Department
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_DISTRICT" desc="The label of the District entry.">
+ District
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_EMIRATE" desc="The label of the Emirate entry.">
+ Emirate
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_ISLAND" desc="The label of the Island entry.">
+ Island
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_PARISH" desc="The label of the Parish entry.">
+ Parish
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_PREFECTURE" desc="The label of the Prefecture entry.">
+ Prefecture
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_PROVINCE" desc="The label of the Province entry.">
+ Province
+ </message>
+ <!-- End state variants. -->
+ <message name="IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE" desc="The label of the ZIP code entry.">
+ ZIP code
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE" desc="The label of the Postal code entry.">
+ Postal code
+ </message>
+ <message name="IDS_AUTOFILL_FIELD_LABEL_COUNTRY" desc="The label of the Country entry.">
+ Country
+ </message>
+
+ <message name="IDS_AUTOFILL_SHOW_PREDICTIONS_TITLE" desc="The title for form elements when annotated with Autofill predictions.">
+heuristic type: <ph name="HEURISTIC_TYPE">$1<ex>NAME_FIRST</ex></ph>
+server type: <ph name="SERVER_TYPE">$2<ex>NAME_FIRST</ex></ph>
+field signature: <ph name="FIELD_SIGNATURE">$3<ex>12345678</ex></ph>
+form signature: <ph name="FORM_SIGNATURE">$4<ex>1234567812345678</ex></ph>
+experiment id: "<ph name="EXPERIMENT_ID">$5<ex>ar1</ex></ph>"
+ </message>
+
+ <!-- Autofill dialog: legal documents -->
+ <message name="IDS_AUTOFILL_DIALOG_PRIVACY_POLICY_LINK" desc="The text of an extra link that is appended to the end of whatever other legal documents need to be accepted or updated.">
+ Privacy Policy
+ </message>
+
+ <message name="IDS_AUTOFILL_OPTIONS_POPUP" desc="The value of the Autofill options menu entry.">
+ Chrome Autofill settings
+ </message>
+ </messages>
+ </release>
+</grit>
diff --git a/components/component_resources.gyp b/components/component_resources.gyp
new file mode 100644
index 0000000000..94839c1f48
--- /dev/null
+++ b/components/component_resources.gyp
@@ -0,0 +1,30 @@
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'variables': {
+ 'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome',
+ },
+ 'targets': [
+ {
+ 'target_name': 'component_resources',
+ 'type': 'none',
+ 'actions': [
+ {
+ 'action_name': 'component_resources',
+ 'variables': {
+ 'grit_grd_file': 'component_resources.grd',
+ 'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/component_resources',
+ },
+ 'includes': [ '../build/grit_action.gypi' ],
+ },
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(SHARED_INTERMEDIATE_DIR)/component_resources',
+ ],
+ },
+ },
+ ],
+}
diff --git a/components/component_resources.target.darwin-arm.mk b/components/component_resources.target.darwin-arm.mk
new file mode 100644
index 0000000000..e7db866e09
--- /dev/null
+++ b/components/component_resources.target.darwin-arm.mk
@@ -0,0 +1,158 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_component_resources_gyp
+LOCAL_MODULE_STEM := component_resources
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "component_resources":
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/components/component_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/clique_unittest.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/c_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_writer_base_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/gather/txt_unittest.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grd_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/grit_runner_unittest.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/lazy_re_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/base_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/include_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/io_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/message_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/misc_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/structure_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/pseudo_unittest.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/tclib_unittest.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/build_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb_unittest.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/util_unittest.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from component_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir)/component_resources/grit $(gyp_shared_intermediate_dir)/component_resources; python ../tools/grit/grit.py -i component_resources.grd build -f ../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/component_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_component_resources_gyp
+
+# Alias gyp target name.
+.PHONY: component_resources
+component_resources: components_component_resources_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/components/component_resources.target.darwin-x86.mk b/components/component_resources.target.darwin-x86.mk
new file mode 100644
index 0000000000..e7db866e09
--- /dev/null
+++ b/components/component_resources.target.darwin-x86.mk
@@ -0,0 +1,158 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_component_resources_gyp
+LOCAL_MODULE_STEM := component_resources
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "component_resources":
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/components/component_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/clique_unittest.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/c_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_writer_base_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/gather/txt_unittest.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grd_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/grit_runner_unittest.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/lazy_re_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/base_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/include_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/io_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/message_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/misc_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/structure_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/pseudo_unittest.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/tclib_unittest.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/build_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb_unittest.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/util_unittest.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from component_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir)/component_resources/grit $(gyp_shared_intermediate_dir)/component_resources; python ../tools/grit/grit.py -i component_resources.grd build -f ../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/component_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_component_resources_gyp
+
+# Alias gyp target name.
+.PHONY: component_resources
+component_resources: components_component_resources_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/components/component_resources.target.linux-arm.mk b/components/component_resources.target.linux-arm.mk
new file mode 100644
index 0000000000..e7db866e09
--- /dev/null
+++ b/components/component_resources.target.linux-arm.mk
@@ -0,0 +1,158 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_component_resources_gyp
+LOCAL_MODULE_STEM := component_resources
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "component_resources":
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/components/component_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/clique_unittest.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/c_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_writer_base_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/gather/txt_unittest.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grd_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/grit_runner_unittest.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/lazy_re_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/base_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/include_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/io_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/message_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/misc_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/structure_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/pseudo_unittest.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/tclib_unittest.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/build_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb_unittest.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/util_unittest.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from component_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir)/component_resources/grit $(gyp_shared_intermediate_dir)/component_resources; python ../tools/grit/grit.py -i component_resources.grd build -f ../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/component_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_component_resources_gyp
+
+# Alias gyp target name.
+.PHONY: component_resources
+component_resources: components_component_resources_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/components/component_resources.target.linux-x86.mk b/components/component_resources.target.linux-x86.mk
new file mode 100644
index 0000000000..e7db866e09
--- /dev/null
+++ b/components/component_resources.target.linux-x86.mk
@@ -0,0 +1,158 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_component_resources_gyp
+LOCAL_MODULE_STEM := component_resources
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "component_resources":
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/components/component_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/clique_unittest.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/c_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_writer_base_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/rc_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html_unittest.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/gather/txt_unittest.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grd_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/grit_runner_unittest.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/lazy_re_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/base_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/include_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/io_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/message_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/misc_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/structure_unittest.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/pseudo_unittest.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/tclib_unittest.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/build_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc_unittest.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb_unittest.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/util_unittest.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader_unittest.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from component_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir)/component_resources/grit $(gyp_shared_intermediate_dir)/component_resources; python ../tools/grit/grit.py -i component_resources.grd build -f ../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/component_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+$(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak: $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/component_resources/grit/component_resources.h \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_am.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ar.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bg.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_bn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ca.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_cs.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_da.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_de.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_el.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_en-US.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_es-419.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_et.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fa.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fil.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_fr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_gu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_he.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_hu.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_id.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_it.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ja.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_kn.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ko.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lt.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_lv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ml.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_mr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ms.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_nb.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ro.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ru.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sl.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sv.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_sw.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_ta.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_te.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_th.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_tr.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_uk.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_vi.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/component_resources/component_resources_zh-TW.pak
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_component_resources_gyp
+
+# Alias gyp target name.
+.PHONY: component_resources
+component_resources: components_component_resources_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/components/tracing/child_trace_message_filter.cc b/components/tracing/child_trace_message_filter.cc
index c8d3147543..154903a15d 100644
--- a/components/tracing/child_trace_message_filter.cc
+++ b/components/tracing/child_trace_message_filter.cc
@@ -5,12 +5,12 @@
#include "components/tracing/child_trace_message_filter.h"
#include "base/debug/trace_event.h"
-#include "base/message_loop_proxy.h"
+#include "base/message_loop/message_loop_proxy.h"
#include "components/tracing/tracing_messages.h"
using base::debug::TraceLog;
-namespace components {
+namespace tracing {
ChildTraceMessageFilter::ChildTraceMessageFilter(
base::MessageLoopProxy* ipc_message_loop)
@@ -115,4 +115,4 @@ void ChildTraceMessageFilter::OnTraceNotification(int notification) {
channel_->Send(new TracingHostMsg_TraceNotification(notification));
}
-} // namespace components
+} // namespace tracing
diff --git a/components/tracing/child_trace_message_filter.h b/components/tracing/child_trace_message_filter.h
index 9f3f03aa41..3da936f1da 100644
--- a/components/tracing/child_trace_message_filter.h
+++ b/components/tracing/child_trace_message_filter.h
@@ -11,7 +11,7 @@ namespace base {
class MessageLoopProxy;
}
-namespace components {
+namespace tracing {
// This class sends and receives trace messages on child processes.
class ChildTraceMessageFilter : public IPC::ChannelProxy::MessageFilter {
@@ -48,6 +48,6 @@ class ChildTraceMessageFilter : public IPC::ChannelProxy::MessageFilter {
DISALLOW_COPY_AND_ASSIGN(ChildTraceMessageFilter);
};
-} // namespace components
+} // namespace tracing
#endif // COMPONENTS_TRACING_CHILD_TRACE_MESSAGE_FILTER_H_
diff --git a/components/visitedlink_renderer.target.darwin-arm.mk b/components/visitedlink_renderer.target.darwin-arm.mk
index 5a6f157cc6..204a168cae 100644
--- a/components/visitedlink_renderer.target.darwin-arm.mk
+++ b/components/visitedlink_renderer.target.darwin-arm.mk
@@ -80,7 +80,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/visitedlink_renderer.target.darwin-x86.mk b/components/visitedlink_renderer.target.darwin-x86.mk
index 64481430a0..ed44a44c3e 100644
--- a/components/visitedlink_renderer.target.darwin-x86.mk
+++ b/components/visitedlink_renderer.target.darwin-x86.mk
@@ -82,7 +82,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/visitedlink_renderer.target.linux-arm.mk b/components/visitedlink_renderer.target.linux-arm.mk
index 5a6f157cc6..204a168cae 100644
--- a/components/visitedlink_renderer.target.linux-arm.mk
+++ b/components/visitedlink_renderer.target.linux-arm.mk
@@ -80,7 +80,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/visitedlink_renderer.target.linux-x86.mk b/components/visitedlink_renderer.target.linux-x86.mk
index 64481430a0..ed44a44c3e 100644
--- a/components/visitedlink_renderer.target.linux-x86.mk
+++ b/components/visitedlink_renderer.target.linux-x86.mk
@@ -82,7 +82,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/web_contents_delegate_android.target.darwin-arm.mk b/components/web_contents_delegate_android.target.darwin-arm.mk
index 909f593706..5bbe26dcae 100644
--- a/components/web_contents_delegate_android.target.darwin-arm.mk
+++ b/components/web_contents_delegate_android.target.darwin-arm.mk
@@ -86,7 +86,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/web_contents_delegate_android.target.darwin-x86.mk b/components/web_contents_delegate_android.target.darwin-x86.mk
index 55871dfab3..d6bf47f926 100644
--- a/components/web_contents_delegate_android.target.darwin-x86.mk
+++ b/components/web_contents_delegate_android.target.darwin-x86.mk
@@ -87,7 +87,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/web_contents_delegate_android.target.linux-arm.mk b/components/web_contents_delegate_android.target.linux-arm.mk
index 909f593706..5bbe26dcae 100644
--- a/components/web_contents_delegate_android.target.linux-arm.mk
+++ b/components/web_contents_delegate_android.target.linux-arm.mk
@@ -86,7 +86,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/web_contents_delegate_android.target.linux-x86.mk b/components/web_contents_delegate_android.target.linux-x86.mk
index 55871dfab3..d6bf47f926 100644
--- a/components/web_contents_delegate_android.target.linux-x86.mk
+++ b/components/web_contents_delegate_android.target.linux-x86.mk
@@ -87,7 +87,7 @@ MY_DEFS := \
'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
'-DSK_ENABLE_INST_COUNT=0' \
'-DSK_USE_POSIX_THREADS' \
- '-DSK_BUILD_FOR_ANDROID_NDK' \
+ '-DSK_BUILD_FOR_ANDROID' \
'-DU_USING_ICU_NAMESPACE=0' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
diff --git a/components/webdata/common/web_data_service_backend.cc b/components/webdata/common/web_data_service_backend.cc
index 3b945b0b54..300b182bc8 100644
--- a/components/webdata/common/web_data_service_backend.cc
+++ b/components/webdata/common/web_data_service_backend.cc
@@ -73,23 +73,40 @@ void WebDataServiceBackend::ShutdownDatabase(bool should_reinit) {
void WebDataServiceBackend::DBWriteTaskWrapper(
const WebDatabaseService::WriteTask& task,
scoped_ptr<WebDataRequest> request) {
+ if (request->IsCancelled())
+ return;
+
+ ExecuteWriteTask(task);
+ request_manager_->RequestCompleted(request.Pass());
+}
+
+void WebDataServiceBackend::ExecuteWriteTask(
+ const WebDatabaseService::WriteTask& task) {
LoadDatabaseIfNecessary();
- if (db_ && init_status_ == sql::INIT_OK && !request->IsCancelled()) {
+ if (db_ && init_status_ == sql::INIT_OK) {
WebDatabase::State state = task.Run(db_.get());
if (state == WebDatabase::COMMIT_NEEDED)
Commit();
}
- request_manager_->RequestCompleted(request.Pass());
}
void WebDataServiceBackend::DBReadTaskWrapper(
const WebDatabaseService::ReadTask& task,
scoped_ptr<WebDataRequest> request) {
+ if (request->IsCancelled())
+ return;
+
+ request->SetResult(ExecuteReadTask(task).Pass());
+ request_manager_->RequestCompleted(request.Pass());
+}
+
+scoped_ptr<WDTypedResult> WebDataServiceBackend::ExecuteReadTask(
+ const WebDatabaseService::ReadTask& task) {
LoadDatabaseIfNecessary();
- if (db_ && init_status_ == sql::INIT_OK && !request->IsCancelled()) {
- request->SetResult(task.Run(db_.get()).Pass());
+ if (db_ && init_status_ == sql::INIT_OK) {
+ return task.Run(db_.get());
}
- request_manager_->RequestCompleted(request.Pass());
+ return scoped_ptr<WDTypedResult>(NULL);
}
WebDataServiceBackend::~WebDataServiceBackend() {
diff --git a/components/webdata/common/web_data_service_backend.h b/components/webdata/common/web_data_service_backend.h
index 0e1d8f247e..c12ade6eda 100644
--- a/components/webdata/common/web_data_service_backend.h
+++ b/components/webdata/common/web_data_service_backend.h
@@ -13,6 +13,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "components/webdata/common/web_database_service.h"
+#include "components/webdata/common/webdata_export.h"
#include "content/public/browser/browser_thread.h"
@@ -29,7 +30,9 @@ class Location;
// WebDatabaseService. It is refcounted to allow asynchronous destruction on the
// DB thread.
-class WebDataServiceBackend
+// TODO(caitkp): Rename this class to WebDatabaseBackend.
+
+class WEBDATA_EXPORT WebDataServiceBackend
: public base::RefCountedThreadSafe<
WebDataServiceBackend,
content::BrowserThread::DeleteOnDBThread> {
@@ -62,7 +65,10 @@ class WebDataServiceBackend
// possible to re-initialize the DB after the shutdown.
void ShutdownDatabase(bool should_reinit);
- // Task wrappers to run database tasks.
+ // Task wrappers to update requests and and notify |request_manager_|. These
+ // are used in cases where the request is being made from the UI thread and an
+ // asyncronous callback is required to notify the client of |request|'s
+ // completion.
void DBWriteTaskWrapper(
const WebDatabaseService::WriteTask& task,
scoped_ptr<WebDataRequest> request);
@@ -70,18 +76,28 @@ class WebDataServiceBackend
const WebDatabaseService::ReadTask& task,
scoped_ptr<WebDataRequest> request);
+ // Task runners to run database tasks.
+ void ExecuteWriteTask(const WebDatabaseService::WriteTask& task);
+ scoped_ptr<WDTypedResult> ExecuteReadTask(
+ const WebDatabaseService::ReadTask& task);
+
const scoped_refptr<WebDataRequestManager>& request_manager() {
return request_manager_;
}
WebDatabase* database() { return db_.get(); }
+ protected:
+ virtual ~WebDataServiceBackend();
+
private:
friend struct content::BrowserThread::DeleteOnThread<
content::BrowserThread::DB>;
friend class base::DeleteHelper<WebDataServiceBackend>;
-
- virtual ~WebDataServiceBackend();
+ // We have to friend RCTS<> so WIN shared-lib build is happy
+ // (http://crbug/112250).
+ friend class base::RefCountedThreadSafe<WebDataServiceBackend,
+ content::BrowserThread::DeleteOnDBThread>;
// Commit the current transaction.
void Commit();
diff --git a/components/webdata/common/web_database_service.cc b/components/webdata/common/web_database_service.cc
index baef346b11..ddbf7338f4 100644
--- a/components/webdata/common/web_database_service.cc
+++ b/components/webdata/common/web_database_service.cc
@@ -91,6 +91,10 @@ WebDatabase* WebDatabaseService::GetDatabaseOnDB() const {
return wds_backend_->database();
}
+scoped_refptr<WebDataServiceBackend> WebDatabaseService::GetBackend() const {
+ return wds_backend_;
+}
+
void WebDatabaseService::ScheduleDBTask(
const tracked_objects::Location& from_here,
const WriteTask& task) {
diff --git a/components/webdata/common/web_database_service.h b/components/webdata/common/web_database_service.h
index 1bdfca8504..c8b1bfa0f4 100644
--- a/components/webdata/common/web_database_service.h
+++ b/components/webdata/common/web_database_service.h
@@ -71,10 +71,13 @@ class WEBDATA_EXPORT WebDatabaseService
// Unloads database and will not reload.
virtual void ShutdownDatabase();
- // Gets a ptr to the WebDatabase (owned by WebDatabaseService).
+ // Gets a pointer to the WebDatabase (owned by WebDatabaseService).
// TODO(caitkp): remove this method once SyncServices no longer depend on it.
virtual WebDatabase* GetDatabaseOnDB() const;
+ // Returns a pointer to the WebDataServiceBackend.
+ scoped_refptr<WebDataServiceBackend> GetBackend() const;
+
// Schedule an update/write task on the DB thread.
virtual void ScheduleDBTask(
const tracked_objects::Location& from_here,