OLD | NEW |
1 # Copyright (c) 2013 Google Inc. All rights reserved. | 1 # Copyright (c) 2013 Google Inc. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
5 # met: | 5 # met: |
6 # | 6 # |
7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 frontend_method = ("""void InspectorFrontend::$domainName::$eventName($parameter
s) | 63 frontend_method = ("""void InspectorFrontend::$domainName::$eventName($parameter
s) |
64 { | 64 { |
65 RefPtr<JSONObject> jsonMessage = JSONObject::create(); | 65 RefPtr<JSONObject> jsonMessage = JSONObject::create(); |
66 jsonMessage->setString("method", "$domainName.$eventName"); | 66 jsonMessage->setString("method", "$domainName.$eventName"); |
67 $code if (m_inspectorFrontendChannel) | 67 $code if (m_inspectorFrontendChannel) |
68 m_inspectorFrontendChannel->sendMessageToFrontend(jsonMessage.release())
; | 68 m_inspectorFrontendChannel->sendMessageToFrontend(jsonMessage.release())
; |
69 } | 69 } |
70 """) | 70 """) |
71 | 71 |
72 callback_main_methods = ( | 72 callback_main_methods = ( |
73 """InspectorBackendDispatcher::$agentName::$callbackName::$callbackName(PassRefP
tr<InspectorBackendDispatcherImpl> backendImpl, int id) : CallbackBase(backendIm
pl, id) {} | 73 """InspectorBackendDispatcher::$agentName::$callbackName::$callbackName(PassRefP
trWillBeRawPtr<InspectorBackendDispatcherImpl> backendImpl, int id) : CallbackBa
se(backendImpl, id) {} |
74 | 74 |
75 void InspectorBackendDispatcher::$agentName::$callbackName::sendSuccess($paramet
ers) | 75 void InspectorBackendDispatcher::$agentName::$callbackName::sendSuccess($paramet
ers) |
76 { | 76 { |
77 RefPtr<JSONObject> jsonMessage = JSONObject::create(); | 77 RefPtr<JSONObject> jsonMessage = JSONObject::create(); |
78 $code sendIfActive(jsonMessage, ErrorString(), PassRefPtr<JSONValue>()); | 78 $code sendIfActive(jsonMessage, ErrorString(), PassRefPtr<JSONValue>()); |
79 } | 79 } |
80 """) | 80 """) |
81 | 81 |
82 callback_failure_method = ( | 82 callback_failure_method = ( |
83 """void InspectorBackendDispatcher::$agentName::$callbackName::sendFailure(const
ErrorString& error, $parameter) | 83 """void InspectorBackendDispatcher::$agentName::$callbackName::sendFailure(const
ErrorString& error, $parameter) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 } // namespace blink | 119 } // namespace blink |
120 #endif // !defined(InspectorFrontend_h) | 120 #endif // !defined(InspectorFrontend_h) |
121 """) | 121 """) |
122 | 122 |
123 backend_h = ( | 123 backend_h = ( |
124 """#ifndef InspectorBackendDispatcher_h | 124 """#ifndef InspectorBackendDispatcher_h |
125 #define InspectorBackendDispatcher_h | 125 #define InspectorBackendDispatcher_h |
126 | 126 |
127 #include "InspectorTypeBuilder.h" | 127 #include "InspectorTypeBuilder.h" |
128 | 128 |
| 129 #include "platform/heap/Handle.h" |
129 #include "wtf/PassRefPtr.h" | 130 #include "wtf/PassRefPtr.h" |
130 #include "wtf/RefCounted.h" | 131 #include "wtf/RefCounted.h" |
131 #include "wtf/text/WTFString.h" | 132 #include "wtf/text/WTFString.h" |
132 | 133 |
133 namespace blink { | 134 namespace blink { |
134 | 135 |
135 class JSONObject; | 136 class JSONObject; |
136 class JSONArray; | 137 class JSONArray; |
137 class InspectorFrontendChannel; | 138 class InspectorFrontendChannel; |
138 | 139 |
139 typedef String ErrorString; | 140 typedef String ErrorString; |
140 | 141 |
141 class InspectorBackendDispatcherImpl; | 142 class InspectorBackendDispatcherImpl; |
142 | 143 |
143 class InspectorBackendDispatcher: public RefCounted<InspectorBackendDispatcher>
{ | 144 class InspectorBackendDispatcher: public RefCountedWillBeGarbageCollectedFinaliz
ed<InspectorBackendDispatcher> { |
144 public: | 145 public: |
145 static PassRefPtr<InspectorBackendDispatcher> create(InspectorFrontendChanne
l* inspectorFrontendChannel); | 146 static PassRefPtrWillBeRawPtr<InspectorBackendDispatcher> create(InspectorFr
ontendChannel* inspectorFrontendChannel); |
146 virtual ~InspectorBackendDispatcher() { } | 147 virtual ~InspectorBackendDispatcher() { } |
| 148 virtual void trace(Visitor*) { } |
147 | 149 |
148 class CallbackBase: public RefCounted<CallbackBase> { | 150 class CallbackBase: public RefCountedWillBeGarbageCollectedFinalized<Callbac
kBase> { |
149 public: | 151 public: |
150 CallbackBase(PassRefPtr<InspectorBackendDispatcherImpl> backendImpl, int
id); | 152 CallbackBase(PassRefPtrWillBeRawPtr<InspectorBackendDispatcherImpl> back
endImpl, int id); |
151 virtual ~CallbackBase(); | 153 virtual ~CallbackBase(); |
| 154 virtual void trace(Visitor*); |
152 void sendFailure(const ErrorString&); | 155 void sendFailure(const ErrorString&); |
153 bool isActive(); | 156 bool isActive(); |
154 | 157 |
155 protected: | 158 protected: |
156 void sendIfActive(PassRefPtr<JSONObject> partialMessage, const ErrorStri
ng& invocationError, PassRefPtr<JSONValue> errorData); | 159 void sendIfActive(PassRefPtr<JSONObject> partialMessage, const ErrorStri
ng& invocationError, PassRefPtr<JSONValue> errorData); |
157 | 160 |
158 private: | 161 private: |
159 void disable() { m_alreadySent = true; } | 162 void disable() { m_alreadySent = true; } |
160 | 163 |
161 RefPtr<InspectorBackendDispatcherImpl> m_backendImpl; | 164 RefPtrWillBeMember<InspectorBackendDispatcherImpl> m_backendImpl; |
162 int m_id; | 165 int m_id; |
163 bool m_alreadySent; | 166 bool m_alreadySent; |
164 | 167 |
165 friend class InspectorBackendDispatcherImpl; | 168 friend class InspectorBackendDispatcherImpl; |
166 }; | 169 }; |
167 | 170 |
168 $agentInterfaces | 171 $agentInterfaces |
169 $virtualSetters | 172 $virtualSetters |
170 | 173 |
171 virtual void clearFrontend() = 0; | 174 virtual void clearFrontend() = 0; |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 { | 274 { |
272 sendResponse(callId, invocationError, RefPtr<JSONValue>(), JSONObject::c
reate()); | 275 sendResponse(callId, invocationError, RefPtr<JSONValue>(), JSONObject::c
reate()); |
273 } | 276 } |
274 static const char InvalidParamsFormatString[]; | 277 static const char InvalidParamsFormatString[]; |
275 }; | 278 }; |
276 | 279 |
277 const char InspectorBackendDispatcherImpl::InvalidParamsFormatString[] = "Some a
rguments of method '%s' can't be processed"; | 280 const char InspectorBackendDispatcherImpl::InvalidParamsFormatString[] = "Some a
rguments of method '%s' can't be processed"; |
278 | 281 |
279 $methods | 282 $methods |
280 | 283 |
281 PassRefPtr<InspectorBackendDispatcher> InspectorBackendDispatcher::create(Inspec
torFrontendChannel* inspectorFrontendChannel) | 284 PassRefPtrWillBeRawPtr<InspectorBackendDispatcher> InspectorBackendDispatcher::c
reate(InspectorFrontendChannel* inspectorFrontendChannel) |
282 { | 285 { |
283 return adoptRef(new InspectorBackendDispatcherImpl(inspectorFrontendChannel)
); | 286 return adoptRefWillBeNoop(new InspectorBackendDispatcherImpl(inspectorFronte
ndChannel)); |
284 } | 287 } |
285 | 288 |
286 | 289 |
287 void InspectorBackendDispatcherImpl::dispatch(const String& message) | 290 void InspectorBackendDispatcherImpl::dispatch(const String& message) |
288 { | 291 { |
289 RefPtr<InspectorBackendDispatcher> protect = this; | 292 RefPtrWillBeRawPtr<InspectorBackendDispatcher> protect(this); |
290 typedef void (InspectorBackendDispatcherImpl::*CallHandler)(long callId, JSO
NObject* messageObject, JSONArray* protocolErrors); | 293 typedef void (InspectorBackendDispatcherImpl::*CallHandler)(long callId, JSO
NObject* messageObject, JSONArray* protocolErrors); |
291 typedef HashMap<String, CallHandler> DispatchMap; | 294 typedef HashMap<String, CallHandler> DispatchMap; |
292 DEFINE_STATIC_LOCAL(DispatchMap, dispatchMap, ); | 295 DEFINE_STATIC_LOCAL(DispatchMap, dispatchMap, ); |
293 long callId = 0; | 296 long callId = 0; |
294 | 297 |
295 if (dispatchMap.isEmpty()) { | 298 if (dispatchMap.isEmpty()) { |
296 static const CallHandler handlers[] = { | 299 static const CallHandler handlers[] = { |
297 $messageHandlers | 300 $messageHandlers |
298 }; | 301 }; |
299 for (size_t i = 0; i < kMethodNamesEnumSize; ++i) | 302 for (size_t i = 0; i < kMethodNamesEnumSize; ++i) |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 RefPtr<JSONObject> object = value->asObject(); | 480 RefPtr<JSONObject> object = value->asObject(); |
478 if (!object) | 481 if (!object) |
479 return false; | 482 return false; |
480 | 483 |
481 if (!object->getString("method", result)) | 484 if (!object->getString("method", result)) |
482 return false; | 485 return false; |
483 | 486 |
484 return true; | 487 return true; |
485 } | 488 } |
486 | 489 |
487 InspectorBackendDispatcher::CallbackBase::CallbackBase(PassRefPtr<InspectorBacke
ndDispatcherImpl> backendImpl, int id) | 490 InspectorBackendDispatcher::CallbackBase::CallbackBase(PassRefPtrWillBeRawPtr<In
spectorBackendDispatcherImpl> backendImpl, int id) |
488 : m_backendImpl(backendImpl), m_id(id), m_alreadySent(false) {} | 491 : m_backendImpl(backendImpl), m_id(id), m_alreadySent(false) {} |
489 | 492 |
490 InspectorBackendDispatcher::CallbackBase::~CallbackBase() {} | 493 InspectorBackendDispatcher::CallbackBase::~CallbackBase() {} |
491 | 494 |
| 495 void InspectorBackendDispatcher::CallbackBase::trace(Visitor* visitor) |
| 496 { |
| 497 visitor->trace(m_backendImpl); |
| 498 } |
| 499 |
492 void InspectorBackendDispatcher::CallbackBase::sendFailure(const ErrorString& er
ror) | 500 void InspectorBackendDispatcher::CallbackBase::sendFailure(const ErrorString& er
ror) |
493 { | 501 { |
494 ASSERT(error.length()); | 502 ASSERT(error.length()); |
495 sendIfActive(nullptr, error, PassRefPtr<JSONValue>()); | 503 sendIfActive(nullptr, error, PassRefPtr<JSONValue>()); |
496 } | 504 } |
497 | 505 |
498 bool InspectorBackendDispatcher::CallbackBase::isActive() | 506 bool InspectorBackendDispatcher::CallbackBase::isActive() |
499 { | 507 { |
500 return !m_alreadySent && m_backendImpl->isActive(); | 508 return !m_alreadySent && m_backendImpl->isActive(); |
501 } | 509 } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 return m_value; | 577 return m_value; |
570 } | 578 } |
571 | 579 |
572 private: | 580 private: |
573 T m_value; | 581 T m_value; |
574 bool m_assigned; | 582 bool m_assigned; |
575 | 583 |
576 WTF_MAKE_NONCOPYABLE(OptOutput); | 584 WTF_MAKE_NONCOPYABLE(OptOutput); |
577 }; | 585 }; |
578 | 586 |
579 | |
580 // A small transient wrapper around int type, that can be used as a funciton par
ameter type | |
581 // cleverly disallowing C++ implicit casts from float or double. | |
582 class ExactlyInt { | |
583 public: | |
584 template<typename T> | |
585 ExactlyInt(T t) : m_value(cast_to_int<T>(t)) {} | |
586 | |
587 ExactlyInt() {} | |
588 | |
589 operator int() { return m_value; } | |
590 private: | |
591 int m_value; | |
592 | |
593 template<typename T> | |
594 static int cast_to_int(T) { return T::default_case_cast_is_not_supported();
} | |
595 }; | |
596 | |
597 template<> | |
598 inline int ExactlyInt::cast_to_int<int>(int i) { return i; } | |
599 | |
600 template<> | |
601 inline int ExactlyInt::cast_to_int<unsigned int>(unsigned int i) { return i; } | |
602 | |
603 class RuntimeCastHelper { | 587 class RuntimeCastHelper { |
604 public: | 588 public: |
605 #if $validatorIfdefName | 589 #if $validatorIfdefName |
606 template<JSONValue::Type TYPE> | 590 template<JSONValue::Type TYPE> |
607 static void assertType(JSONValue* value) | 591 static void assertType(JSONValue* value) |
608 { | 592 { |
609 ASSERT(value->type() == TYPE); | 593 ASSERT(value->type() == TYPE); |
610 } | 594 } |
611 static void assertAny(JSONValue*); | 595 static void assertAny(JSONValue*); |
612 static void assertInt(JSONValue* value); | 596 static void assertInt(JSONValue* value); |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 }; | 930 }; |
947 | 931 |
948 """) | 932 """) |
949 | 933 |
950 class_binding_builder_part_4 = ( | 934 class_binding_builder_part_4 = ( |
951 """ static Builder<NoFieldsSet> create() | 935 """ static Builder<NoFieldsSet> create() |
952 { | 936 { |
953 return Builder<NoFieldsSet>(JSONObject::create()); | 937 return Builder<NoFieldsSet>(JSONObject::create()); |
954 } | 938 } |
955 """) | 939 """) |
OLD | NEW |