diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-28 22:05:21 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-28 22:05:21 +0000 |
commit | 4837913958416b8cd4c0df935cdd8a8538c8d3ae (patch) | |
tree | 440243f1bce15db7f3b48f08766f6f9f90ce3144 /chrome/browser/sync | |
parent | 7cce9f23206ece200b725512393741f1bb332841 (diff) | |
download | chromium_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.cc | 15 | ||||
-rw-r--r-- | chrome/browser/sync/syncable/model_type_unittest.cc | 21 |
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 |