Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1866)

Unified Diff: components/variations/service/ui_string_overrider.cc

Issue 1363243004: Allow embedders to share code to override UI strings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add comment to test and class and fix typo Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/variations/service/ui_string_overrider.cc
diff --git a/components/variations/service/ui_string_overrider.cc b/components/variations/service/ui_string_overrider.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ec573f521f833c24214859080b8b9fd8e8f2899d
--- /dev/null
+++ b/components/variations/service/ui_string_overrider.cc
@@ -0,0 +1,51 @@
+// Copyright 2015 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.
+
+#include "components/variations/service/ui_string_overrider.h"
+
+#include <algorithm>
+
+#include "base/logging.h"
+#include "ui/base/resource/resource_bundle.h"
+
+namespace variations {
+
+UIStringOverrider::UIStringOverrider()
+ : resource_hashes_(nullptr),
+ resource_indices_(nullptr),
+ num_resources_(0) {}
+
+UIStringOverrider::UIStringOverrider(const uint32_t* resource_hashes,
+ const int* resource_indices,
+ size_t num_resources)
+ : resource_hashes_(resource_hashes),
+ resource_indices_(resource_indices),
+ num_resources_(num_resources) {
+ DCHECK(!num_resources || resource_hashes_);
+ DCHECK(!num_resources || resource_indices_);
+}
+
+UIStringOverrider::~UIStringOverrider() {}
+
+int UIStringOverrider::GetResourceIndex(uint32_t hash) {
+ if (!num_resources_)
+ return -1;
+ const uint32_t* end = resource_hashes_ + num_resources_;
+ const uint32_t* element = std::lower_bound(resource_hashes_, end, hash);
+ if (element == end || *element != hash)
+ return -1;
+ return resource_indices_[element - resource_hashes_];
+}
+
+void UIStringOverrider::OverrideUIString(uint32_t hash,
+ const base::string16& string) {
+ int resource_id = GetResourceIndex(hash);
+ if (resource_id == -1)
+ return;
+
+ ui::ResourceBundle::GetSharedInstance().OverrideLocaleStringResource(
+ resource_id, string);
+}
+
+} // namespace variations
« no previous file with comments | « components/variations/service/ui_string_overrider.h ('k') | components/variations/service/variations_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698