[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

pfeldman at chromium.org pfeldman at chromium.org
Thu Apr 8 00:13:57 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 069c51e435038a6f37efebfea6e497cc1edbfd8e
Author: pfeldman at chromium.org <pfeldman at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Dec 3 12:46:59 2009 +0000

    2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
    
            Reviewed by Timothy Hatcher.
    
            Web Inspector: Simplify the settings support in inspector controller.
    
            https://bugs.webkit.org/show_bug.cgi?id=32076
    
            Test: inspector/settings-set-get.html
    
            * WebCore.Inspector.exp:
            * bindings/js/JSInspectorFrontendHostCustom.cpp:
            * bindings/v8/custom/V8InspectorFrontendHostCustom.cpp:
            * inspector/InspectorClient.h:
            * inspector/InspectorController.cpp:
            (WebCore::InspectorController::~InspectorController):
            (WebCore::InspectorController::setting):
            (WebCore::InspectorController::setSetting):
            (WebCore::InspectorController::setWindowVisible):
            (WebCore::InspectorController::attachWindow):
            (WebCore::InspectorController::setAttachedWindowHeight):
            (WebCore::InspectorController::storeLastActivePanel):
            (WebCore::InspectorController::scriptObjectReady):
            (WebCore::InspectorController::showWindow):
            (WebCore::InspectorController::enableResourceTracking):
            (WebCore::InspectorController::disableResourceTracking):
            (WebCore::InspectorController::ensureResourceTrackingSettingsLoaded):
            (WebCore::InspectorController::enableProfiler):
            (WebCore::InspectorController::disableProfiler):
            (WebCore::InspectorController::enableDebuggerFromFrontend):
            (WebCore::InspectorController::disableDebugger):
            * inspector/InspectorController.h:
            * inspector/InspectorFrontendHost.cpp:
            (WebCore::InspectorFrontendHost::setting):
            (WebCore::InspectorFrontendHost::setSetting):
            * inspector/InspectorFrontendHost.h:
            * inspector/InspectorFrontendHost.idl:
            * loader/EmptyClients.h:
            (WebCore::EmptyInspectorClient::populateSetting):
            (WebCore::EmptyInspectorClient::storeSetting):
    
    WebKit/chromium
            * src/InspectorClientImpl.cpp:
            (WebKit::InspectorClientImpl::hiddenPanels):
            (WebKit::InspectorClientImpl::populateSetting):
            (WebKit::InspectorClientImpl::storeSetting):
            (WebKit::InspectorClientImpl::loadSettings):
            (WebKit::InspectorClientImpl::saveSettings):
            * src/InspectorClientImpl.h:
    
    WebKit/cf
            * WebCoreSupport/WebInspectorClientCF.cpp:
            (WebInspectorClient::populateSetting):
            (WebInspectorClient::storeSetting):
    
    WebKit/gtk
            * WebCoreSupport/InspectorClientGtk.cpp:
            (WebKit::InspectorClient::populateSetting):
            (WebKit::InspectorClient::storeSetting):
            * WebCoreSupport/InspectorClientGtk.h:
    
    WebKit/haiku
            * WebCoreSupport/InspectorClientHaiku.cpp:
            (WebCore::InspectorClientHaiku::populateSetting):
            (WebCore::InspectorClientHaiku::storeSetting):
            * WebCoreSupport/InspectorClientHaiku.h:
    
    WebKit/mac
            * WebCoreSupport/WebInspectorClient.h:
            * WebCoreSupport/WebInspectorClient.mm:
            (-[WebInspectorWindowController showWindow:]):
            (-[WebInspectorWindowController attach]):
            (-[WebInspectorWindowController detach]):
    
    WebKit/qt
            * WebCoreSupport/InspectorClientQt.cpp:
            (WebCore::InspectorClientQt::populateSetting):
            (WebCore::InspectorClientQt::storeSetting):
            (WebCore::variantToSetting):
            (WebCore::settingToVariant):
            * WebCoreSupport/InspectorClientQt.h:
    
    WebKit/win
            * WebCoreSupport/WebInspectorClient.cpp:
            (WebInspectorClient::attachWindow):
            (WebInspectorClient::detachWindow):
            (WebInspectorClient::showWindowWithoutNotifications):
            * WebCoreSupport/WebInspectorClient.h:
    
    WebKit/wx
            * WebKitSupport/InspectorClientWx.cpp:
            (WebCore::InspectorClientWx::populateSetting):
            (WebCore::InspectorClientWx::storeSetting):
            * WebKitSupport/InspectorClientWx.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51631 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index d166f7a..31a945a 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,14 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * inspector/settings-set-get-expected.txt: Added.
+        * inspector/settings-set-get.html: Added.
+
 2009-12-03  Oliver Hunt  <oliver at apple.com>
 
         Reviewed by Maciej Stachowiak.
diff --git a/LayoutTests/inspector/settings-set-get-expected.txt b/LayoutTests/inspector/settings-set-get-expected.txt
new file mode 100644
index 0000000..bac9643
--- /dev/null
+++ b/LayoutTests/inspector/settings-set-get-expected.txt
@@ -0,0 +1,5 @@
+Tests front-end settings read/write.
+
+Setting should have 'bar' value, was: 'bar'
+Setting should have 'baz' value, was: 'baz'
+
diff --git a/LayoutTests/inspector/settings-set-get.html b/LayoutTests/inspector/settings-set-get.html
new file mode 100644
index 0000000..8341d7d
--- /dev/null
+++ b/LayoutTests/inspector/settings-set-get.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+<script src="inspector-test.js"></script>
+<script>
+
+function doit()
+{
+    evaluateInWebInspector("frontend_setSetting('foo', 'bar')");
+    function callback(result)
+    {
+        output("Setting should have 'bar' value, was: '" + result + "'");
+    }
+    evaluateInWebInspector("frontend_setting('foo')", callback);
+
+    evaluateInWebInspector("frontend_setSetting('foo', 'baz')");
+    function callback2(result)
+    {
+        output("Setting should have 'baz' value, was: '" + result + "'");
+        notifyDone();
+    }
+    evaluateInWebInspector("frontend_setting('foo')", callback2);
+}
+
+// Frontend functions.
+
+function frontend_setSetting(key, value)
+{
+    InspectorFrontendHost.setSetting(key, value);
+}
+
+function frontend_setting(key)
+{
+    return InspectorFrontendHost.setting(key);
+}
+
+</script>
+</head>
+
+<body onload="onload()">
+<p id="test-topic">
+Tests front-end settings read/write.
+</p>
+
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 787105e..f9448b9 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,44 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        Test: inspector/settings-set-get.html
+
+        * WebCore.Inspector.exp:
+        * bindings/js/JSInspectorFrontendHostCustom.cpp:
+        * bindings/v8/custom/V8InspectorFrontendHostCustom.cpp:
+        * inspector/InspectorClient.h:
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::~InspectorController):
+        (WebCore::InspectorController::setting):
+        (WebCore::InspectorController::setSetting):
+        (WebCore::InspectorController::setWindowVisible):
+        (WebCore::InspectorController::attachWindow):
+        (WebCore::InspectorController::setAttachedWindowHeight):
+        (WebCore::InspectorController::storeLastActivePanel):
+        (WebCore::InspectorController::scriptObjectReady):
+        (WebCore::InspectorController::showWindow):
+        (WebCore::InspectorController::enableResourceTracking):
+        (WebCore::InspectorController::disableResourceTracking):
+        (WebCore::InspectorController::ensureResourceTrackingSettingsLoaded):
+        (WebCore::InspectorController::enableProfiler):
+        (WebCore::InspectorController::disableProfiler):
+        (WebCore::InspectorController::enableDebuggerFromFrontend):
+        (WebCore::InspectorController::disableDebugger):
+        * inspector/InspectorController.h:
+        * inspector/InspectorFrontendHost.cpp:
+        (WebCore::InspectorFrontendHost::setting):
+        (WebCore::InspectorFrontendHost::setSetting):
+        * inspector/InspectorFrontendHost.h:
+        * inspector/InspectorFrontendHost.idl:
+        * loader/EmptyClients.h:
+        (WebCore::EmptyInspectorClient::populateSetting):
+        (WebCore::EmptyInspectorClient::storeSetting):
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebCore/WebCore.Inspector.exp b/WebCore/WebCore.Inspector.exp
index 000594d..379b7a2 100644
--- a/WebCore/WebCore.Inspector.exp
+++ b/WebCore/WebCore.Inspector.exp
@@ -1,4 +1,4 @@
-__ZN7WebCore19InspectorController10setSettingERKNS_6StringERKNS0_7SettingE
+__ZN7WebCore19InspectorController10setSettingERKNS_6StringES3_
 __ZN7WebCore19InspectorController12attachWindowEv
 __ZN7WebCore19InspectorController12detachWindowEv
 __ZN7WebCore19InspectorController14enableDebuggerEv
