diff options
author | jorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-27 00:55:02 +0000 |
---|---|---|
committer | jorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-27 00:55:02 +0000 |
commit | 15bf871f530cc5527db8a077e41dea8ea51bf31f (patch) | |
tree | add749cbb0ebbf7cfc3d2d95093716c9b167060e /webkit | |
parent | 9fcb0c1a40e9e550c79c5eb650aeb8c39ae5f1d7 (diff) | |
download | chromium_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 'webkit')
-rw-r--r-- | webkit/api/public/WebString.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/webkit/api/public/WebString.h b/webkit/api/public/WebString.h index 5107de4..7494b5d 100644 --- a/webkit/api/public/WebString.h +++ b/webkit/api/public/WebString.h @@ -36,6 +36,7 @@ #if WEBKIT_IMPLEMENTATION namespace WebCore { class String; class AtomicString; } #else +#include <base/nullable_string16.h> #include <base/string16.h> #endif @@ -108,6 +109,31 @@ namespace WebKit { return len ? string16(data(), len) : string16(); } + WebString(const NullableString16& s) : m_private(0) + { + if (s.is_null()) + assign(0); + else + assign(s.string().data(), s.string().length()); + } + + WebString& operator=(const NullableString16& s) + { + if (s.is_null()) + assign(0); + else + assign(s.string().data(), s.string().length()); + return *this; + } + + operator NullableString16() const + { + if (!m_private) + return NullableString16(string16(), true); + size_t len = length(); + return NullableString16(len ? string16(data(), len) : string16(), false); + } + template <class UTF8String> static WebString fromUTF8(const UTF8String& s) { |