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

Side by Side Diff: third_party/WebKit/Source/platform/inspector_protocol/String16WTF.h

Issue 1779033003: DevTools: always use 16bit strings for inspector protocol. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebaselined Created 4 years, 9 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef String16WTF_h 5 #ifndef String16WTF_h
6 #define String16WTF_h 6 #define String16WTF_h
7 7
8 #include "platform/Decimal.h" 8 #include "platform/Decimal.h"
9 #include "public/platform/WebString.h" 9 #include "public/platform/WebString.h"
10 #include "wtf/text/StringBuilder.h" 10 #include "wtf/text/StringBuilder.h"
11 #include "wtf/text/StringConcatenate.h" 11 #include "wtf/text/StringConcatenate.h"
12 #include "wtf/text/StringHash.h" 12 #include "wtf/text/StringHash.h"
13 #include "wtf/text/UTF8.h"
14 #include "wtf/text/WTFString.h" 13 #include "wtf/text/WTFString.h"
15 14
16 namespace blink { 15 namespace blink {
17 namespace protocol { 16 namespace protocol {
18 17
19 class String16 { 18 class PLATFORM_EXPORT String16 {
20 public: 19 public:
21 String16() { } 20 String16() { }
22 String16(const String16& other) : m_impl(other.m_impl) { } 21 String16(const String16& other);
23 String16(const UChar* u, unsigned length) : m_impl(u, length) { } 22 String16(const UChar*, unsigned);
24 String16(const char* characters) : m_impl(characters) { } 23 String16(const char*);
25 String16(const char* characters, size_t size) : m_impl(characters, size) { } 24 String16(const char*, size_t);
26 String16(const WebString& other) : m_impl(other) { } 25 static String16 createUninitialized(unsigned length, UChar*& data);
26
27 // WTF convenience constructors and helper methods.
28 String16(const WebString& other) : String16(String(other)) { }
27 template<typename StringType1, typename StringType2> 29 template<typename StringType1, typename StringType2>
28 String16(const WTF::StringAppend<StringType1, StringType2>& impl) : m_impl(i mpl) { } 30 String16(const WTF::StringAppend<StringType1, StringType2>& impl) : String16 (String(impl)) { }
31 String16(const WTF::AtomicString& impl) : String16(String(impl)) { }
32 String16(const WTF::String& impl);
33 String16(WTF::HashTableDeletedValueType) : m_impl(WTF::HashTableDeletedValue ) { }
34 bool isHashTableDeletedValue() const { return m_impl.isHashTableDeletedValue (); }
35 operator WTF::String() const { return m_impl; }
36 operator WebString() { return m_impl; }
37 const WTF::String& impl() const { return m_impl; }
38
29 ~String16() { } 39 ~String16() { }
30 40
31 // Integration constructors.
32 String16(const WTF::String& impl) : m_impl(impl) { }
33 String16(const WTF::AtomicString& impl) : m_impl(impl) { }
34 String16(WTF::HashTableDeletedValueType) : m_impl(WTF::HashTableDeletedValue ) { }
35
36 static String16 fromUTF8(const char* characters, size_t length) { return Str ing::fromUTF8(characters, length); }
37 static String16 number(int i) { return String::number(i); } 41 static String16 number(int i) { return String::number(i); }
38 static String16 fromDouble(double number) { return Decimal::fromDouble(numbe r).toString(); } 42 static String16 fromDouble(double number) { return Decimal::fromDouble(numbe r).toString(); }
39 static String16 createUninitialized(unsigned length, UChar*& data) { return String::createUninitialized(length, data); }
40 static bool codePointCompareLessThan(const String16& a, const String16& b)
41 {
42 return codePointCompare(a.impl(), b.impl()) < 0;
43 }
44
45 typedef enum {
46 conversionOK,
47 sourceExhausted,
48 targetExhausted,
49 sourceIllegal
50 } ConversionResult;
51
52 static ConversionResult convertUTF8ToUTF16(const char** sourceStart, const c har* sourceEnd, UChar** targetStart, UChar* targetEnd, bool* isSourceAllASCII = 0, bool strict = true)
53 {
54 return static_cast<ConversionResult>(WTF::Unicode::convertUTF8ToUTF16(so urceStart, sourceEnd, targetStart, targetEnd, isSourceAllASCII, strict));
55 }
56
57 bool validateUTF8()
58 {
59 return !m_impl.utf8(StrictUTF8Conversion).isNull();
60 }
61 43
62 size_t length() const { return m_impl.length(); } 44 size_t length() const { return m_impl.length(); }
63 bool isEmpty() const { return m_impl.isEmpty(); } 45 bool isEmpty() const { return m_impl.isEmpty(); }
64 bool isNull() const { return m_impl.isNull(); }
65 UChar operator[](unsigned index) const { return m_impl[index]; } 46 UChar operator[](unsigned index) const { return m_impl[index]; }
66 47
67 bool is8Bit() const { return m_impl.is8Bit(); }
68 unsigned sizeInBytes() const { return m_impl.sizeInBytes(); } 48 unsigned sizeInBytes() const { return m_impl.sizeInBytes(); }
69 const LChar* characters8() const { return m_impl.characters8(); } 49 const UChar* characters16() const { return m_impl.isEmpty() ? nullptr : m_im pl.characters16(); }
70 const UChar* characters16() const { return m_impl.characters16(); }
71 String16 latin1Data()
72 {
73 CString latin1 = m_impl.latin1();
74 // Include terminating zero.
75 return String16(latin1.data(), latin1.length() + 1);
76 }
77
78 operator WTF::String() const { return m_impl; }
79 operator WebString() const { return m_impl; }
80 WTF::String impl() const { return m_impl; }
81 50
82 static double charactersToDouble(const LChar* characters, size_t length, boo l* ok = 0) { return ::charactersToDouble(characters, length, ok); } 51 static double charactersToDouble(const LChar* characters, size_t length, boo l* ok = 0) { return ::charactersToDouble(characters, length, ok); }
83 static double charactersToDouble(const UChar* characters, size_t length, boo l* ok = 0) { return ::charactersToDouble(characters, length, ok); } 52 static double charactersToDouble(const UChar* characters, size_t length, boo l* ok = 0) { return ::charactersToDouble(characters, length, ok); }
84 53
85 String16 substring(unsigned pos, unsigned len = UINT_MAX) const { return m_i mpl.substring(pos, len); } 54 String16 substring(unsigned pos, unsigned len = UINT_MAX) const { return m_i mpl.substring(pos, len); }
86 String16 left(unsigned len) const { return m_impl.substring(0, len); }
87 String16 stripWhiteSpace() const { return m_impl.stripWhiteSpace(); } 55 String16 stripWhiteSpace() const { return m_impl.stripWhiteSpace(); }
88 56
89 int toInt(bool* ok = 0) const { return m_impl.toInt(ok); } 57 int toInt(bool* ok = 0) const { return m_impl.toInt(ok); }
90 unsigned toUInt(bool* ok = 0) const { return m_impl.toUInt(ok); }
91 58
92 size_t find(UChar c, unsigned start = 0) const { return m_impl.find(c, start ); } 59 size_t find(UChar c, unsigned start = 0) const { return m_impl.find(c, start ); }
93 size_t find(const String16& str) const { return m_impl.find(str.impl()); } 60 size_t find(const String16& str, unsigned start = 0) const { return m_impl.f ind(str.impl(), start); }
94 size_t find(const String16& str, unsigned start) const { return m_impl.find( str.impl(), start); }
95 size_t reverseFind(const String16& str, unsigned start = UINT_MAX) const { r eturn m_impl.reverseFind(str.impl(), start); } 61 size_t reverseFind(const String16& str, unsigned start = UINT_MAX) const { r eturn m_impl.reverseFind(str.impl(), start); }
96 62
97 void append(const String16& str) { m_impl.append(str); };
98 bool isHashTableDeletedValue() const { return m_impl.isHashTableDeletedValue (); }
99
100 bool startWith(const String16& s) const { return m_impl.startsWith(s); } 63 bool startWith(const String16& s) const { return m_impl.startsWith(s); }
101 bool startWith(UChar character) const { return m_impl.startsWith(character); } 64 bool startWith(UChar character) const { return m_impl.startsWith(character); }
102 bool endsWith(const String16& s) const { return m_impl.endsWith(s); } 65 bool endsWith(const String16& s) const { return m_impl.endsWith(s); }
103 bool endsWith(UChar character) const { return m_impl.endsWith(character); } 66 bool endsWith(UChar character) const { return m_impl.endsWith(character); }
104 67
105 private: 68 private:
106 WTF::String m_impl; 69 WTF::String m_impl;
107 }; 70 };
108 71
109 class String16Builder { 72 class String16Builder {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 }; 123 };
161 124
162 template<typename T> struct DefaultHash; 125 template<typename T> struct DefaultHash;
163 template<> struct DefaultHash<String16> { 126 template<> struct DefaultHash<String16> {
164 typedef String16Hash Hash; 127 typedef String16Hash Hash;
165 }; 128 };
166 129
167 template<> 130 template<>
168 struct HashTraits<String16> : SimpleClassHashTraits<String16> { 131 struct HashTraits<String16> : SimpleClassHashTraits<String16> {
169 static const bool hasIsEmptyValueFunction = true; 132 static const bool hasIsEmptyValueFunction = true;
170 static bool isEmptyValue(const String16& a) { return a.isNull(); } 133 static bool isEmptyValue(const String16& a) { return a.impl().isNull(); }
171 }; 134 };
172 135
173 } // namespace WTF 136 } // namespace WTF
174 137
175 #endif // !defined(String16WTF_h) 138 #endif // !defined(String16WTF_h)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698