diff --git a/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp b/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp
index 5b44134..56f85ec 100644
--- a/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp
+++ b/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp
@@ -89,88 +89,6 @@ JSValue JSInspectorFrontendHost::search(ExecState* exec, const ArgList& args)
     return constructArray(exec, result);
 }
 
-JSValue JSInspectorFrontendHost::setting(ExecState* exec, const ArgList& args)
-{
-    if (args.size() < 1)
-        return jsUndefined();
-
-    String key = args.at(0).toString(exec);
-    if (exec->hadException())
-        return jsUndefined();
-
-    InspectorController* ic = impl()->inspectorController();
-    if (!ic)
-        return jsUndefined();
-    const InspectorController::Setting& setting = ic->setting(key);
-
-    switch (setting.type()) {
-        default:
-        case InspectorController::Setting::NoType:
-            return jsUndefined();
-        case InspectorController::Setting::StringType:
-            return jsString(exec, setting.string());
-        case InspectorController::Setting::DoubleType:
-            return jsNumber(exec, setting.doubleValue());
-        case InspectorController::Setting::IntegerType:
-            return jsNumber(exec, setting.integerValue());
-        case InspectorController::Setting::BooleanType:
-            return jsBoolean(setting.booleanValue());
-        case InspectorController::Setting::StringVectorType: {
-            MarkedArgumentBuffer stringsArray;
-            const Vector<String>& strings = setting.stringVector();
-            const unsigned length = strings.size();
-            for (unsigned i = 0; i < length; ++i)
-                stringsArray.append(jsString(exec, strings[i]));
-            return constructArray(exec, stringsArray);
-        }
-    }
-}
-
-JSValue JSInspectorFrontendHost::setSetting(ExecState* exec, const ArgList& args)
-{
-    if (args.size() < 2)
-        return jsUndefined();
-
-    String key = args.at(0).toString(exec);
-    if (exec->hadException())
-        return jsUndefined();
-
-    InspectorController::Setting setting;
-
-    JSValue value = args.at(1);
-    if (value.isUndefined() || value.isNull()) {
-        // Do nothing. The setting is already NoType.
-        ASSERT(setting.type() == InspectorController::Setting::NoType);
-    } else if (value.isString())
-        setting.set(value.toString(exec));
-    else if (value.isNumber())
-        setting.set(value.toNumber(exec));
-    else if (value.isBoolean())
-        setting.set(value.toBoolean(exec));
-    else {
-        JSArray* jsArray = asArray(value);
-        if (!jsArray)
-            return jsUndefined();
-        Vector<String> strings;
-        for (unsigned i = 0; i < jsArray->length(); ++i) {
-            String item = jsArray->get(exec, i).toString(exec);
-            if (exec->hadException())
-                return jsUndefined();
-            strings.append(item);
-        }
-        setting.set(strings);
-    }
-
-    if (exec->hadException())
-        return jsUndefined();
-
-    InspectorController* ic = impl()->inspectorController();
-    if (ic)
-        ic->setSetting(key, setting);
-
-    return jsUndefined();
-}
-
 } // namespace WebCore
 
 #endif // ENABLE(INSPECTOR)
diff --git a/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp b/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
index 08cb889..afbd9ac 100644
--- a/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
@@ -84,87 +84,4 @@ CALLBACK_FUNC_DECL(InspectorFrontendHostSearch)
     return result;
 }
 
-CALLBACK_FUNC_DECL(InspectorFrontendHostSetting)
-{
-    INC_STATS("InspectorFrontendHost.setting()");
-
-    if (args.Length() < 1)
-        return v8::Undefined();
-
-    String key = toWebCoreStringWithNullCheck(args[0]);
-    if (key.isEmpty())
-        return v8::Undefined();
-
-    InspectorFrontendHost* inspectorHost = V8DOMWrapper::convertToNativeObject<InspectorFrontendHost>(V8ClassIndex::INSPECTORFRONTENDHOST, args.Holder());
-    InspectorController* ic = inspectorHost->inspectorController();
-    if (!ic)
-        return v8::Undefined();
-    const InspectorController::Setting& setting = ic->setting(key);
-
-    switch (setting.type()) {
-        default:
-        case InspectorController::Setting::NoType:
-            return v8::Undefined();
-        case InspectorController::Setting::StringType:
-            return v8String(setting.string());
-        case InspectorController::Setting::DoubleType:
-            return v8::Number::New(setting.doubleValue());
-        case InspectorController::Setting::IntegerType:
-            return v8::Number::New(setting.integerValue());
-        case InspectorController::Setting::BooleanType:
-            return v8Boolean(setting.booleanValue());
-        case InspectorController::Setting::StringVectorType: {
-            const Vector<String>& strings = setting.stringVector();
-            v8::Local<v8::Array> stringsArray = v8::Array::New(strings.size());
-            const unsigned length = strings.size();
-            for (unsigned i = 0; i < length; ++i)
-                stringsArray->Set(v8::Number::New(i), v8String(strings[i]));
-            return stringsArray;
-        }
-    }
-}
-
-CALLBACK_FUNC_DECL(InspectorFrontendHostSetSetting)
-{
-    INC_STATS("InspectorFrontendHost.setSetting()");
-    if (args.Length() < 2)
-        return v8::Undefined();
-
-    String key = toWebCoreStringWithNullCheck(args[0]);
-    if (key.isEmpty())
-        return v8::Undefined();
-
-    InspectorController::Setting setting;
-
-    v8::Local<v8::Value> value = args[1];
-    if (value->IsUndefined() || value->IsNull()) {
-        // Do nothing. The setting is already NoType.
-        ASSERT(setting.type() == InspectorController::Setting::NoType);
-    } else if (value->IsString())
-        setting.set(toWebCoreStringWithNullCheck(value));
-    else if (value->IsNumber())
-        setting.set(value->NumberValue());
-    else if (value->IsBoolean())
-        setting.set(value->BooleanValue());
-    else if (value->IsArray()) {
-        v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(value);
-        Vector<String> strings;
-        for (unsigned i = 0; i < v8Array->Length(); ++i) {
-            String item = toWebCoreString(v8Array->Get(v8::Integer::New(i)));
-            if (item.isEmpty())
-                return v8::Undefined();
-            strings.append(item);
-        }
-        setting.set(strings);
-    } else
-        return v8::Undefined();
-
-    InspectorFrontendHost* inspectorHost = V8DOMWrapper::convertToNativeObject<InspectorFrontendHost>(V8ClassIndex::INSPECTORFRONTENDHOST, args.Holder());
-    InspectorController* ic = inspectorHost->inspectorController();
-    if (ic)
-        inspectorHost->inspectorController()->setSetting(key, setting);
-
-    return v8::Undefined();
-}
-
 } // namespace WebCore
