1/*
2 * Copyright (C) 2007 Apple Inc.  All rights reserved.
3 * Copyright (C) 2011 Google Inc.  All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#ifndef InspectorClient_h
28#define InspectorClient_h
29
30#include "core/inspector/InspectorStateClient.h"
31#include "wtf/Forward.h"
32#include "wtf/HashMap.h"
33#include "wtf/HashSet.h"
34
35namespace WebCore {
36
37class Page;
38class PlatformKeyboardEvent;
39class PlatformMouseEvent;
40
41class InspectorClient : public InspectorStateClient {
42public:
43    virtual void highlight() = 0;
44    virtual void hideHighlight() = 0;
45
46    virtual void clearBrowserCache() { }
47    virtual void clearBrowserCookies() { }
48
49    typedef void (*TraceEventCallback)(char phase, const unsigned char*, const char* name, unsigned long long id,
50        int numArgs, const char* const* argNames, const unsigned char* argTypes, const unsigned long long* argValues,
51        unsigned char flags);
52    virtual void setTraceEventCallback(TraceEventCallback) { }
53
54    virtual void overrideDeviceMetrics(int /*width*/, int /*height*/, float /*fontScaleFactor*/, bool /*fitWindow*/) { }
55    virtual void autoZoomPageToFitWidth() { }
56
57    virtual bool overridesShowPaintRects() { return false; }
58    virtual void setShowPaintRects(bool) { }
59    virtual void setShowDebugBorders(bool) { }
60    virtual void setShowFPSCounter(bool) { }
61    virtual void setContinuousPaintingEnabled(bool) { }
62    virtual void setShowScrollBottleneckRects(bool) { }
63
64    virtual void getAllocatedObjects(HashSet<const void*>&) { }
65    virtual void dumpUncountedAllocatedObjects(const HashMap<const void*, size_t>&) { }
66
67    virtual void dispatchKeyEvent(const PlatformKeyboardEvent&) { }
68    virtual void dispatchMouseEvent(const PlatformMouseEvent&) { }
69
70    static bool doDispatchMessageOnFrontendPage(Page* frontendPage, const String& message);
71
72protected:
73    virtual ~InspectorClient() { }
74};
75
76} // namespace WebCore
77
78#endif // !defined(InspectorClient_h)
79