summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorjorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-27 00:55:02 +0000
committerjorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-27 00:55:02 +0000
commit15bf871f530cc5527db8a077e41dea8ea51bf31f (patch)
treeadd749cbb0ebbf7cfc3d2d95093716c9b167060e /base
parent9fcb0c1a40e9e550c79c5eb650aeb8c39ae5f1d7 (diff)
downloadchromium_src-15bf871f530cc5527db8a077e41dea8ea51bf31f.zip
chromium_src-15bf871f530cc5527db8a077e41dea8ea51bf31f.tar.gz
chromium_src-15bf871f530cc5527db8a077e41dea8ea51bf31f.tar.bz2
Add a nullable string16 class to base. It combines a string16 + a null param
in order to cover all the possible states of a WebKit string. For strings where the null state is not meaninfully different from the empty state, this class should NOT be used. There are, however, some cases where we do need to track null. LocalStorage is an example. This class should be a fairly light weight way to do so. This change also adds implicit conversion to and from WebStrings. This also switches LocalStorage's IPCs over to using this new class. BUG=17343 TEST=none Review URL: http://codereview.chromium.org/174484 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24574 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/base.gyp1
-rw-r--r--base/nullable_string16.h28
2 files changed, 29 insertions, 0 deletions
diff --git a/base/base.gyp b/base/base.gyp
index bf6d9d2..3e0503e 100644
--- a/base/base.gyp
+++ b/base/base.gyp
@@ -202,6 +202,7 @@
'non_thread_safe.h',
'nss_init.cc',
'nss_init.h',
+ 'nullable_string16.h',
'object_watcher.cc',
'object_watcher.h',
'observer_list.h',
diff --git a/base/nullable_string16.h b/base/nullable_string16.h
new file mode 100644
index 0000000..6f69aa5
--- /dev/null
+++ b/base/nullable_string16.h
@@ -0,0 +1,28 @@
+// Copyright (c) 2009 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 BASE_NULLABLE_STRING16_H_
+#define BASE_NULLABLE_STRING16_H_
+
+#include "base/string16.h"
+
+// This class is a simple wrapper for string16 which also contains a null
+// state. This should be used only where the difference between null and
+// empty is meaningful.
+class NullableString16 {
+ public:
+ NullableString16() : is_null_(false) { }
+ NullableString16(const string16& string, bool is_null)
+ : string_(string), is_null_(is_null) {
+ }
+
+ const string16& string() const { return string_; }
+ bool is_null() const { return is_null_; }
+
+ private:
+ string16 string_;
+ bool is_null_;
+};
+
+#endif // BASE_NULLABLE_STRING16_H_