diff --git a/WebCore/inspector/InspectorClient.h b/WebCore/inspector/InspectorClient.h
index f96662a..e448cd2 100644
--- a/WebCore/inspector/InspectorClient.h
+++ b/WebCore/inspector/InspectorClient.h
@@ -59,9 +59,8 @@ public:
 
     virtual void inspectedURLChanged(const String& newURL) = 0;
 
-    virtual void populateSetting(const String& key, InspectorController::Setting&) = 0;
-    virtual void storeSetting(const String& key, const InspectorController::Setting&) = 0;
-    virtual void removeSetting(const String& key) = 0;
+    virtual void populateSetting(const String& key, String* value) = 0;
+    virtual void storeSetting(const String& key, const String& value) = 0;
 
     virtual void inspectorWindowObjectCleared() = 0;
 };
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index b86eda3..c269825 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -121,7 +121,6 @@ static const float minimumAttachedHeight = 250.0f;
 static const float maximumAttachedHeightRatio = 0.75f;
 
 static unsigned s_inspectorControllerCount;
-static HashMap<String, InspectorController::Setting*>* s_settingCache;
 
 InspectorController::InspectorController(Page* page, InspectorClient* client)
     : m_inspectedPage(page)
@@ -168,12 +167,6 @@ InspectorController::~InspectorController()
     ASSERT(s_inspectorControllerCount);
     --s_inspectorControllerCount;
 
-    if (!s_inspectorControllerCount && s_settingCache) {
-        deleteAllValues(*s_settingCache);
-        delete s_settingCache;
-        s_settingCache = 0;
-    }
-    
     releaseDOMAgent();
 
     m_inspectorBackend->disconnectController();
@@ -204,46 +197,22 @@ bool InspectorController::enabled() const
     return m_inspectedPage->settings()->developerExtrasEnabled();
 }
 
-const InspectorController::Setting& InspectorController::setting(const String& key) const
+String InspectorController::setting(const String& key) const
 {
-    if (!s_settingCache)
-        s_settingCache = new HashMap<String, Setting*>;
-
-    if (Setting* cachedSetting = s_settingCache->get(key))
-        return *cachedSetting;
-
-    Setting* newSetting = new Setting;
-    s_settingCache->set(key, newSetting);
-
-    m_client->populateSetting(key, *newSetting);
+    Settings::iterator it = m_settings.find(key);
+    if (it != m_settings.end())
+        return it->second;
 
-    return *newSetting;
+    String value;
+    m_client->populateSetting(key, &value);
+    m_settings.set(key, value);
+    return value;
 }
 
-void InspectorController::setSetting(const String& key, const Setting& setting)
+void InspectorController::setSetting(const String& key, const String& value)
 {
-    if (setting.type() == Setting::NoType) {
-        if (s_settingCache) {
-            Setting* cachedSetting = s_settingCache->get(key);
-            if (cachedSetting) {
-                s_settingCache->remove(key);
-                delete cachedSetting;
-            }
-        }
-
-        m_client->removeSetting(key);
-        return;
-    }
-
-    if (!s_settingCache)
-        s_settingCache = new HashMap<String, Setting*>;
-
-    if (Setting* cachedSetting = s_settingCache->get(key))
-        *cachedSetting = setting;
-    else
-        s_settingCache->set(key, new Setting(setting));
-
-    m_client->storeSetting(key, setting);
+    m_settings.set(key, value);
+    m_client->storeSetting(key, value);
 }
 
 // Trying to inspect something in a frame with JavaScript disabled would later lead to
@@ -323,11 +292,8 @@ void InspectorController::setWindowVisible(bool visible, bool attached)
         populateScriptObjects();
 
         if (m_showAfterVisible == CurrentPanel) {
-          Setting lastActivePanelSetting = setting(lastActivePanelSettingName);
-          if (lastActivePanelSetting.type() == Setting::StringType)
-              m_showAfterVisible = specialPanelForJSName(lastActivePanelSetting.string());
-          else
-              m_showAfterVisible = ElementsPanel;
+          String lastActivePanelSetting = setting(lastActivePanelSettingName);
+          m_showAfterVisible = specialPanelForJSName(lastActivePanelSetting);
         }
 
         if (m_nodeToFocus)
@@ -439,8 +405,10 @@ void InspectorController::attachWindow()
 
     m_client->attachWindow();
 
-    Setting attachedHeight = setting(inspectorAttachedHeightName);
-    unsigned preferredHeight = attachedHeight.type() == Setting::IntegerType ? attachedHeight.integerValue() : defaultAttachedHeight;
+    String attachedHeight = setting(inspectorAttachedHeightName);
+    bool success = true;
+    int height = attachedHeight.toInt(&success);
+    unsigned preferredHeight = success ? height : defaultAttachedHeight;
 
     // We need to constrain the window height here in case the user has resized the inspected page's window so that
     // the user's preferred height would be too big to display.
@@ -470,14 +438,14 @@ void InspectorController::setAttachedWindowHeight(unsigned height)
     unsigned totalHeight = m_page->mainFrame()->view()->visibleHeight() + m_inspectedPage->mainFrame()->view()->visibleHeight();
     unsigned attachedHeight = constrainedAttachedWindowHeight(height, totalHeight);
     
-    setSetting(inspectorAttachedHeightName, Setting(attachedHeight));
+    setSetting(inspectorAttachedHeightName, String::number(attachedHeight));
     
     m_client->setAttachedWindowHeight(attachedHeight);
 }
 
 void InspectorController::storeLastActivePanel(const String& panelName)
 {
-    setSetting(lastActivePanelSettingName, Setting(panelName));
+    setSetting(lastActivePanelSettingName, panelName);
 }
 
 void InspectorController::toggleSearchForNodeInPage()
@@ -549,11 +517,11 @@ void InspectorController::scriptObjectReady()
     setFrontendProxyObject(m_scriptState, webInspectorObj, injectedScriptObj);
 
 #if ENABLE(JAVASCRIPT_DEBUGGER)
-    Setting debuggerEnabled = setting(debuggerEnabledSettingName);
-    if (debuggerEnabled.type() == Setting::BooleanType && debuggerEnabled.booleanValue())
+    String debuggerEnabled = setting(debuggerEnabledSettingName);
+    if (debuggerEnabled == "true")
         enableDebugger();
-    Setting profilerEnabled = setting(profilerEnabledSettingName);
-    if (profilerEnabled.type() == Setting::BooleanType && profilerEnabled.booleanValue())
+    String profilerEnabled = setting(profilerEnabledSettingName);
+    if (profilerEnabled == "true")
         enableProfiler();
 #endif
 
@@ -645,8 +613,10 @@ void InspectorController::showWindow()
 
     m_client->showWindow();
 
