OSDN Git Service

Merge WebKit at r70209: Initial merge by Git
[android-x86/external-webkit.git] / WebCore / inspector / InspectorState.h
1 /*\r
2  * Copyright (C) 2010 Google Inc. All rights reserved.\r
3  *\r
4  * Redistribution and use in source and binary forms, with or without\r
5  * modification, are permitted provided that the following conditions\r
6  * are met:\r
7  *\r
8  * 1.  Redistributions of source code must retain the above copyright\r
9  *     notice, this list of conditions and the following disclaimer.\r
10  * 2.  Redistributions in binary form must reproduce the above copyright\r
11  *     notice, this list of conditions and the following disclaimer in the\r
12  *     documentation and/or other materials provided with the distribution.\r
13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of\r
14  *     its contributors may be used to endorse or promote products derived\r
15  *     from this software without specific prior written permission.\r
16  *\r
17  * THIS SOFTWARE IS PROVIDED BY GOOGLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27  */\r
28 \r
29 #ifndef InspectorState_h\r
30 #define InspectorState_h\r
31 \r
32 #if ENABLE(INSPECTOR)\r
33 \r
34 #include "InspectorValues.h"\r
35 #include "PlatformString.h"\r
36 \r
37 #include <wtf/HashMap.h>\r
38 #include <wtf/RefCounted.h>\r
39 \r
40 namespace WebCore {\r
41 \r
42 class InspectorClient;\r
43 \r
44 class InspectorState {\r
45 public:\r
46     enum InspectorPropertyId {\r
47         monitoringXHR = 1,\r
48         resourceTrackingEnabled,\r
49         resourceTrackingAlwaysEnabled,\r
50         timelineProfilerEnabled,\r
51         searchingForNode,\r
52         profilerAlwaysEnabled,\r
53         frontendSettings,\r
54         debuggerAlwaysEnabled,\r
55         lastActivePanel,\r
56         inspectorStartsAttached,\r
57         inspectorAttachedHeight,\r
58         pauseOnExceptionsState,\r
59         consoleMessagesEnabled,\r
60         lastPropertyId\r
61     };\r
62 \r
63     InspectorState(InspectorClient* client);\r
64 \r
65     PassRefPtr<InspectorObject> generateStateObjectForFrontend();\r
66     void restoreFromInspectorCookie(const String& jsonString);\r
67     void loadFromSettings();\r
68     String getFrontendAlias(InspectorPropertyId propertyId);\r
69 \r
70     bool getBoolean(InspectorPropertyId propertyId);\r
71     String getString(InspectorPropertyId propertyId);\r
72     long getLong(InspectorPropertyId propertyId);\r
73 \r
74     void setBoolean(InspectorPropertyId propertyId, bool value) { setValue(propertyId, InspectorBasicValue::create(value), value ? "true" : "false"); }\r
75     void setString(InspectorPropertyId propertyId, const String& value) { setValue(propertyId, InspectorString::create(value), value); }\r
76     void setLong(InspectorPropertyId propertyId, long value) { setValue(propertyId, InspectorBasicValue::create((double)value), String::number(value)); }\r
77 \r
78 private:\r
79     void updateCookie();\r
80     void setValue(InspectorPropertyId propertyId, PassRefPtr<InspectorValue> value, const String& stringValue);\r
81 \r
82     struct Property {\r
83         static Property create(PassRefPtr<InspectorValue> value, const String& frontendAlias, const String& preferenceName);\r
84         String m_frontendAlias;\r
85         String m_preferenceName;\r
86         RefPtr<InspectorValue> m_value;\r
87     };\r
88     typedef HashMap<long, Property> PropertyMap;\r
89     PropertyMap m_properties;\r
90 \r
91     void registerBoolean(InspectorPropertyId propertyId, bool value, const String& frontendAlias, const String& preferenceName);\r
92     void registerString(InspectorPropertyId propertyId, const String& value, const String& frontendAlias, const String& preferenceName);\r
93     void registerLong(InspectorPropertyId propertyId, long value, const String& frontendAlias, const String& preferenceName);\r
94 \r
95     InspectorClient* m_client;\r
96 };\r
97 \r
98 } // namespace WebCore\r
99 \r
100 #endif // ENABLE(INSPECTOR)\r
101 #endif // !defined(InspectorState_h)\r