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

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

Issue 85263006: Make IDL Callbacks non-refcounted by default (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Refinements Created 7 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 enum CallbackAllowedValueFlag { 46 enum CallbackAllowedValueFlag {
47 CallbackAllowUndefined = 1, 47 CallbackAllowUndefined = 1,
48 CallbackAllowNull = 1 << 1 48 CallbackAllowNull = 1 << 1
49 }; 49 };
50 50
51 typedef unsigned CallbackAllowedValueFlags; 51 typedef unsigned CallbackAllowedValueFlags;
52 52
53 // 'FunctionOnly' is assumed for the created callback. 53 // 'FunctionOnly' is assumed for the created callback.
54 template <typename V8CallbackType> 54 template <typename V8CallbackType>
55 PassRefPtr<V8CallbackType> createFunctionOnlyCallback(v8::Local<v8::Value> value , bool& succeeded, v8::Isolate* isolate, CallbackAllowedValueFlags acceptedValue s = 0) 55 PassOwnPtr<V8CallbackType> createFunctionOnlyCallback(v8::Local<v8::Value> value , bool& succeeded, v8::Isolate* isolate, CallbackAllowedValueFlags acceptedValue s = 0)
56 { 56 {
57 succeeded = true; 57 succeeded = true;
58 58
59 if (value->IsUndefined() && (acceptedValues & CallbackAllowUndefined)) 59 if (value->IsUndefined() && (acceptedValues & CallbackAllowUndefined))
60 return 0; 60 return nullptr;
haraken 2013/11/27 00:37:11 Nit: Do we prefer nullptr to 0 for an OwnPtr? (I'm
adamk 2013/11/27 00:45:21 Only nullptr will work, in fact! OwnPtr's can't be
61 61
62 if (value->IsNull() && (acceptedValues & CallbackAllowNull)) 62 if (value->IsNull() && (acceptedValues & CallbackAllowNull))
63 return 0; 63 return nullptr;
64 64
65 if (!value->IsFunction()) { 65 if (!value->IsFunction()) {
66 succeeded = false; 66 succeeded = false;
67 setDOMException(TypeMismatchError, isolate); 67 setDOMException(TypeMismatchError, isolate);
68 return 0; 68 return nullptr;
69 } 69 }
70 70
71 return V8CallbackType::create(value, getExecutionContext()); 71 return V8CallbackType::create(value, getExecutionContext());
72 } 72 }
73 73
74 } // namespace WebCore 74 } // namespace WebCore
75 75
76 #endif // V8Callback_h 76 #endif // V8Callback_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698