-    Setting attachedHeight = setting(inspectorAttachedHeightName);
-    unsigned preferredHeight = attachedHeight.type() == Setting::IntegerType ? attachedHeight.integerValue() : defaultAttachedHeight;
+    String attachedHeight = setting(inspectorAttachedHeightName);
+    bool success = true;
+    int height = attachedHeight.toInt(&success);
+    unsigned preferredHeight = success ? height : defaultAttachedHeight;
 
     // This call might not go through (if the window starts out detached), but if the window is initially created attached,
     // InspectorController::attachWindow is never called, so we need to make sure to set the attachedWindowHeight.
@@ -1077,7 +1047,7 @@ void InspectorController::enableResourceTracking(bool always, bool reload)
         return;
 
     if (always)
-        setSetting(resourceTrackingEnabledSettingName, Setting(true));
+        setSetting(resourceTrackingEnabledSettingName, "true");
 
     if (m_resourceTrackingEnabled)
         return;
@@ -1097,7 +1067,7 @@ void InspectorController::disableResourceTracking(bool always)
         return;
 
     if (always)
-        setSetting(resourceTrackingEnabledSettingName, Setting(false));
+        setSetting(resourceTrackingEnabledSettingName, "false");
 
     ASSERT(m_inspectedPage);
     m_resourceTrackingEnabled = false;
@@ -1111,8 +1081,8 @@ void InspectorController::ensureResourceTrackingSettingsLoaded()
         return;
     m_resourceTrackingSettingsLoaded = true;
 
-    Setting resourceTracking = setting(resourceTrackingEnabledSettingName);
-    if (resourceTracking.type() == Setting::BooleanType && resourceTracking.booleanValue())
+    String resourceTracking = setting(resourceTrackingEnabledSettingName);
+    if (resourceTracking == "true")
         m_resourceTrackingEnabled = true;
 }
 
@@ -1500,7 +1470,7 @@ void InspectorController::toggleRecordButton(bool isProfiling)
 void InspectorController::enableProfiler(bool always, bool skipRecompile)
 {
     if (always)
-        setSetting(profilerEnabledSettingName, Setting(true));
+        setSetting(profilerEnabledSettingName, "true");
 
     if (m_profilerEnabled)
         return;
@@ -1517,7 +1487,7 @@ void InspectorController::enableProfiler(bool always, bool skipRecompile)
 void InspectorController::disableProfiler(bool always)
 {
     if (always)
-        setSetting(profilerEnabledSettingName, Setting(false));
+        setSetting(profilerEnabledSettingName, "false");
 
     if (!m_profilerEnabled)
         return;
@@ -1533,7 +1503,7 @@ void InspectorController::disableProfiler(bool always)
 void InspectorController::enableDebuggerFromFrontend(bool always)
 {
     if (always)
-        setSetting(debuggerEnabledSettingName, Setting(true));
+        setSetting(debuggerEnabledSettingName, "true");
 
     ASSERT(m_inspectedPage);
 
@@ -1566,7 +1536,7 @@ void InspectorController::disableDebugger(bool always)
         return;
 
     if (always)
-        setSetting(debuggerEnabledSettingName, Setting(false));
+        setSetting(debuggerEnabledSettingName, "false");
 
     ASSERT(m_inspectedPage);
 
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 6f261ec..0dd6fb1 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -110,60 +110,6 @@ public:
         StoragePanel
     } SpecialPanels;
 
-    struct Setting {
-        enum Type {
-            NoType, StringType, StringVectorType, DoubleType, IntegerType, BooleanType
-        };
-
-        Setting()
-            : m_type(NoType)
-        {
-        }
-
-        explicit Setting(bool value)
-            : m_type(BooleanType)
-        {
-            m_simpleContent.m_boolean = value;
-        }
-
-        explicit Setting(unsigned value)
-            : m_type(IntegerType)
-        {
-            m_simpleContent.m_integer = value;
-        }
-
-        explicit Setting(const String& value)
-            : m_type(StringType)
-        {
-            m_string = value;
-        }
-
-        Type type() const { return m_type; }
-
-        String string() const { ASSERT(m_type == StringType); return m_string; }
-        const Vector<String>& stringVector() const { ASSERT(m_type == StringVectorType); return m_stringVector; }
-        double doubleValue() const { ASSERT(m_type == DoubleType); return m_simpleContent.m_double; }
-        long integerValue() const { ASSERT(m_type == IntegerType); return m_simpleContent.m_integer; }
-        bool booleanValue() const { ASSERT(m_type == BooleanType); return m_simpleContent.m_boolean; }
-
-        void set(const String& value) { m_type = StringType; m_string = value; }
-        void set(const Vector<String>& value) { m_type = StringVectorType; m_stringVector = value; }
-        void set(double value) { m_type = DoubleType; m_simpleContent.m_double = value; }
-        void set(long value) { m_type = IntegerType; m_simpleContent.m_integer = value; }
-        void set(bool value) { m_type = BooleanType; m_simpleContent.m_boolean = value; }
-
-    private:
-        Type m_type;
-
-        String m_string;
-        Vector<String> m_stringVector;
-
-        union {
-            double m_double;
-            long m_integer;
-            bool m_boolean;
-        } m_simpleContent;
-    };
     InspectorController(Page*, InspectorClient*);
     ~InspectorController();
 
@@ -178,8 +124,8 @@ public:
 
     Page* inspectedPage() const { return m_inspectedPage; }
 
-    const Setting& setting(const String& key) const;
-    void setSetting(const String& key, const Setting&);
+    String setting(const String& key) const;
+    void setSetting(const String& key, const String& value);
 
     void inspect(Node*);
     void highlight(Node*);
@@ -397,8 +343,11 @@ private:
     RefPtr<InjectedScriptHost> m_injectedScriptHost;
     HashMap<String, ScriptValue> m_idToWrappedObject;
     ObjectGroupsMap m_objectGroups;
-
     long m_lastBoundObjectId;
+
+    typedef HashMap<String, String> Settings;
+    mutable Settings m_settings;
+
     Vector<pair<long, String> > m_pendingEvaluateTestCommands;
 #if ENABLE(JAVASCRIPT_DEBUGGER)
     bool m_debuggerEnabled;
diff --git a/WebCore/inspector/InspectorFrontendHost.cpp b/WebCore/inspector/InspectorFrontendHost.cpp
index 138a4df..8d3b3a1 100644
--- a/WebCore/inspector/InspectorFrontendHost.cpp
+++ b/WebCore/inspector/InspectorFrontendHost.cpp
@@ -188,6 +188,17 @@ bool InspectorFrontendHost::addSourceToFrame(const String& mimeType, const Strin
     return true;
 }
 
+String InspectorFrontendHost::setting(const String& key)
+{
+    return m_inspectorController ? m_inspectorController->setting(key) : "";
+}
+
+void InspectorFrontendHost::setSetting(const String& key, const String& value)
+{
+    if (m_inspectorController)
+        m_inspectorController->setSetting(key, value);
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(INSPECTOR)
diff --git a/WebCore/inspector/InspectorFrontendHost.h b/WebCore/inspector/InspectorFrontendHost.h
index dcbec6b..0915fbe 100644
--- a/WebCore/inspector/InspectorFrontendHost.h
+++ b/WebCore/inspector/InspectorFrontendHost.h
@@ -70,6 +70,9 @@ public:
     void addResourceSourceToFrame(long identifier, Node* frame);
     bool addSourceToFrame(const String& mimeType, const String& source, Node* frame);
 
+    String setting(const String& key);
+    void setSetting(const String& key, const String& value);
+
 private:
     InspectorFrontendHost(InspectorController* inspectorController, InspectorClient* client);
 
diff --git a/WebCore/inspector/InspectorFrontendHost.idl b/WebCore/inspector/InspectorFrontendHost.idl
index 9a7581d..fad83e8 100644
--- a/WebCore/inspector/InspectorFrontendHost.idl
+++ b/WebCore/inspector/InspectorFrontendHost.idl
@@ -51,8 +51,9 @@ module core {
         void addResourceSourceToFrame(in long identifier, in Node frame);
         boolean addSourceToFrame(in DOMString mimeType, in DOMString sourceValue, in Node frame);
 
+        DOMString setting(in DOMString key);
+        void setSetting(in DOMString key, in DOMString value);
+
         [Custom] void search(in Node node, in DOMString query);
-        [Custom] DOMObject setting(in DOMString key);
-        [Custom] void setSetting(in DOMString key, in DOMObject  value);
     };
 }
diff --git a/WebCore/loader/EmptyClients.h b/WebCore/loader/EmptyClients.h
index 99777ad..bf34a1b 100644
--- a/WebCore/loader/EmptyClients.h
+++ b/WebCore/loader/EmptyClients.h
@@ -482,9 +482,8 @@ public:
     virtual void hideHighlight() { }
     virtual void inspectedURLChanged(const String&) { }
 
-    virtual void populateSetting(const String&, InspectorController::Setting&) { }
-    virtual void storeSetting(const String&, const InspectorController::Setting&) { }
-    virtual void removeSetting(const String&) { }
+    virtual void populateSetting(const String&, String*) { }
+    virtual void storeSetting(const String&, const String&) { }
 
     virtual void inspectorWindowObjectCleared() { }
 };
diff --git a/WebKit/cf/ChangeLog b/WebKit/cf/ChangeLog
index 27caf1c..1d061fb 100644
--- a/WebKit/cf/ChangeLog
+++ b/WebKit/cf/ChangeLog
@@ -1,3 +1,15 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * WebCoreSupport/WebInspectorClientCF.cpp:
+        (WebInspectorClient::populateSetting):
+        (WebInspectorClient::storeSetting):
+
 2009-04-20  Steve Falkenburg  <sfalken at apple.com>
 
         Separate JavaScriptCore.dll from WebKit.dll.
diff --git a/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp b/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp
index 600d58d..cb47205 100644
--- a/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp
+++ b/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp
@@ -64,7 +64,7 @@ static inline CFStringRef createKeyForPreferences(const String& key)
     return CFStringCreateWithFormat(0, 0, CFSTR("WebKit Web Inspector Setting - %@"), keyCFString.get());
 }
 
