Add a mechanism to store and retrieve preferences for the Web Inspector.

WebCore:

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Add a mechanism to ask the InspectorClient for key/value setting pairs.
        These settings can be strings, numbers, booleans or string vectors. The
        settings are also bridged to and from JavaScript.

        https://bugs.webkit.org/show_bug.cgi?id=21856

        Reviewed by Darin Adler.

        * WebCore.base.exp: Expose the String CFStringRef constructor.
        * inspector/InspectorClient.h:
        (WebCore::InspectorClient::populateSetting): Added, pure virtual.
        (WebCore::InspectorClient::storeSetting): Ditto.
        (WebCore::InspectorClient::removeSetting): Ditto.
        * inspector/InspectorController.cpp:
        (WebCore::setting): Calls InspectorController::setting and wraps the result in script types.
        (WebCore::setSetting): Calls InspectorController::setSetting after converting from script types.
        (WebCore::InspectorController::InspectorController): Increment a global static
        to track the number of live InspectorControllers.
        (WebCore::InspectorController::~InspectorController): Decrement the global static
        that tracks the number of live InspectorControllers. Delete the setting cache if there
        are no more live controllers.
        (WebCore::InspectorController::setting): Check the cache and return the setting from there,
        otherwise make a new Setting and ask the client to populate it.
        (WebCore::InspectorController::setSetting): Change the cache and ask the client to store it.
        (WebCore::InspectorController::windowScriptObjectAvailable): Add setting and setSetting
        to the InspectorController script class.
        * inspector/InspectorController.h:
        (WebCore::InspectorController::Setting::Setting):
        (WebCore::InspectorController::Setting::operator=):
        (WebCore::InspectorController::Setting::type): Return m_type.
        (WebCore::InspectorController::Setting::string): Return m_string. Assert the type is correct.
        (WebCore::InspectorController::Setting::stringVector): Return m_stringVector.
        Assert the type is correct.
        (WebCore::InspectorController::Setting::doubleValue): Return m_simpleContent.m_double.
        Assert the type is correct.
        (WebCore::InspectorController::Setting::integerValue): Return m_simpleContent.m_integer.
        Assert the type is correct.
        (WebCore::InspectorController::Setting::booleanValue): Return m_simpleContent.m_boolean.
        Assert the type is correct.
        (WebCore::InspectorController::Setting::set): Overloaded for each data type, sets the right
        field and the type.
        * loader/EmptyClients.h:
        (WebCore::EmptyInspectorClient::populateSetting): Added, empty method.
        (WebCore::EmptyInspectorClient::storeSetting): Ditto.
        (WebCore::EmptyInspectorClient::removeSetting): Ditto.

WebKit:

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Implement new InspectorClient methods to work with Settings.

        https://bugs.webkit.org/show_bug.cgi?id=21856

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Add the new InspectorClientCF.cpp file.

WebKit/gtk:

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Stub out new InspectorClient methods.

        https://bugs.webkit.org/show_bug.cgi?id=21856

        Reviewed by Darin Adler.

        * WebCoreSupport/InspectorClientGtk.cpp:
        (WebKit::InspectorClient::populateSetting): Not implemented.
        (WebKit::InspectorClient::storeSetting): Ditto.
        (WebKit::InspectorClient::removeSetting): Ditto.
        * WebCoreSupport/InspectorClientGtk.h:

WebKit/mac:

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Implement new InspectorClient methods to work with Settings.

        https://bugs.webkit.org/show_bug.cgi?id=21856

        Reviewed by Darin Adler.

        * WebCoreSupport/WebInspectorClient.h: Add the new methods and
        guard the ObjC parts of the header.

WebKit/qt:

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Stub out new InspectorClient methods.

        https://bugs.webkit.org/show_bug.cgi?id=21856

        Reviewed by Darin Adler.

        * WebCoreSupport/InspectorClientQt.cpp:
        (WebCore::InspectorClientQt::populateSetting): Not implemented.
        (WebCore::InspectorClientQt::storeSetting): Ditto.
        (WebCore::InspectorClientQt::removeSetting): Ditto.
        * WebCoreSupport/InspectorClientQt.h:

WebKit/win:

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Implement new InspectorClient methods to work with Settings.

        https://bugs.webkit.org/show_bug.cgi?id=21856

        Reviewed by Adam Roben.

        * WebKit.vcproj/WebKit.vcproj: Add the new InspectorClientCF.cpp file.
        * WebCoreSupport/WebInspectorClient.h: Add the new methods.

WebKit/wx:

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Stub out new InspectorClient methods.

        https://bugs.webkit.org/show_bug.cgi?id=21856

        Reviewed by Darin Adler.

        * WebKitSupport/InspectorClientWx.cpp:
        (WebCore::InspectorClient::populateSetting): Not implemented.
        (WebCore::InspectorClient::storeSetting): Ditto.
        (WebCore::InspectorClient::removeSetting): Ditto.
        * WebKitSupport/InspectorClientWx.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@37848 268f45cc-cd09-0410-ab3c-d52691b4dbfc
24 files changed