| Index: third_party/inspector_protocol/lib/DispatcherBase_h.template | 
| diff --git a/third_party/inspector_protocol/lib/DispatcherBase_h.template b/third_party/inspector_protocol/lib/DispatcherBase_h.template | 
| index 4fb89efafe9706c333fd786392db0f3ddc5b01f6..9838637c59340ed91dbcc0aad51b7697cf5373bf 100644 | 
| --- a/third_party/inspector_protocol/lib/DispatcherBase_h.template | 
| +++ b/third_party/inspector_protocol/lib/DispatcherBase_h.template | 
| @@ -42,6 +42,7 @@ public: | 
| static DispatchResponse OK(); | 
| static DispatchResponse Error(const String&); | 
| static DispatchResponse InternalError(); | 
| +    static DispatchResponse InvalidParams(const String&); | 
| static DispatchResponse FallThrough(); | 
|  | 
| private: | 
| @@ -67,16 +68,18 @@ public: | 
|  | 
| class {{config.lib.export_macro}} Callback { | 
| public: | 
| -        Callback(std::unique_ptr<WeakPtr> backendImpl, int callId); | 
| +        Callback(std::unique_ptr<WeakPtr> backendImpl, int callId, int callbackId); | 
| virtual ~Callback(); | 
| void dispose(); | 
|  | 
| protected: | 
| void sendIfActive(std::unique_ptr<protocol::DictionaryValue> partialMessage, const DispatchResponse& response); | 
| +        void fallThroughIfActive(); | 
|  | 
| private: | 
| std::unique_ptr<WeakPtr> m_backendImpl; | 
| int m_callId; | 
| +        int m_callbackId; | 
| }; | 
|  | 
| explicit DispatcherBase(FrontendChannel*); | 
| @@ -94,9 +97,15 @@ public: | 
|  | 
| std::unique_ptr<WeakPtr> weakPtr(); | 
|  | 
| +    int nextCallbackId(); | 
| +    void markFallThrough(int callbackId); | 
| +    bool lastCallbackFallThrough() { return m_lastCallbackFallThrough; } | 
| + | 
| private: | 
| FrontendChannel* m_frontendChannel; | 
| protocol::HashSet<WeakPtr*> m_weakPtrs; | 
| +    int m_lastCallbackId; | 
| +    bool m_lastCallbackFallThrough; | 
| }; | 
|  | 
| class {{config.lib.export_macro}} UberDispatcher { | 
| @@ -106,10 +115,13 @@ public: | 
| void registerBackend(const String& name, std::unique_ptr<protocol::DispatcherBase>); | 
| DispatchResponse::Status dispatch(std::unique_ptr<Value> message); | 
| FrontendChannel* channel() { return m_frontendChannel; } | 
| +    bool fallThroughForNotFound() { return m_fallThroughForNotFound; } | 
| +    void setFallThroughForNotFound(bool); | 
| virtual ~UberDispatcher(); | 
|  | 
| private: | 
| FrontendChannel* m_frontendChannel; | 
| +    bool m_fallThroughForNotFound; | 
| protocol::HashMap<String, std::unique_ptr<protocol::DispatcherBase>> m_dispatchers; | 
| }; | 
|  | 
|  |