-void WebInspectorClient::populateSetting(const String& key, InspectorController::Setting& setting)
+void WebInspectorClient::populateSetting(const String& key, String* setting)
 {
     RetainPtr<CFStringRef> preferencesKey(AdoptCF, createKeyForPreferences(key));
     RetainPtr<CFPropertyListRef> value(AdoptCF, CFPreferencesCopyAppValue(preferencesKey.get(), kCFPreferencesCurrentApplication));
@@ -74,88 +74,19 @@ void WebInspectorClient::populateSetting(const String& key, InspectorController:
 
     CFTypeID type = CFGetTypeID(value.get());
     if (type == CFStringGetTypeID())
-        setting.set(static_cast<String>(static_cast<CFStringRef>(value.get())));
+        *setting = static_cast<String>(static_cast<CFStringRef>(value.get()));
     else if (type == CFBooleanGetTypeID())
-        setting.set(static_cast<bool>(CFBooleanGetValue(static_cast<CFBooleanRef>(value.get()))));
-    else if (type == CFNumberGetTypeID()) {
-        CFNumberRef number = static_cast<CFNumberRef>(value.get());
-        if (CFNumberIsFloatType(number)) {
-            double doubleNumber = 0.0;
-            CFNumberGetValue(static_cast<CFNumberRef>(value.get()), kCFNumberDoubleType, &doubleNumber);
-            setting.set(doubleNumber);
-        } else {
-            long longNumber = 0;
-            CFNumberGetValue(static_cast<CFNumberRef>(value.get()), kCFNumberLongType, &longNumber);
-            setting.set(longNumber);
-        }
-    } else if (type == CFArrayGetTypeID()) {
-        Vector<String> strings;
-
-        CFArrayRef array = static_cast<CFArrayRef>(value.get());
-        unsigned length = CFArrayGetCount(array);
-        for (unsigned i = 0; i < length; ++i) {
-            CFStringRef string = static_cast<CFStringRef>(CFArrayGetValueAtIndex(array, i));
-            if (CFGetTypeID(string) == CFStringGetTypeID())
-                strings.append(static_cast<String>(static_cast<CFStringRef>(string)));
-        }
-
-        setting.set(strings);
-    } else
-        ASSERT_NOT_REACHED();
+        *setting = static_cast<bool>(CFBooleanGetValue(static_cast<CFBooleanRef>(value.get()))) ? "true" : "false";
+    else
+        *setting = "";
 }
 
-void WebInspectorClient::storeSetting(const String& key, const InspectorController::Setting& setting)
+void WebInspectorClient::storeSetting(const String& key, const String& setting)
 {
     RetainPtr<CFPropertyListRef> objectToStore;
-
-    switch (setting.type()) {
-        default:
-        case InspectorController::Setting::NoType:
-            ASSERT_NOT_REACHED();
-            break;
-        case InspectorController::Setting::StringType:
-            objectToStore.adoptCF(setting.string().createCFString());
-            break;
-        case InspectorController::Setting::BooleanType:
-            objectToStore = (setting.booleanValue() ? kCFBooleanTrue : kCFBooleanFalse);
-            break;
-
-        case InspectorController::Setting::DoubleType: {
-            double value = setting.doubleValue();
-            objectToStore.adoptCF(CFNumberCreate(0, kCFNumberDoubleType, &value));
-            break;
-        }
-
-        case InspectorController::Setting::IntegerType: {
-            long value = setting.integerValue();
-            objectToStore.adoptCF(CFNumberCreate(0, kCFNumberLongType, &value));
-            break;
-        }
-
-        case InspectorController::Setting::StringVectorType: {
-            const Vector<String>& strings = setting.stringVector();
-            const unsigned length = strings.size();
-
-            RetainPtr<CFMutableArrayRef> array(AdoptCF, CFArrayCreateMutable(0, length, &kCFTypeArrayCallBacks));
-
-            for (unsigned i = 0; i < length; ++i) {
-                RetainPtr<CFStringRef> string(AdoptCF, strings[i].createCFString());
-                CFArraySetValueAtIndex(array.get(), i, string.get());
-            }
-
-            objectToStore = array;
-            break;
-        }
-    }
-
+    objectToStore.adoptCF(setting.createCFString());
     ASSERT(objectToStore);
 
     RetainPtr<CFStringRef> preferencesKey(AdoptCF, createKeyForPreferences(key));
     CFPreferencesSetAppValue(preferencesKey.get(), objectToStore.get(), kCFPreferencesCurrentApplication);
 }
-
-void WebInspectorClient::removeSetting(const String& key)
-{
-    RetainPtr<CFStringRef> preferencesKey(AdoptCF, createKeyForPreferences(key));
-    CFPreferencesSetAppValue(preferencesKey.get(), 0, kCFPreferencesCurrentApplication);
-}
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 073fe8d..4876159 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,19 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * src/InspectorClientImpl.cpp:
+        (WebKit::InspectorClientImpl::hiddenPanels):
+        (WebKit::InspectorClientImpl::populateSetting):
+        (WebKit::InspectorClientImpl::storeSetting):
+        (WebKit::InspectorClientImpl::loadSettings):
+        (WebKit::InspectorClientImpl::saveSettings):
+        * src/InspectorClientImpl.h:
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebKit/chromium/src/InspectorClientImpl.cpp b/WebKit/chromium/src/InspectorClientImpl.cpp
index ed4329a..2a69daa 100644
--- a/WebKit/chromium/src/InspectorClientImpl.cpp
+++ b/WebKit/chromium/src/InspectorClientImpl.cpp
@@ -143,28 +143,21 @@ String InspectorClientImpl::localizedStringsURL()
 
 String InspectorClientImpl::hiddenPanels()
 {
-    // Enumerate tabs that are currently disabled.
-    return "scripts,profiles,databases";
+    notImplemented();
+    return "";
 }
 
-void InspectorClientImpl::populateSetting(const String& key, InspectorController::Setting& setting)
+void InspectorClientImpl::populateSetting(const String& key, String* value)
 {
     loadSettings();
     if (m_settings->contains(key))
-        setting = m_settings->get(key);
-}
-
-void InspectorClientImpl::storeSetting(const String& key, const InspectorController::Setting& setting)
-{
-    loadSettings();
-    m_settings->set(key, setting);
-    saveSettings();
+        *value = m_settings->get(key);
 }
 
-void InspectorClientImpl::removeSetting(const String& key)
+void InspectorClientImpl::storeSetting(const String& key, const String& value)
 {
     loadSettings();
-    m_settings->remove(key);
+    m_settings->set(key, value);
     saveSettings();
 }
 
@@ -193,21 +186,15 @@ void InspectorClientImpl::loadSettings()
 
         String name = decodeURLEscapeSequences(tokens[0]);
         String type = tokens[1];
-        InspectorController::Setting setting;
-        bool ok = true;
+        String setting;
         if (type == "string")
-            setting.set(decodeURLEscapeSequences(tokens[2]));
-        else if (type == "double")
-            setting.set(tokens[2].toDouble(&ok));
-        else if (type == "integer")
-            setting.set(static_cast<long>(tokens[2].toInt(&ok)));
+            setting = decodeURLEscapeSequences(tokens[2]);
         else if (type == "boolean")
-            setting.set(tokens[2] == "true");
+            setting = tokens[2];
         else
             continue;
 
-        if (ok)
-            m_settings->set(name, setting);
+        m_settings->set(name, setting);
     }
 }
 
