summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-28 22:05:21 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-28 22:05:21 +0000
commit4837913958416b8cd4c0df935cdd8a8538c8d3ae (patch)
tree440243f1bce15db7f3b48f08766f6f9f90ce3144 /chrome/browser/sync
parent7cce9f23206ece200b725512393741f1bb332841 (diff)
downloadchromium_src-4837913958416b8cd4c0df935cdd8a8538c8d3ae.zip
chromium_src-4837913958416b8cd4c0df935cdd8a8538c8d3ae.tar.gz
chromium_src-4837913958416b8cd4c0df935cdd8a8538c8d3ae.tar.bz2
[Sync] Convert ModelTypeBitSetFromString to not use streams.
BUG=74051 TEST=sync_unit_test Review URL: http://codereview.chromium.org/6578039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76272 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync')
-rw-r--r--chrome/browser/sync/syncable/model_type.cc15
-rw-r--r--chrome/browser/sync/syncable/model_type_unittest.cc21
2 files changed, 27 insertions, 9 deletions
diff --git a/chrome/browser/sync/syncable/model_type.cc b/chrome/browser/sync/syncable/model_type.cc
index 35a4c06..e8995e8 100644
--- a/chrome/browser/sync/syncable/model_type.cc
+++ b/chrome/browser/sync/syncable/model_type.cc
@@ -4,8 +4,6 @@
#include "chrome/browser/sync/syncable/model_type.h"
-#include <sstream>
-
#include "base/metrics/histogram.h"
#include "base/values.h"
#include "chrome/browser/sync/engine/syncproto.h"
@@ -260,14 +258,13 @@ ModelType ModelTypeFromString(const std::string& model_type_string) {
bool ModelTypeBitSetFromString(
const std::string& model_type_bitset_string,
ModelTypeBitSet* model_types) {
- if (model_type_bitset_string.length() != MODEL_TYPE_COUNT) {
+ DCHECK(model_types);
+ if (model_type_bitset_string.length() != MODEL_TYPE_COUNT)
return false;
- }
-
- std::istringstream iss(model_type_bitset_string);
- iss >> *model_types;
- iss.peek(); // Need to peek before checking EOF.
- return iss.eof();
+ if (model_type_bitset_string.find_first_not_of("01") != std::string::npos)
+ return false;
+ *model_types = ModelTypeBitSet(model_type_bitset_string);
+ return true;
}
ListValue* ModelTypeBitSetToValue(const ModelTypeBitSet& model_types) {
diff --git a/chrome/browser/sync/syncable/model_type_unittest.cc b/chrome/browser/sync/syncable/model_type_unittest.cc
index 59ed1f9..df8ca8d 100644
--- a/chrome/browser/sync/syncable/model_type_unittest.cc
+++ b/chrome/browser/sync/syncable/model_type_unittest.cc
@@ -43,5 +43,26 @@ TEST_F(ModelTypeTest, ModelTypeSetToValue) {
EXPECT_EQ("Apps", types[1]);
}
+TEST_F(ModelTypeTest, ModelTypeBitSetFromString) {
+ ModelTypeBitSet input, output;
+ input.set(BOOKMARKS);
+ input.set(AUTOFILL);
+ input.set(APPS);
+ std::string input_string = input.to_string();
+ EXPECT_TRUE(ModelTypeBitSetFromString(input_string, &output));
+ EXPECT_EQ(input, output);
+
+ input_string.clear();
+ EXPECT_FALSE(ModelTypeBitSetFromString(input_string, &output));
+
+ input_string = "hello world";
+ EXPECT_FALSE(ModelTypeBitSetFromString(input_string, &output));
+
+ input_string.clear();
+ for (int i = 0; i < MODEL_TYPE_COUNT; ++i)
+ input_string += '0' + (i%10);
+ EXPECT_FALSE(ModelTypeBitSetFromString(input_string, &output));
+}
+
} // namespace
} // namespace syncable