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

Side by Side Diff: Source/bindings/v8/V8Binding.h

Issue 24139004: Add toWebCoreString() / toWebCoreAtomicString() overloads taking a v8::String (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix bad if condition Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « Source/bindings/v8/ScriptValue.cpp ('k') | Source/bindings/v8/V8Initializer.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Ericsson AB. All rights reserved. 3 * Copyright (C) 2012 Ericsson AB. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 template <class CallbackInfo> 156 template <class CallbackInfo>
157 inline void v8SetReturnValueStringOrUndefined(const CallbackInfo& info, cons t String& string, v8::Isolate* isolate) 157 inline void v8SetReturnValueStringOrUndefined(const CallbackInfo& info, cons t String& string, v8::Isolate* isolate)
158 { 158 {
159 if (string.isNull()) { 159 if (string.isNull()) {
160 v8SetReturnValueUndefined(info); 160 v8SetReturnValueUndefined(info);
161 return; 161 return;
162 } 162 }
163 V8PerIsolateData::from(isolate)->stringCache()->setReturnValueFromString (info.GetReturnValue(), string.impl()); 163 V8PerIsolateData::from(isolate)->stringCache()->setReturnValueFromString (info.GetReturnValue(), string.impl());
164 } 164 }
165 165
166 // Convert v8::String to a WTF::String. If the V8 string is not already
167 // an external string then it is transformed into an external string at this
168 // point to avoid repeated conversions.
169 inline String toWebCoreString(v8::Handle<v8::String> value)
170 {
171 return v8StringToWebCoreString<String>(value, Externalize);
172 }
173
174 inline String toWebCoreStringWithNullCheck(v8::Handle<v8::String> value)
175 {
176 if (value.IsEmpty() || value->IsNull())
177 return String();
178 return toWebCoreString(value);
179 }
180
181 inline String toWebCoreStringWithUndefinedOrNullCheck(v8::Handle<v8::String> value)
182 {
183 if (value.IsEmpty() || value->IsNull() || value->IsUndefined())
184 return String();
185 return toWebCoreString(value);
186 }
187
188 inline AtomicString toWebCoreAtomicString(v8::Handle<v8::String> value)
189 {
190 return v8StringToWebCoreString<AtomicString>(value, Externalize);
191 }
192
166 // Convert v8 types to a WTF::String. If the V8 string is not already 193 // Convert v8 types to a WTF::String. If the V8 string is not already
167 // an external string then it is transformed into an external string at this 194 // an external string then it is transformed into an external string at this
168 // point to avoid repeated conversions. 195 // point to avoid repeated conversions.
169 // 196 //
170 // FIXME: Replace all the call sites with V8TRYCATCH_FOR_V8STRINGRESOURCE(). 197 // FIXME: Replace all the call sites with V8TRYCATCH_FOR_V8STRINGRESOURCE().
171 // Using this method will lead to a wrong behavior, because you cannot stop the 198 // Using this method will lead to a wrong behavior, because you cannot stop the
172 // execution when an exception is thrown inside stringResource.prepare(). 199 // execution when an exception is thrown inside stringResource.prepare().
173 inline String toWebCoreString(v8::Handle<v8::Value> value) 200 inline String toWebCoreString(v8::Handle<v8::Value> value)
174 { 201 {
175 V8StringResource<> stringResource(value); 202 V8StringResource<> stringResource(value);
(...skipping 22 matching lines...) Expand all
198 225
199 // FIXME: See the above comment. 226 // FIXME: See the above comment.
200 inline AtomicString toWebCoreAtomicString(v8::Handle<v8::Value> value) 227 inline AtomicString toWebCoreAtomicString(v8::Handle<v8::Value> value)
201 { 228 {
202 V8StringResource<> stringResource(value); 229 V8StringResource<> stringResource(value);
203 if (!stringResource.prepare()) 230 if (!stringResource.prepare())
204 return AtomicString(); 231 return AtomicString();
205 return stringResource; 232 return stringResource;
206 } 233 }
207 234
208 // FIXME: See the above comment.
209 inline AtomicString toWebCoreAtomicStringWithNullCheck(v8::Handle<v8::Value> value)
210 {
211 V8StringResource<WithNullCheck> stringResource(value);
212 if (!stringResource.prepare())
213 return AtomicString();
214 return stringResource;
215 }
216
217 // Convert a string to a V8 string. 235 // Convert a string to a V8 string.
218 // Return a V8 external string that shares the underlying buffer with the gi ven 236 // Return a V8 external string that shares the underlying buffer with the gi ven
219 // WebCore string. The reference counting mechanism is used to keep the 237 // WebCore string. The reference counting mechanism is used to keep the
220 // underlying buffer alive while the string is still live in the V8 engine. 238 // underlying buffer alive while the string is still live in the V8 engine.
221 inline v8::Handle<v8::String> v8String(const String& string, v8::Isolate* is olate) 239 inline v8::Handle<v8::String> v8String(const String& string, v8::Isolate* is olate)
222 { 240 {
223 if (string.isNull()) 241 if (string.isNull())
224 return v8::String::Empty(isolate); 242 return v8::String::Empty(isolate);
225 return V8PerIsolateData::from(isolate)->stringCache()->v8ExternalString( string.impl(), isolate); 243 return V8PerIsolateData::from(isolate)->stringCache()->v8ExternalString( string.impl(), isolate);
226 } 244 }
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 } 653 }
636 654
637 v8::Local<v8::Value> getHiddenValueFromMainWorldWrapper(v8::Isolate*, Script Wrappable*, v8::Handle<v8::String> key); 655 v8::Local<v8::Value> getHiddenValueFromMainWorldWrapper(v8::Isolate*, Script Wrappable*, v8::Handle<v8::String> key);
638 656
639 v8::Isolate* isolateForScriptExecutionContext(ScriptExecutionContext*); 657 v8::Isolate* isolateForScriptExecutionContext(ScriptExecutionContext*);
640 v8::Isolate* isolateForFrame(Frame*); 658 v8::Isolate* isolateForFrame(Frame*);
641 659
642 } // namespace WebCore 660 } // namespace WebCore
643 661
644 #endif // V8Binding_h 662 #endif // V8Binding_h
OLDNEW
« no previous file with comments | « Source/bindings/v8/ScriptValue.cpp ('k') | Source/bindings/v8/V8Initializer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698