@@ -215,40 +202,12 @@ void InspectorClientImpl::saveSettings()
 {
     String data;
     for (SettingsMap::iterator it = m_settings->begin(); it != m_settings->end(); ++it) {
-        String entry;
-        InspectorController::Setting value = it->second;
         String name = encodeWithURLEscapeSequences(it->first);
-        switch (value.type()) {
-        case InspectorController::Setting::StringType:
-            entry = String::format(
-                "%s:string:%s",
-                name.utf8().data(),
-                encodeWithURLEscapeSequences(value.string()).utf8().data());
-            break;
-        case InspectorController::Setting::DoubleType:
-            entry = String::format(
-                "%s:double:%f",
-                name.utf8().data(),
-                value.doubleValue());
-            break;
-        case InspectorController::Setting::IntegerType:
-            entry = String::format(
-                "%s:integer:%ld",
-                name.utf8().data(),
-                value.integerValue());
-            break;
-        case InspectorController::Setting::BooleanType:
-            entry = String::format("%s:boolean:%s",
-                                   name.utf8().data(),
-                                   value.booleanValue() ? "true" : "false");
-            break;
-        case InspectorController::Setting::StringVectorType:
-            notImplemented();
-            break;
-        default:
-            ASSERT_NOT_REACHED();
-            break;
-        }
+        String value = it->second;
+        String entry = String::format(
+            "%s:string:%s",
+            name.utf8().data(),
+            encodeWithURLEscapeSequences(value).utf8().data());
         data.append(entry);
         data.append("\n");
     }
diff --git a/WebKit/chromium/src/InspectorClientImpl.h b/WebKit/chromium/src/InspectorClientImpl.h
index 62216b2..6f7f8b1 100644
--- a/WebKit/chromium/src/InspectorClientImpl.h
+++ b/WebKit/chromium/src/InspectorClientImpl.h
@@ -59,11 +59,10 @@ public:
     virtual void inspectedURLChanged(const WebCore::String& newURL);
     virtual void populateSetting(
         const WebCore::String& key,
-        WebCore::InspectorController::Setting&);
+        WebCore::String* value);
     virtual void storeSetting(
         const WebCore::String& key,
-        const WebCore::InspectorController::Setting&);
-    virtual void removeSetting(const WebCore::String& key);
+        const WebCore::String& value);
     virtual void inspectorWindowObjectCleared();
 
 private:
@@ -73,7 +72,7 @@ private:
     // The WebViewImpl of the page being inspected; gets passed to the constructor
     WebViewImpl* m_inspectedWebView;
 
-    typedef HashMap<WebCore::String, WebCore::InspectorController::Setting> SettingsMap;
+    typedef HashMap<WebCore::String, WebCore::String> SettingsMap;
     OwnPtr<SettingsMap> m_settings;
 };
 
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 216cc72..4142116 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -1,3 +1,16 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * WebCoreSupport/InspectorClientGtk.cpp:
+        (WebKit::InspectorClient::populateSetting):
+        (WebKit::InspectorClient::storeSetting):
+        * WebCoreSupport/InspectorClientGtk.h:
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
index 78f5543..a06ff50 100644
--- a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
@@ -204,18 +204,12 @@ void InspectorClient::inspectorWindowObjectCleared()
     notImplemented();
 }
 
-
-void InspectorClient::populateSetting(const String& key, InspectorController::Setting& setting)
-{
-    notImplemented();
-}
-
-void InspectorClient::storeSetting(const String& key, const InspectorController::Setting& setting)
+void InspectorClient::populateSetting(const String& key, String* value)
 {
     notImplemented();
 }
 
-void InspectorClient::removeSetting(const String& key)
+void InspectorClient::storeSetting(const String& key, const String& value)
 {
     notImplemented();
 }
diff --git a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
index ed9fe08..297fd8f 100644
--- a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
@@ -66,9 +66,8 @@ namespace WebKit {
         virtual void hideHighlight();
         virtual void inspectedURLChanged(const WebCore::String& newURL);
 
-        virtual void populateSetting(const WebCore::String& key, WebCore::InspectorController::Setting&);
-        virtual void storeSetting(const WebCore::String& key, const WebCore::InspectorController::Setting&);
-        virtual void removeSetting(const WebCore::String& key);
+        virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
+        virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
 
         virtual void inspectorWindowObjectCleared();
 
diff --git a/WebKit/haiku/ChangeLog b/WebKit/haiku/ChangeLog
index 26c0ad0..7ee29bd 100644
--- a/WebKit/haiku/ChangeLog
+++ b/WebKit/haiku/ChangeLog
@@ -1,3 +1,16 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * WebCoreSupport/InspectorClientHaiku.cpp:
+        (WebCore::InspectorClientHaiku::populateSetting):
+        (WebCore::InspectorClientHaiku::storeSetting):
+        * WebCoreSupport/InspectorClientHaiku.h:
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp b/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
index 4064c51..f06e96b 100644
--- a/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
+++ b/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
@@ -105,17 +105,12 @@ void InspectorClientHaiku::inspectorWindowObjectCleared()
     notImplemented();
 }
 
