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

Unified Diff: third_party/libaddressinput/chromium/cpp/src/validating_storage.cc

Issue 110533002: [rac] Temporarily copy libaddressinput to Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Avoid redefinition of basictypes.h Created 7 years 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: third_party/libaddressinput/chromium/cpp/src/validating_storage.cc
diff --git a/third_party/libaddressinput/chromium/cpp/src/validating_storage.cc b/third_party/libaddressinput/chromium/cpp/src/validating_storage.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1399299fe22cc99a7a2d8d21c9ecbf9f11f4c93e
--- /dev/null
+++ b/third_party/libaddressinput/chromium/cpp/src/validating_storage.cc
@@ -0,0 +1,89 @@
+// Copyright (C) 2013 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// ValidatingStorage saves data with checksum and timestamp using
+// ValidatingUtil.
+
+#include "validating_storage.h"
+
+#include <libaddressinput/callback.h>
+#include <libaddressinput/storage.h>
+#include <libaddressinput/util/basictypes.h>
+#include <libaddressinput/util/scoped_ptr.h>
+
+#include <cassert>
+#include <cstddef>
+#include <ctime>
+#include <string>
+
+#include "validating_util.h"
+
+namespace i18n {
+namespace addressinput {
+
+namespace {
+
+class Helper {
+ public:
+ Helper(const std::string& key,
+ const Storage::Callback& data_ready,
+ const Storage& wrapped_storage)
+ : data_ready_(data_ready),
+ wrapped_data_ready_(BuildCallback(this, &Helper::OnWrappedDataReady)) {
+ wrapped_storage.Get(key, *wrapped_data_ready_);
+ }
+
+ private:
+ ~Helper() {}
+
+ void OnWrappedDataReady(bool success,
+ const std::string& key,
+ const std::string& wrapped_data) {
+ std::string data(wrapped_data);
+ if (!success ||
+ !ValidatingUtil::UnwrapTimestamp(&data, time(NULL)) ||
+ !ValidatingUtil::UnwrapChecksum(&data)) {
+ data_ready_(false, key, std::string());
+ } else {
+ data_ready_(true, key, data);
+ }
+ delete this;
+ }
+
+ const Storage::Callback& data_ready_;
+ scoped_ptr<Storage::Callback> wrapped_data_ready_;
+
+ DISALLOW_COPY_AND_ASSIGN(Helper);
+};
+
+} // namespace
+
+ValidatingStorage::ValidatingStorage(Storage* storage)
+ : wrapped_storage_(storage) {
+ assert(wrapped_storage_ != NULL);
+}
+
+ValidatingStorage::~ValidatingStorage() {}
+
+void ValidatingStorage::Put(const std::string& key, const std::string& data) {
+ wrapped_storage_->Put(key, ValidatingUtil::Wrap(data, time(NULL)));
+}
+
+void ValidatingStorage::Get(const std::string& key,
+ const Callback& data_ready) const {
+ new Helper(key, data_ready, *wrapped_storage_);
+}
+
+} // namespace addressinput
+} // namespace i18n

Powered by Google App Engine
This is Rietveld 408576698