/*
 * Copyright (C) 2013 Google Inc. All rights reserved.
 * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
 * Copyright (C) 2014 University of Washington. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

// DO NOT EDIT THIS FILE. It is automatically generated from CombinedDomains.json
// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py

#pragma once

#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)

#include "InspectorBackendDispatcher.h"
#include "InspectorFrontendRouter.h"
#include "InspectorProtocolTypes.h"

namespace Inspector {

class AlternateBackendDispatcher {
public:
    void setBackendDispatcher(RefPtr<BackendDispatcher>&& dispatcher) { m_backendDispatcher = WTFMove(dispatcher); }
    BackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
private:
    RefPtr<BackendDispatcher> m_backendDispatcher;
};


class AlternateApplicationCacheBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateApplicationCacheBackendDispatcher() { }
    virtual void getFramesWithManifests(long callId) = 0;
    virtual void enable(long callId) = 0;
    virtual void getManifestForFrame(long callId, const String& in_frameId) = 0;
    virtual void getApplicationCacheForFrame(long callId, const String& in_frameId) = 0;
};
class AlternateAuditBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateAuditBackendDispatcher() { }
    virtual void setup(long callId, const int* in_contextId) = 0;
    virtual void run(long callId, const String& in_test, const int* in_contextId) = 0;
    virtual void teardown(long callId) = 0;
};
#if ENABLE(RESOURCE_USAGE)
class AlternateCPUProfilerBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateCPUProfilerBackendDispatcher() { }
    virtual void startTracking(long callId) = 0;
    virtual void stopTracking(long callId) = 0;
};
#endif // ENABLE(RESOURCE_USAGE)
class AlternateCSSBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateCSSBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void getMatchedStylesForNode(long callId, int in_nodeId, const bool* in_includePseudo, const bool* in_includeInherited) = 0;
    virtual void getInlineStylesForNode(long callId, int in_nodeId) = 0;
    virtual void getComputedStyleForNode(long callId, int in_nodeId) = 0;
    virtual void getAllStyleSheets(long callId) = 0;
    virtual void getStyleSheet(long callId, const String& in_styleSheetId) = 0;
    virtual void getStyleSheetText(long callId, const String& in_styleSheetId) = 0;
    virtual void setStyleSheetText(long callId, const String& in_styleSheetId, const String& in_text) = 0;
    virtual void setStyleText(long callId, const JSON::Object& in_styleId, const String& in_text) = 0;
    virtual void setRuleSelector(long callId, const JSON::Object& in_ruleId, const String& in_selector) = 0;
    virtual void createStyleSheet(long callId, const String& in_frameId) = 0;
    virtual void addRule(long callId, const String& in_styleSheetId, const String& in_selector) = 0;
    virtual void getSupportedCSSProperties(long callId) = 0;
    virtual void getSupportedSystemFontFamilyNames(long callId) = 0;
    virtual void forcePseudoState(long callId, int in_nodeId, const JSON::Array& in_forcedPseudoClasses) = 0;
};
class AlternateCanvasBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateCanvasBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void requestNode(long callId, const String& in_canvasId) = 0;
    virtual void requestContent(long callId, const String& in_canvasId) = 0;
    virtual void requestCSSCanvasClientNodes(long callId, const String& in_canvasId) = 0;
    virtual void resolveCanvasContext(long callId, const String& in_canvasId, const String* in_objectGroup) = 0;
    virtual void setRecordingAutoCaptureFrameCount(long callId, int in_count) = 0;
    virtual void startRecording(long callId, const String& in_canvasId, const int* in_frameCount, const int* in_memoryLimit) = 0;
    virtual void stopRecording(long callId, const String& in_canvasId) = 0;
    virtual void requestShaderSource(long callId, const String& in_programId, const String& in_shaderType) = 0;
    virtual void updateShader(long callId, const String& in_programId, const String& in_shaderType, const String& in_source) = 0;
    virtual void setShaderProgramDisabled(long callId, const String& in_programId, bool in_disabled) = 0;
    virtual void setShaderProgramHighlighted(long callId, const String& in_programId, bool in_highlighted) = 0;
};
class AlternateConsoleBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateConsoleBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void clearMessages(long callId) = 0;
    virtual void getLoggingChannels(long callId) = 0;
    virtual void setLoggingChannelLevel(long callId, const String& in_source, const String& in_level) = 0;
};
class AlternateDOMBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateDOMBackendDispatcher() { }
    virtual void getDocument(long callId) = 0;
    virtual void requestChildNodes(long callId, int in_nodeId, const int* in_depth) = 0;
    virtual void querySelector(long callId, int in_nodeId, const String& in_selector) = 0;
    virtual void querySelectorAll(long callId, int in_nodeId, const String& in_selector) = 0;
    virtual void setNodeName(long callId, int in_nodeId, const String& in_name) = 0;
    virtual void setNodeValue(long callId, int in_nodeId, const String& in_value) = 0;
    virtual void removeNode(long callId, int in_nodeId) = 0;
    virtual void setAttributeValue(long callId, int in_nodeId, const String& in_name, const String& in_value) = 0;
    virtual void setAttributesAsText(long callId, int in_nodeId, const String& in_text, const String* in_name) = 0;
    virtual void removeAttribute(long callId, int in_nodeId, const String& in_name) = 0;
    virtual void getSupportedEventNames(long callId) = 0;
    virtual void getDataBindingsForNode(long callId, int in_nodeId) = 0;
    virtual void getAssociatedDataForNode(long callId, int in_nodeId) = 0;
    virtual void getEventListenersForNode(long callId, int in_nodeId) = 0;
    virtual void setEventListenerDisabled(long callId, int in_eventListenerId, bool in_disabled) = 0;
    virtual void setBreakpointForEventListener(long callId, int in_eventListenerId) = 0;
    virtual void removeBreakpointForEventListener(long callId, int in_eventListenerId) = 0;
    virtual void getAccessibilityPropertiesForNode(long callId, int in_nodeId) = 0;
    virtual void getOuterHTML(long callId, int in_nodeId) = 0;
    virtual void setOuterHTML(long callId, int in_nodeId, const String& in_outerHTML) = 0;
    virtual void insertAdjacentHTML(long callId, int in_nodeId, const String& in_position, const String& in_html) = 0;
    virtual void performSearch(long callId, const String& in_query, const JSON::Array* in_nodeIds, const bool* in_caseSensitive) = 0;
    virtual void getSearchResults(long callId, const String& in_searchId, int in_fromIndex, int in_toIndex) = 0;
    virtual void discardSearchResults(long callId, const String& in_searchId) = 0;
    virtual void requestNode(long callId, const String& in_objectId) = 0;
    virtual void setInspectModeEnabled(long callId, bool in_enabled, const JSON::Object* in_highlightConfig, const bool* in_showRulers) = 0;
    virtual void highlightRect(long callId, int in_x, int in_y, int in_width, int in_height, const JSON::Object* in_color, const JSON::Object* in_outlineColor, const bool* in_usePageCoordinates) = 0;
    virtual void highlightQuad(long callId, const JSON::Array& in_quad, const JSON::Object* in_color, const JSON::Object* in_outlineColor, const bool* in_usePageCoordinates) = 0;
    virtual void highlightSelector(long callId, const JSON::Object& in_highlightConfig, const String& in_selectorString, const String* in_frameId) = 0;
    virtual void highlightNode(long callId, const JSON::Object& in_highlightConfig, const int* in_nodeId, const String* in_objectId) = 0;
    virtual void highlightNodeList(long callId, const JSON::Array& in_nodeIds, const JSON::Object& in_highlightConfig) = 0;
    virtual void hideHighlight(long callId) = 0;
    virtual void highlightFrame(long callId, const String& in_frameId, const JSON::Object* in_contentColor, const JSON::Object* in_contentOutlineColor) = 0;
    virtual void pushNodeByPathToFrontend(long callId, const String& in_path) = 0;
    virtual void resolveNode(long callId, int in_nodeId, const String* in_objectGroup) = 0;
    virtual void getAttributes(long callId, int in_nodeId) = 0;
    virtual void moveTo(long callId, int in_nodeId, int in_targetNodeId, const int* in_insertBeforeNodeId) = 0;
    virtual void undo(long callId) = 0;
    virtual void redo(long callId) = 0;
    virtual void markUndoableState(long callId) = 0;
    virtual void focus(long callId, int in_nodeId) = 0;
    virtual void setInspectedNode(long callId, int in_nodeId) = 0;
};
class AlternateDOMDebuggerBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateDOMDebuggerBackendDispatcher() { }
    virtual void setDOMBreakpoint(long callId, int in_nodeId, const String& in_type) = 0;
    virtual void removeDOMBreakpoint(long callId, int in_nodeId, const String& in_type) = 0;
    virtual void setEventBreakpoint(long callId, const String& in_breakpointType, const String& in_eventName) = 0;
    virtual void removeEventBreakpoint(long callId, const String& in_breakpointType, const String& in_eventName) = 0;
    virtual void setURLBreakpoint(long callId, const String& in_url, const bool* in_isRegex) = 0;
    virtual void removeURLBreakpoint(long callId, const String& in_url) = 0;
};
class AlternateDOMStorageBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateDOMStorageBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void getDOMStorageItems(long callId, const JSON::Object& in_storageId) = 0;
    virtual void setDOMStorageItem(long callId, const JSON::Object& in_storageId, const String& in_key, const String& in_value) = 0;
    virtual void removeDOMStorageItem(long callId, const JSON::Object& in_storageId, const String& in_key) = 0;
};
class AlternateDatabaseBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateDatabaseBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void getDatabaseTableNames(long callId, const String& in_databaseId) = 0;
    virtual void executeSQL(long callId, const String& in_databaseId, const String& in_query) = 0;
};
class AlternateDebuggerBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateDebuggerBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void setAsyncStackTraceDepth(long callId, int in_depth) = 0;
    virtual void setBreakpointsActive(long callId, bool in_active) = 0;
    virtual void setBreakpointByUrl(long callId, int in_lineNumber, const String* in_url, const String* in_urlRegex, const int* in_columnNumber, const JSON::Object* in_options) = 0;
    virtual void setBreakpoint(long callId, const JSON::Object& in_location, const JSON::Object* in_options) = 0;
    virtual void removeBreakpoint(long callId, const String& in_breakpointId) = 0;
    virtual void continueUntilNextRunLoop(long callId) = 0;
    virtual void continueToLocation(long callId, const JSON::Object& in_location) = 0;
    virtual void stepOver(long callId) = 0;
    virtual void stepInto(long callId) = 0;
    virtual void stepOut(long callId) = 0;
    virtual void pause(long callId) = 0;
    virtual void resume(long callId) = 0;
    virtual void searchInContent(long callId, const String& in_scriptId, const String& in_query, const bool* in_caseSensitive, const bool* in_isRegex) = 0;
    virtual void getScriptSource(long callId, const String& in_scriptId) = 0;
    virtual void getFunctionDetails(long callId, const String& in_functionId) = 0;
    virtual void setPauseOnExceptions(long callId, const String& in_state) = 0;
    virtual void setPauseOnAssertions(long callId, bool in_enabled) = 0;
    virtual void setPauseForInternalScripts(long callId, bool in_shouldPause) = 0;
    virtual void evaluateOnCallFrame(long callId, const String& in_callFrameId, const String& in_expression, const String* in_objectGroup, const bool* in_includeCommandLineAPI, const bool* in_doNotPauseOnExceptionsAndMuteConsole, const bool* in_returnByValue, const bool* in_generatePreview, const bool* in_saveResult) = 0;
};
class AlternateHeapBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateHeapBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void gc(long callId) = 0;
    virtual void snapshot(long callId) = 0;
    virtual void startTracking(long callId) = 0;
    virtual void stopTracking(long callId) = 0;
    virtual void getPreview(long callId, int in_heapObjectId) = 0;
    virtual void getRemoteObject(long callId, int in_heapObjectId, const String* in_objectGroup) = 0;
};
#if ENABLE(INDEXED_DATABASE)
class AlternateIndexedDBBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateIndexedDBBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void requestDatabaseNames(long callId, const String& in_securityOrigin) = 0;
    virtual void requestDatabase(long callId, const String& in_securityOrigin, const String& in_databaseName) = 0;
    virtual void requestData(long callId, const String& in_securityOrigin, const String& in_databaseName, const String& in_objectStoreName, const String& in_indexName, int in_skipCount, int in_pageSize, const JSON::Object* in_keyRange) = 0;
    virtual void clearObjectStore(long callId, const String& in_securityOrigin, const String& in_databaseName, const String& in_objectStoreName) = 0;
};
#endif // ENABLE(INDEXED_DATABASE)
class AlternateInspectorBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateInspectorBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void initialized(long callId) = 0;
};
class AlternateLayerTreeBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateLayerTreeBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void layersForNode(long callId, int in_nodeId) = 0;
    virtual void reasonsForCompositingLayer(long callId, const String& in_layerId) = 0;
};
#if ENABLE(RESOURCE_USAGE)
class AlternateMemoryBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateMemoryBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void startTracking(long callId) = 0;
    virtual void stopTracking(long callId) = 0;
};
#endif // ENABLE(RESOURCE_USAGE)
class AlternateNetworkBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateNetworkBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void setExtraHTTPHeaders(long callId, const JSON::Object& in_headers) = 0;
    virtual void getResponseBody(long callId, const String& in_requestId) = 0;
    virtual void setResourceCachingDisabled(long callId, bool in_disabled) = 0;
    virtual void loadResource(long callId, const String& in_frameId, const String& in_url) = 0;
    virtual void getSerializedCertificate(long callId, const String& in_requestId) = 0;
    virtual void resolveWebSocket(long callId, const String& in_requestId, const String* in_objectGroup) = 0;
};
class AlternatePageBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternatePageBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void reload(long callId, const bool* in_ignoreCache, const bool* in_revalidateAllResources) = 0;
    virtual void navigate(long callId, const String& in_url) = 0;
    virtual void overrideUserAgent(long callId, const String* in_value) = 0;
    virtual void overrideSetting(long callId, const String& in_setting, const bool* in_value) = 0;
    virtual void getCookies(long callId) = 0;
    virtual void deleteCookie(long callId, const String& in_cookieName, const String& in_url) = 0;
    virtual void getResourceTree(long callId) = 0;
    virtual void getResourceContent(long callId, const String& in_frameId, const String& in_url) = 0;
    virtual void searchInResource(long callId, const String& in_frameId, const String& in_url, const String& in_query, const bool* in_caseSensitive, const bool* in_isRegex, const String* in_requestId) = 0;
    virtual void searchInResources(long callId, const String& in_text, const bool* in_caseSensitive, const bool* in_isRegex) = 0;
    virtual void setShowRulers(long callId, bool in_result) = 0;
    virtual void setShowPaintRects(long callId, bool in_result) = 0;
    virtual void setEmulatedMedia(long callId, const String& in_media) = 0;
    virtual void setForcedAppearance(long callId, const String& in_appearance) = 0;
    virtual void getCompositingBordersVisible(long callId) = 0;
    virtual void setCompositingBordersVisible(long callId, bool in_visible) = 0;
    virtual void snapshotNode(long callId, int in_nodeId) = 0;
    virtual void snapshotRect(long callId, int in_x, int in_y, int in_width, int in_height, const String& in_coordinateSystem) = 0;
    virtual void archive(long callId) = 0;
};
class AlternateRuntimeBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateRuntimeBackendDispatcher() { }
    virtual void parse(long callId, const String& in_source) = 0;
    virtual void evaluate(long callId, const String& in_expression, const String* in_objectGroup, const bool* in_includeCommandLineAPI, const bool* in_doNotPauseOnExceptionsAndMuteConsole, const int* in_contextId, const bool* in_returnByValue, const bool* in_generatePreview, const bool* in_saveResult, const bool* in_emulateUserGesture) = 0;
    virtual void awaitPromise(long callId, const String& in_promiseObjectId, const bool* in_returnByValue, const bool* in_generatePreview, const bool* in_saveResult) = 0;
    virtual void callFunctionOn(long callId, const String& in_objectId, const String& in_functionDeclaration, const JSON::Array* in_arguments, const bool* in_doNotPauseOnExceptionsAndMuteConsole, const bool* in_returnByValue, const bool* in_generatePreview) = 0;
    virtual void getPreview(long callId, const String& in_objectId) = 0;
    virtual void getProperties(long callId, const String& in_objectId, const bool* in_ownProperties, const bool* in_generatePreview) = 0;
    virtual void getDisplayableProperties(long callId, const String& in_objectId, const bool* in_generatePreview) = 0;
    virtual void getCollectionEntries(long callId, const String& in_objectId, const String* in_objectGroup, const int* in_startIndex, const int* in_numberToFetch) = 0;
    virtual void saveResult(long callId, const JSON::Object& in_value, const int* in_contextId) = 0;
    virtual void releaseObject(long callId, const String& in_objectId) = 0;
    virtual void releaseObjectGroup(long callId, const String& in_objectGroup) = 0;
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void getRuntimeTypesForVariablesAtOffsets(long callId, const JSON::Array& in_locations) = 0;
    virtual void enableTypeProfiler(long callId) = 0;
    virtual void disableTypeProfiler(long callId) = 0;
    virtual void enableControlFlowProfiler(long callId) = 0;
    virtual void disableControlFlowProfiler(long callId) = 0;
    virtual void getBasicBlocks(long callId, const String& in_sourceID) = 0;
};
class AlternateScriptProfilerBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateScriptProfilerBackendDispatcher() { }
    virtual void startTracking(long callId, const bool* in_includeSamples) = 0;
    virtual void stopTracking(long callId) = 0;
};
class AlternateTargetBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateTargetBackendDispatcher() { }
    virtual void exists(long callId) = 0;
    virtual void sendMessageToTarget(long callId, const String& in_targetId, const String& in_message) = 0;
};
class AlternateTimelineBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateTimelineBackendDispatcher() { }
    virtual void start(long callId, const int* in_maxCallStackDepth) = 0;
    virtual void stop(long callId) = 0;
    virtual void setAutoCaptureEnabled(long callId, bool in_enabled) = 0;
    virtual void setInstruments(long callId, const JSON::Array& in_instruments) = 0;
};
class AlternateWorkerBackendDispatcher : public AlternateBackendDispatcher {
public:
    virtual ~AlternateWorkerBackendDispatcher() { }
    virtual void enable(long callId) = 0;
    virtual void disable(long callId) = 0;
    virtual void initialized(long callId, const String& in_workerId) = 0;
    virtual void sendMessageToWorker(long callId, const String& in_workerId, const String& in_message) = 0;
};

} // namespace Inspector

#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