-void InspectorClientHaiku::populateSetting(const String& key, InspectorController::Setting&)
+void InspectorClientHaiku::populateSetting(const String& key, String* value)
 {
     notImplemented();
 }
 
-void InspectorClientHaiku::storeSetting(const String& key, const InspectorController::Setting&)
-{
-    notImplemented();
-}
-
-void InspectorClientHaiku::removeSetting(const String& key)
+void InspectorClientHaiku::storeSetting(const String& key, const String& value)
 {
     notImplemented();
 }
diff --git a/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h b/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
index 792ef40..8788a5f 100644
--- a/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
+++ b/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
@@ -61,9 +61,8 @@ namespace WebCore {
 
         virtual void inspectedURLChanged(const String& newURL);
 
-        virtual void populateSetting(const String& key, InspectorController::Setting&);
-        virtual void storeSetting(const String& key, const InspectorController::Setting&);
-        virtual void removeSetting(const String& key);
+        virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
+        virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
 
         virtual void inspectorWindowObjectCleared();
     };
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index acabcb5..af84eaa 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,17 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * WebCoreSupport/WebInspectorClient.h:
+        * WebCoreSupport/WebInspectorClient.mm:
+        (-[WebInspectorWindowController showWindow:]):
+        (-[WebInspectorWindowController attach]):
+        (-[WebInspectorWindowController detach]):
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebKit/mac/WebCoreSupport/WebInspectorClient.h b/WebKit/mac/WebCoreSupport/WebInspectorClient.h
index 7487728..64621f8 100644
--- a/WebKit/mac/WebCoreSupport/WebInspectorClient.h
+++ b/WebKit/mac/WebCoreSupport/WebInspectorClient.h
@@ -62,9 +62,8 @@ public:
     virtual void hideHighlight();
     virtual void inspectedURLChanged(const WebCore::String& newURL);
 
-    virtual void populateSetting(const WebCore::String& key, WebCore::InspectorController::Setting&);
-    virtual void storeSetting(const WebCore::String& key, const WebCore::InspectorController::Setting&);
-    virtual void removeSetting(const WebCore::String& key);
+    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
+    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
 
     virtual void inspectorWindowObjectCleared();
 
diff --git a/WebKit/mac/WebCoreSupport/WebInspectorClient.mm b/WebKit/mac/WebCoreSupport/WebInspectorClient.mm
index 6a4f67d..01515b1 100644
--- a/WebKit/mac/WebCoreSupport/WebInspectorClient.mm
+++ b/WebKit/mac/WebCoreSupport/WebInspectorClient.mm
@@ -327,8 +327,8 @@ void WebInspectorClient::inspectorWindowObjectCleared()
     _visible = YES;
     
     // If no preference is set - default to an attached window. This is important for inspector LayoutTests.
-    InspectorController::Setting shouldAttach = [_inspectedWebView page]->inspectorController()->setting(inspectorStartsAttachedName);
-    _shouldAttach = (shouldAttach.type() == InspectorController::Setting::BooleanType) ? shouldAttach.booleanValue() : true;
+    String shouldAttach = [_inspectedWebView page]->inspectorController()->setting(inspectorStartsAttachedName);
+    _shouldAttach = shouldAttach != "false";
 
     if (_shouldAttach) {
         WebFrameView *frameView = [[_inspectedWebView mainFrame] frameView];
@@ -362,7 +362,7 @@ void WebInspectorClient::inspectorWindowObjectCleared()
     if (_attachedToInspectedWebView)
         return;
 
-    [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(true));
+    [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, "true");
     _movingWindows = YES;
 
     [self close];
@@ -376,7 +376,7 @@ void WebInspectorClient::inspectorWindowObjectCleared()
     if (!_attachedToInspectedWebView)
         return;
 
-    [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(false));
+    [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, "false");
     _movingWindows = YES;
 
     [self close];
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index e17b02f..4fef0ac 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,18 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * WebCoreSupport/InspectorClientQt.cpp:
+        (WebCore::InspectorClientQt::populateSetting):
+        (WebCore::InspectorClientQt::storeSetting):
+        (WebCore::variantToSetting):
+        (WebCore::settingToVariant):
+        * WebCoreSupport/InspectorClientQt.h:
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
index 7a1bfd5..bafdb84 100644
--- a/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
+++ b/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
@@ -50,8 +50,8 @@ namespace WebCore {
 static const QLatin1String settingStoragePrefix("Qt/QtWebKit/QWebInspector/");
 static const QLatin1String settingStorageTypeSuffix(".type");
 
-static InspectorController::Setting variantToSetting(const QVariant& qvariant);
-static QVariant settingToVariant(const InspectorController::Setting& icSetting);
+static String variantToSetting(const QVariant& qvariant);
+static QVariant settingToVariant(const String& value);
 
 class InspectorClientWebPage : public QWebPage {
     Q_OBJECT
@@ -169,7 +169,7 @@ void InspectorClientQt::updateWindowTitle()
     }
 }
 
-void InspectorClientQt::populateSetting(const String& key, InspectorController::Setting& setting)
+void InspectorClientQt::populateSetting(const String& key, String* setting)
 {
     QSettings qsettings;
     if (qsettings.status() == QSettings::AccessError) {
@@ -183,10 +183,10 @@ void InspectorClientQt::populateSetting(const String& key, InspectorController::
     QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString();
     QVariant storedValue = qsettings.value(settingKey);
     storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data()));
-    setting = variantToSetting(storedValue);
+    *setting = variantToSetting(storedValue);
 }
 
-void InspectorClientQt::storeSetting(const String& key, const InspectorController::Setting& setting)
+void InspectorClientQt::storeSetting(const String& key, const String& setting)
 {
     QSettings qsettings;
     if (qsettings.status() == QSettings::AccessError) {
@@ -201,70 +201,24 @@ void InspectorClientQt::storeSetting(const String& key, const InspectorControlle
     qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type()));
 }
 
-void InspectorClientQt::removeSetting(const String&)
+static String variantToSetting(const QVariant& qvariant)
 {
-    notImplemented();
-}
-
-static InspectorController::Setting variantToSetting(const QVariant& qvariant)
-{
-    InspectorController::Setting retVal;
+    String retVal;
 
     switch (qvariant.type()) {
     case QVariant::Bool:
-        retVal.set(qvariant.toBool());
-        break;
-    case QVariant::Double:
-        retVal.set(qvariant.toDouble());
-        break;
-    case QVariant::Int:
-        retVal.set((long)qvariant.toInt());
-        break;
+        retVal = qvariant.toBool() ? "true" : "false";
     case QVariant::String:
-        retVal.set(qvariant.toString());
-        break;
-    case QVariant::StringList: {
-        QStringList qsList = qvariant.toStringList();
-        int listCount = qsList.count();
-        Vector<String> vector(listCount);
-        for (int i = 0; i < listCount; ++i)
-            vector[i] = qsList[i];
-        retVal.set(vector);
-        break;
-    }
+        retVal = qvariant.toString();
     }
 
     return retVal;
 }
 
-static QVariant settingToVariant(const InspectorController::Setting& icSetting)
+static QVariant settingToVariant(const String& setting)
 {
     QVariant retVal;
-
-    switch (icSetting.type()) {
-    case InspectorController::Setting::StringType:
-        retVal.setValue(static_cast<QString>(icSetting.string()));
-        break;
-    case InspectorController::Setting::StringVectorType: {
-        const Vector<String>& vector = icSetting.stringVector();
-        Vector<String>::const_iterator iter;
-        QStringList qsList;
-        for (iter = vector.begin(); iter != vector.end(); ++iter)
-            qsList << *iter;
-        retVal.setValue(qsList);
-        break;
-    }
-    case InspectorController::Setting::DoubleType:
-        retVal.setValue(icSetting.doubleValue());
-        break;
-    case InspectorController::Setting::IntegerType:
-        retVal.setValue((int)icSetting.integerValue());
-        break;
-    case InspectorController::Setting::BooleanType:
-        retVal.setValue(icSetting.booleanValue());
-        break;
-    }
-
+    retVal.setValue(static_cast<QString>(setting));
     return retVal;
 }
 
diff --git a/WebKit/qt/WebCoreSupport/InspectorClientQt.h b/WebKit/qt/WebCoreSupport/InspectorClientQt.h
index ccf8b69..923bab4 100644
--- a/WebKit/qt/WebCoreSupport/InspectorClientQt.h
+++ b/WebKit/qt/WebCoreSupport/InspectorClientQt.h
@@ -66,9 +66,8 @@ namespace WebCore {
         virtual void hideHighlight();
         virtual void inspectedURLChanged(const String& newURL);
 
-        virtual void populateSetting(const String& key, InspectorController::Setting&);
-        virtual void storeSetting(const String& key, const InspectorController::Setting&);
-        virtual void removeSetting(const String& key);
+        virtual void populateSetting(const String& key, String* value);
+        virtual void storeSetting(const String& key, const String& value);
 
         virtual void inspectorWindowObjectCleared();
 
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index 4692649..16abcae 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,17 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * WebCoreSupport/WebInspectorClient.cpp:
+        (WebInspectorClient::attachWindow):
+        (WebInspectorClient::detachWindow):
+        (WebInspectorClient::showWindowWithoutNotifications):
+        * WebCoreSupport/WebInspectorClient.h:
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebKit/win/WebCoreSupport/WebInspectorClient.cpp b/WebKit/win/WebCoreSupport/WebInspectorClient.cpp
index 75a76f2..0dd6e58 100644
--- a/WebKit/win/WebCoreSupport/WebInspectorClient.cpp
+++ b/WebKit/win/WebCoreSupport/WebInspectorClient.cpp
@@ -233,7 +233,7 @@ void WebInspectorClient::attachWindow()
     if (m_attached)
         return;
 
-    m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(true));
+    m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, "true");
 
     closeWindowWithoutNotifications();
     showWindowWithoutNotifications();
@@ -244,7 +244,7 @@ void WebInspectorClient::detachWindow()
     if (!m_attached)
         return;
 
-    m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(false));
+    m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, "false");
 
     closeWindowWithoutNotifications();
     showWindowWithoutNotifications();
@@ -350,8 +350,8 @@ void WebInspectorClient::showWindowWithoutNotifications()
     ASSERT(m_inspectedWebViewHwnd);
 
     // If no preference is set - default to an attached window. This is important for inspector LayoutTests.
-    InspectorController::Setting shouldAttach = m_inspectedWebView->page()->inspectorController()->setting(inspectorStartsAttachedName);
-    m_shouldAttachWhenShown = shouldAttach.type() == InspectorController::Setting::BooleanType ? shouldAttach.booleanValue() : true;
+    String shouldAttach = m_inspectedWebView->page()->inspectorController()->setting(inspectorStartsAttachedName);
+    m_shouldAttachWhenShown = shouldAttach != "false";
 
     if (!m_shouldAttachWhenShown) {
         // Put the Inspector's WebView inside our window and show it.
diff --git a/WebKit/win/WebCoreSupport/WebInspectorClient.h b/WebKit/win/WebCoreSupport/WebInspectorClient.h
index 8965e87..3f65b0a 100644
--- a/WebKit/win/WebCoreSupport/WebInspectorClient.h
+++ b/WebKit/win/WebCoreSupport/WebInspectorClient.h
@@ -66,9 +66,8 @@ public:
 
     virtual void inspectedURLChanged(const WebCore::String& newURL);
 
-    virtual void populateSetting(const WebCore::String& key, WebCore::InspectorController::Setting&);
-    virtual void storeSetting(const WebCore::String& key, const WebCore::InspectorController::Setting&);
-    virtual void removeSetting(const WebCore::String& key);
+    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
+    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
 
     virtual void inspectorWindowObjectCleared();
 
diff --git a/WebKit/wx/ChangeLog b/WebKit/wx/ChangeLog
index daba0b9..5d0ca0e 100644
--- a/WebKit/wx/ChangeLog
+++ b/WebKit/wx/ChangeLog
@@ -1,3 +1,16 @@
+2009-12-03  Pavel Feldman  <pfeldman at dhcp-172-28-174-220.spb.corp.google.com>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Simplify the settings support in inspector controller.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32076
+
+        * WebKitSupport/InspectorClientWx.cpp:
+        (WebCore::InspectorClientWx::populateSetting):
+        (WebCore::InspectorClientWx::storeSetting):
+        * WebKitSupport/InspectorClientWx.h:
+
 2009-12-03  Ben Murdoch  <benm at google.com>
 
         Reviewed by Brady Eidson.
diff --git a/WebKit/wx/WebKitSupport/InspectorClientWx.cpp b/WebKit/wx/WebKitSupport/InspectorClientWx.cpp
index d55ad04..ff21ae0 100644
--- a/WebKit/wx/WebKitSupport/InspectorClientWx.cpp
+++ b/WebKit/wx/WebKitSupport/InspectorClientWx.cpp
@@ -105,17 +105,12 @@ void InspectorClientWx::inspectedURLChanged(const String& newURL)
     notImplemented();
 }
 
-void InspectorClientWx::populateSetting(const String& key, InspectorController::Setting& setting)
+void InspectorClientWx::populateSetting(const String& key, String* setting)
 {
     notImplemented();
 }
 
-void InspectorClientWx::storeSetting(const String& key, const InspectorController::Setting& setting)
-{
-    notImplemented();
-}
-
-void InspectorClientWx::removeSetting(const String& key)
+void InspectorClientWx::storeSetting(const String& key, const String& setting)
 {
     notImplemented();
 }
diff --git a/WebKit/wx/WebKitSupport/InspectorClientWx.h b/WebKit/wx/WebKitSupport/InspectorClientWx.h
index 182df1b..f905817 100644
--- a/WebKit/wx/WebKitSupport/InspectorClientWx.h
+++ b/WebKit/wx/WebKitSupport/InspectorClientWx.h
@@ -60,10 +60,9 @@ public:
 
     virtual void inspectedURLChanged(const String& newURL);
 
-    virtual void populateSetting(const String& key, InspectorController::Setting&);
-    virtual void storeSetting(const String& key, const InspectorController::Setting&);
-    virtual void removeSetting(const String& key);
-    
+    virtual void populateSetting(const String& key, String* value);
+    virtual void storeSetting(const String& key, const String& value);
+
     virtual void inspectorWindowObjectCleared();
 };
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list