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

eric at webkit.org eric at webkit.org
Wed Apr 7 23:28:20 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 4a6f774b21e0d9b556cc2e17638ade364bfe006c
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 10 04:50:39 2009 +0000

    2009-11-09  Yaar Schnitman  <yaar at chromium.org>
    
            Reviewed by Dimitri Glazkov.
    
            Up-streaming Chromium API src files: WebBindging ... WebCursorInfo
    
            https://bugs.webkit.org/show_bug.cgi?id=31276
    
            * src/WebBindings.cpp: Added.
            (WebKit::WebBindings::construct):
            (WebKit::WebBindings::createObject):
            (WebKit::WebBindings::enumerate):
            (WebKit::WebBindings::evaluate):
            (WebKit::WebBindings::evaluateHelper):
            (WebKit::WebBindings::getIntIdentifier):
            (WebKit::WebBindings::getProperty):
            (WebKit::WebBindings::getStringIdentifier):
            (WebKit::WebBindings::getStringIdentifiers):
            (WebKit::WebBindings::hasMethod):
            (WebKit::WebBindings::hasProperty):
            (WebKit::WebBindings::identifierIsString):
            (WebKit::WebBindings::intFromIdentifier):
            (WebKit::WebBindings::initializeVariantWithStringCopy):
            (WebKit::WebBindings::invoke):
            (WebKit::WebBindings::invokeDefault):
            (WebKit::WebBindings::releaseObject):
            (WebKit::WebBindings::releaseVariantValue):
            (WebKit::WebBindings::removeProperty):
            (WebKit::WebBindings::retainObject):
            (WebKit::WebBindings::setException):
            (WebKit::WebBindings::setProperty):
            (WebKit::WebBindings::unregisterObject):
            (WebKit::WebBindings::utf8FromIdentifier):
            (WebKit::WebBindings::extractIdentifierData):
            (WebKit::getEvent):
            (WebKit::getDragDataImpl):
            (WebKit::getRangeImpl):
            (WebKit::WebBindings::getDragData):
            (WebKit::WebBindings::isDragEvent):
            (WebKit::WebBindings::getRange):
            * src/WebCString.cpp: Added.
            (WebKit::WebCString::reset):
            (WebKit::WebCString::assign):
            (WebKit::WebCString::length):
            (WebKit::WebCString::data):
            (WebKit::WebCString::utf16):
            (WebKit::WebCString::fromUTF16):
            (WebKit::WebCString::WebCString):
            (WebKit::WebCString::operator=):
            (WebKit::WebCString::operator WebCore::CString):
            * src/WebCache.cpp: Added.
            (WebKit::ToResourceTypeStat):
            (WebKit::WebCache::setCapacities):
            (WebKit::WebCache::clear):
            (WebKit::WebCache::getUsageStats):
            (WebKit::WebCache::getResourceTypeStats):
            * src/WebColor.cpp: Added.
            (WebKit::toCSSValueKeyword):
            (WebKit::setNamedColors):
            * src/WebCrossOriginPreflightResultCache.cpp: Added.
            (WebKit::WebCrossOriginPreflightResultCache::clear):
            * src/WebCursorInfo.cpp: Added.
            (WebKit::WebCursorInfo::WebCursorInfo):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50715 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 08c29c1..50e93f9 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -2,6 +2,70 @@
 
         Reviewed by Dimitri Glazkov.
 
+        Up-streaming Chromium API src files: WebBindging ... WebCursorInfo
+
+        https://bugs.webkit.org/show_bug.cgi?id=31276
+
+        * src/WebBindings.cpp: Added.
+        (WebKit::WebBindings::construct):
+        (WebKit::WebBindings::createObject):
+        (WebKit::WebBindings::enumerate):
+        (WebKit::WebBindings::evaluate):
+        (WebKit::WebBindings::evaluateHelper):
+        (WebKit::WebBindings::getIntIdentifier):
+        (WebKit::WebBindings::getProperty):
+        (WebKit::WebBindings::getStringIdentifier):
+        (WebKit::WebBindings::getStringIdentifiers):
+        (WebKit::WebBindings::hasMethod):
+        (WebKit::WebBindings::hasProperty):
+        (WebKit::WebBindings::identifierIsString):
+        (WebKit::WebBindings::intFromIdentifier):
+        (WebKit::WebBindings::initializeVariantWithStringCopy):
+        (WebKit::WebBindings::invoke):
+        (WebKit::WebBindings::invokeDefault):
+        (WebKit::WebBindings::releaseObject):
+        (WebKit::WebBindings::releaseVariantValue):
+        (WebKit::WebBindings::removeProperty):
+        (WebKit::WebBindings::retainObject):
+        (WebKit::WebBindings::setException):
+        (WebKit::WebBindings::setProperty):
+        (WebKit::WebBindings::unregisterObject):
+        (WebKit::WebBindings::utf8FromIdentifier):
+        (WebKit::WebBindings::extractIdentifierData):
+        (WebKit::getEvent):
+        (WebKit::getDragDataImpl):
+        (WebKit::getRangeImpl):
+        (WebKit::WebBindings::getDragData):
+        (WebKit::WebBindings::isDragEvent):
+        (WebKit::WebBindings::getRange):
+        * src/WebCString.cpp: Added.
+        (WebKit::WebCString::reset):
+        (WebKit::WebCString::assign):
+        (WebKit::WebCString::length):
+        (WebKit::WebCString::data):
+        (WebKit::WebCString::utf16):
+        (WebKit::WebCString::fromUTF16):
+        (WebKit::WebCString::WebCString):
+        (WebKit::WebCString::operator=):
+        (WebKit::WebCString::operator WebCore::CString):
+        * src/WebCache.cpp: Added.
+        (WebKit::ToResourceTypeStat):
+        (WebKit::WebCache::setCapacities):
+        (WebKit::WebCache::clear):
+        (WebKit::WebCache::getUsageStats):
+        (WebKit::WebCache::getResourceTypeStats):
+        * src/WebColor.cpp: Added.
+        (WebKit::toCSSValueKeyword):
+        (WebKit::setNamedColors):
+        * src/WebCrossOriginPreflightResultCache.cpp: Added.
+        (WebKit::WebCrossOriginPreflightResultCache::clear):
+        * src/WebCursorInfo.cpp: Added.
+        (WebKit::WebCursorInfo::WebCursorInfo):
+
+2009-11-09  Yaar Schnitman  <yaar at chromium.org>
+
+        Reviewed by Dimitri Glazkov.
+
         Up-streaming Chromium API src files: WebAccessibilty
 
         https://bugs.webkit.org/show_bug.cgi?id=31276
diff --git a/WebKit/chromium/src/WebBindings.cpp b/WebKit/chromium/src/WebBindings.cpp
new file mode 100644
index 0000000..73993b6
--- /dev/null
+++ b/WebKit/chromium/src/WebBindings.cpp
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * 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.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * OWNER OR 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.
+ */
+
+#include "config.h"
+#include "WebBindings.h"
+
+#include "npruntime_impl.h"
+#include "npruntime_priv.h"
+#include "webkit/api/public/WebDragData.h"
+#include "webkit/api/public/WebRange.h"
+
+#if USE(V8)
+#include "ChromiumDataObject.h"
+#include "ClipboardChromium.h"
+#include "EventNames.h"
+#include "MouseEvent.h"
+#include "NPV8Object.h"  // for PrivateIdentifier
+#include "Range.h"
+#include "V8DOMWrapper.h"
+#include "V8Helpers.h"
+#include "V8Proxy.h"
+#elif USE(JSC)
+#include "bridge/c/c_utility.h"
+#endif
+
+#if USE(JAVASCRIPTCORE_BINDINGS)
+using JSC::Bindings::PrivateIdentifier;
+#endif
+
+using namespace WebCore;
+
+namespace WebKit {
+
+bool WebBindings::construct(NPP npp, NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant* result)
+{
+    return _NPN_Construct(npp, npobj, args, argCount, result);
+}
+
+NPObject* WebBindings::createObject(NPP npp, NPClass* npClass)
+{
+    return _NPN_CreateObject(npp, npClass);
+}
+
+bool WebBindings::enumerate(NPP id, NPObject* obj, NPIdentifier** identifier, uint32_t* val)
+{
+    return _NPN_Enumerate(id, obj, identifier, val);
+}
+
+bool WebBindings::evaluate(NPP npp, NPObject* npObject, NPString* npScript, NPVariant* result)
+{
+    return _NPN_Evaluate(npp, npObject, npScript, result);
+}
+
+bool WebBindings::evaluateHelper(NPP npp, bool popups_allowed, NPObject* npobj, NPString* npscript, NPVariant* result)
+{
+    return _NPN_EvaluateHelper(npp, popups_allowed, npobj, npscript, result);
+}
+
+NPIdentifier WebBindings::getIntIdentifier(int32_t number)
+{
+    return _NPN_GetIntIdentifier(number);
+}
+
+bool WebBindings::getProperty(NPP npp, NPObject* obj, NPIdentifier propertyName, NPVariant *result)
+{
+    return _NPN_GetProperty(npp, obj, propertyName, result);
+}
+
+NPIdentifier WebBindings::getStringIdentifier(const NPUTF8* string)
+{
+    return _NPN_GetStringIdentifier(string);
+}
+
+void WebBindings::getStringIdentifiers(const NPUTF8** names, int32_t nameCount, NPIdentifier* identifiers)
+{
+    _NPN_GetStringIdentifiers(names, nameCount, identifiers);
+}
+
+bool WebBindings::hasMethod(NPP npp, NPObject* npObject, NPIdentifier methodName)
+{
+    return _NPN_HasMethod(npp, npObject, methodName);
+}
+
+bool WebBindings::hasProperty(NPP npp, NPObject* npObject, NPIdentifier propertyName)
+{
+    return _NPN_HasProperty(npp, npObject, propertyName);
+}
+
+bool WebBindings::identifierIsString(NPIdentifier identifier)
+{
+    return _NPN_IdentifierIsString(identifier);
+}
+
+int32_t WebBindings::intFromIdentifier(NPIdentifier identifier)
+{
+    return _NPN_IntFromIdentifier(identifier);
+}
+
+void WebBindings::initializeVariantWithStringCopy(NPVariant* variant, const NPString* value)
+{
+#if USE(V8)
+    _NPN_InitializeVariantWithStringCopy(variant, value);
+#else
+    NPN_InitializeVariantWithStringCopy(variant, value);
+#endif
+}
+
+bool WebBindings::invoke(NPP npp, NPObject* npObject, NPIdentifier methodName, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result)
+{
+    return _NPN_Invoke(npp, npObject, methodName, arguments, argumentCount, result);
+}
+
+bool WebBindings::invokeDefault(NPP id, NPObject* obj, const NPVariant* args, uint32_t count, NPVariant* result)
+{
+    return _NPN_InvokeDefault(id, obj, args, count, result);
+}
+
+void WebBindings::releaseObject(NPObject* npObject)
+{
+    return _NPN_ReleaseObject(npObject);
+}
+
+void WebBindings::releaseVariantValue(NPVariant* variant)
+{
+    _NPN_ReleaseVariantValue(variant);
+}
+
+bool WebBindings::removeProperty(NPP id, NPObject* object, NPIdentifier identifier)
+{
+    return  _NPN_RemoveProperty(id, object, identifier);
+}
+
+NPObject* WebBindings::retainObject(NPObject* npObject)
+{
+    return _NPN_RetainObject(npObject);
+}
+
+void WebBindings::setException(NPObject* obj, const NPUTF8* message)
+{
+    _NPN_SetException(obj, message);
+}
+
+bool WebBindings::setProperty(NPP id, NPObject* obj, NPIdentifier identifier, const NPVariant* variant)
+{
+    return _NPN_SetProperty(id, obj, identifier, variant);
+}
+
+void WebBindings::unregisterObject(NPObject* npObject)
+{
+#if USE(V8)
+    _NPN_UnregisterObject(npObject);
+#endif
+}
+
+NPUTF8* WebBindings::utf8FromIdentifier(NPIdentifier identifier)
+{
+    return _NPN_UTF8FromIdentifier(identifier);
+}
+
+void WebBindings::extractIdentifierData(const NPIdentifier& identifier, const NPUTF8*& string, int32_t& number, bool& isString)
+{
+    PrivateIdentifier* priv = static_cast<PrivateIdentifier*>(identifier);
+    if (!priv) {
+        isString = false;
+        number = 0;
+        return;
+    }
+
+    isString = priv->isString;
+    if (isString)
+        string = priv->value.string;
+    else
+        number = priv->value.number;
+}
+
+#if USE(V8)
+
+static v8::Local<v8::Value> getEvent(const v8::Handle<v8::Context>& context)
+{
+    static v8::Persistent<v8::String> eventSymbol(v8::Persistent<v8::String>::New(v8::String::NewSymbol("event")));
+    return context->Global()->GetHiddenValue(eventSymbol);
+}
+
+static bool getDragDataImpl(NPObject* npobj, int* eventId, WebDragData* data)
+{
+    if (!npobj)
+        return false;
+    if (npobj->_class != npScriptObjectClass)
+        return false;
+
+    v8::HandleScope handleScope;
+    v8::Handle<v8::Context> context = v8::Context::GetEntered();
+    if (context.IsEmpty())
+        return false;
+
+    // Get the current WebCore event.
+    v8::Handle<v8::Value> currentEvent(getEvent(context));
+    Event* event = V8DOMWrapper::convertToNativeEvent(currentEvent);
+    if (!event)
+        return false;
+
+    // Check that the given npobj is that event.
+    V8NPObject* object = reinterpret_cast<V8NPObject*>(npobj);
+    Event* given = V8DOMWrapper::convertToNativeEvent(object->v8Object);
+    if (given != event)
+        return false;
+
+    // Check the execution frames are same origin.
+    V8Proxy* current = V8Proxy::retrieve(V8Proxy::retrieveFrameForCurrentContext());
+    Frame* frame = V8Proxy::retrieveFrame(context);
+    if (!current || !current->canAccessFrame(frame, false))
+        return false;
+
+    const EventNames& names(eventNames());
+    const AtomicString& eventType(event->type());
+
+    enum DragTargetMouseEventId {
+        DragEnterId = 1, DragOverId = 2, DragLeaveId = 3, DropId = 4
+    };
+
+    // The event type should be a drag event.
+    if (eventType == names.dragenterEvent)
+        *eventId = DragEnterId;
+    else if (eventType == names.dragoverEvent)
+        *eventId = DragOverId;
+    else if (eventType == names.dragleaveEvent)
+        *eventId = DragLeaveId;
+    else if (eventType == names.dropEvent)
+        *eventId = DropId;
+    else
+        return false;
+
+    // Drag events are mouse events and should have a clipboard.
+    MouseEvent* me = static_cast<MouseEvent*>(event);
+    Clipboard* clipboard = me->clipboard();
+    if (!clipboard)
+        return false;
+
+    // And that clipboard should be accessible by WebKit policy.
+    ClipboardChromium* chrome = static_cast<ClipboardChromium*>(clipboard);
+    HashSet<String> accessible(chrome->types());
+    if (accessible.isEmpty())
+        return false;
+
+    RefPtr<ChromiumDataObject> dataObject(chrome->dataObject());
+    if (dataObject && data)
+        *data = WebDragData(dataObject);
+
+    return dataObject;
+}
+
+static bool getRangeImpl(NPObject* npobj, WebRange* range)
+{
+    V8NPObject* v8npobject = reinterpret_cast<V8NPObject*>(npobj);
+    v8::Handle<v8::Object> v8object(v8npobject->v8Object);
+    if (V8ClassIndex::RANGE != V8DOMWrapper::domWrapperType(v8object))
+        return false;
+
+    Range* native = V8DOMWrapper::convertToNativeObject<WebCore::Range>(V8ClassIndex::RANGE, v8object);
+    if (!native)
+        return false;
+
+    *range = WebRange(native);
+    return true;
+}
+
+#endif
+
+bool WebBindings::getDragData(NPObject* event, int* eventId, WebDragData* data)
+{
+#if USE(V8)
+    return getDragDataImpl(event, eventId, data);
+#else
+    // Not supported on other ports (JSC, etc).
+    return false;
+#endif
+}
+
+bool WebBindings::isDragEvent(NPObject* event)
+{
+    int eventId;
+    return getDragData(event, &eventId, 0);
+}
+
+bool WebBindings::getRange(NPObject* range, WebRange* webrange)
+{
+#if USE(V8)
+    return getRangeImpl(range, webrange);
+#else
+    // Not supported on other ports (JSC, etc).
+    return false;
+#endif
+}
+
+} // namespace WebKit
diff --git a/WebKit/chromium/src/WebCString.cpp b/WebKit/chromium/src/WebCString.cpp
new file mode 100644
index 0000000..82fbac0
--- /dev/null
+++ b/WebKit/chromium/src/WebCString.cpp
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * 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.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * OWNER OR 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.
+ */
+
+#include "config.h"
+#include "WebCString.h"
+
+#include "CString.h"
+#include "TextEncoding.h"
+
+#include "WebString.h"
+
+namespace WebKit {
+
+class WebCStringPrivate : public WebCore::CStringBuffer {
+};
+
+void WebCString::reset()
+{
+    if (m_private) {
+        m_private->deref();
+        m_private = 0;
+    }
+}
+
+void WebCString::assign(const WebCString& other)
+{
+    assign(const_cast<WebCStringPrivate*>(other.m_private));
+}
+
+void WebCString::assign(const char* data, size_t length)
+{
+    char* newData;
+    RefPtr<WebCore::CStringBuffer> buffer =
+        WebCore::CString::newUninitialized(length, newData).buffer();
+    memcpy(newData, data, length);
+    assign(static_cast<WebCStringPrivate*>(buffer.get()));
+}
+
+size_t WebCString::length() const
+{
+    if (!m_private)
+        return 0;
+    // NOTE: The buffer's length includes the null byte.
+    return const_cast<WebCStringPrivate*>(m_private)->length() - 1;
+}
+
+const char* WebCString::data() const
+{
+    if (!m_private)
+        return 0;
+    return const_cast<WebCStringPrivate*>(m_private)->data();
+}
+
+WebString WebCString::utf16() const
+{
+    return WebCore::UTF8Encoding().decode(data(), length());
+}
+
+WebCString WebCString::fromUTF16(const WebUChar* data, size_t length)
+{
+    return WebCore::UTF8Encoding().encode(
+        data, length, WebCore::QuestionMarksForUnencodables);
+}
+
+WebCString WebCString::fromUTF16(const WebUChar* data)
+{
+    size_t len = 0;
+    while (data[len] != WebUChar(0))
+        len++;
+    return fromUTF16(data, len);
+}
+
+WebCString::WebCString(const WebCore::CString& s)
+    : m_private(static_cast<WebCStringPrivate*>(s.buffer()))
+{
+    if (m_private)
+        m_private->ref();
+}
+
+WebCString& WebCString::operator=(const WebCore::CString& s)
+{
+    assign(static_cast<WebCStringPrivate*>(s.buffer()));
+    return *this;
+}
+
+WebCString::operator WebCore::CString() const
+{
+    return m_private;
+}
+
+void WebCString::assign(WebCStringPrivate* p)
+{
+    // Take care to handle the case where m_private == p
+    if (p)
+        p->ref();
+    if (m_private)
+        m_private->deref();
+    m_private = p;
+}
+
+} // namespace WebKit
diff --git a/WebKit/chromium/src/WebCache.cpp b/WebKit/chromium/src/WebCache.cpp
new file mode 100644
index 0000000..9d03a4d
--- /dev/null
+++ b/WebKit/chromium/src/WebCache.cpp
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * 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.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * OWNER OR 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.
+ */
+
+#include "config.h"
+#include "WebCache.h"
+
+// Instead of providing accessors, we make all members of Cache public.
+// This will make it easier to track WebCore changes to the Cache class.
+// FIXME: We should introduce public getters on the Cache class.
+#define private public
+#include "Cache.h"
+#undef private
+
+using namespace WebCore;
+
+namespace WebKit {
+
+// A helper method for coverting a Cache::TypeStatistic to a
+// WebCache::ResourceTypeStat.
+static void ToResourceTypeStat(const Cache::TypeStatistic& from,
+                               WebCache::ResourceTypeStat& to)
+{
+    to.count = static_cast<size_t>(from.count);
+    to.size = static_cast<size_t>(from.size);
+    to.liveSize = static_cast<size_t>(from.liveSize);
+    to.decodedSize = static_cast<size_t>(from.decodedSize);
+}
+
+void WebCache::setCapacities(
+    size_t minDeadCapacity, size_t maxDeadCapacity, size_t capacity)
+{
+    Cache* cache = WebCore::cache();
+    if (cache)
+        cache->setCapacities(static_cast<unsigned int>(minDeadCapacity),
+                             static_cast<unsigned int>(maxDeadCapacity),
+                             static_cast<unsigned int>(capacity));
+}
+
+void WebCache::clear()
+{
+    Cache* cache = WebCore::cache();
+    if (cache && !cache->disabled()) {
+        // NOTE: I think using setDisabled() instead of setCapacities() will
+        // remove from the cache items that won't actually be freed from memory
+        // (due to other live references to them), so it just results in wasting
+        // time later and not saving memory compared to the below technique.
+        unsigned minDeadCapacity = cache->m_minDeadCapacity;
+        unsigned maxDeadCapacity = cache->m_maxDeadCapacity;
+        unsigned capacity = cache->m_capacity;
+        cache->setCapacities(0, 0, 0);  // Will prune the cache.
+        cache->setCapacities(minDeadCapacity, maxDeadCapacity, capacity);
+    }
+}
+
+void WebCache::getUsageStats(UsageStats* result)
+{
+    ASSERT(result);
+
+    Cache* cache = WebCore::cache();
+    if (cache) {
+        result->minDeadCapacity = cache->m_minDeadCapacity;
+        result->maxDeadCapacity = cache->m_maxDeadCapacity;
+        result->capacity = cache->m_capacity;
+        result->liveSize = cache->m_liveSize;
+        result->deadSize = cache->m_deadSize;
+    } else
+        memset(result, 0, sizeof(UsageStats));
+}
+
+void WebCache::getResourceTypeStats(ResourceTypeStats* result)
+{
+    Cache* cache = WebCore::cache();
+    if (cache) {
+        Cache::Statistics stats = cache->getStatistics();
+        ToResourceTypeStat(stats.images, result->images);
+        ToResourceTypeStat(stats.cssStyleSheets, result->cssStyleSheets);
+        ToResourceTypeStat(stats.scripts, result->scripts);
+#if ENABLE(XSLT)
+        ToResourceTypeStat(stats.xslStyleSheets, result->xslStyleSheets);
+#else
+        memset(&result->xslStyleSheets, 0, sizeof(result->xslStyleSheets));
+#endif
+        ToResourceTypeStat(stats.fonts, result->fonts);
+    } else
+        memset(result, 0, sizeof(WebCache::ResourceTypeStats));
+}
+
+}  // namespace WebKit
diff --git a/WebKit/chromium/src/WebColor.cpp b/WebKit/chromium/src/WebColor.cpp
new file mode 100644
index 0000000..9323433
--- /dev/null
+++ b/WebKit/chromium/src/WebColor.cpp
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * 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.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * OWNER OR 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.
+ */
+
+#include "config.h"
+#include "WebColor.h"
+
+#include "Color.h"
+#include "CSSValueKeywords.h"
+#include "RenderTheme.h"
+#include "UnusedParam.h"
+#include "WebColorName.h"
+
+using namespace::WebCore;
+
+namespace WebKit {
+
+static int toCSSValueKeyword(WebColorName in_value)
+{
+    switch (in_value) {
+    case WebColorActiveBorder:
+        return CSSValueActiveborder;
+    case WebColorActiveCaption:
+        return CSSValueActivecaption;
+    case WebColorAppworkspace:
+        return CSSValueAppworkspace;
+    case WebColorBackground:
+        return CSSValueBackground;
+    case WebColorButtonFace:
+        return CSSValueButtonface;
+    case WebColorButtonHighlight:
+        return CSSValueButtonhighlight;
+    case WebColorButtonShadow:
+        return CSSValueButtonshadow;
+    case WebColorButtonText:
+        return CSSValueButtontext;
+    case WebColorCaptionText:
+        return CSSValueCaptiontext;
+    case WebColorGrayText:
+        return CSSValueGraytext;
+    case WebColorHighlight:
+        return CSSValueHighlight;
+    case WebColorHighlightText:
+        return CSSValueHighlighttext;
+    case WebColorInactiveBorder:
+        return CSSValueInactiveborder;
+    case WebColorInactiveCaption:
+        return CSSValueInactivecaption;
+    case WebColorInactiveCaptionText:
+        return CSSValueInactivecaptiontext;
+    case WebColorInfoBackground:
+        return CSSValueInfobackground;
+    case WebColorInfoText:
+        return CSSValueInfotext;
+    case WebColorMenu:
+        return CSSValueMenu;
+    case WebColorMenuText:
+        return CSSValueMenutext;
+    case WebColorScrollbar:
+        return CSSValueScrollbar;
+    case WebColorText:
+        return CSSValueText;
+    case WebColorThreedDarkShadow:
+        return CSSValueThreeddarkshadow;
+    case WebColorThreedShadow:
+        return CSSValueThreedshadow;
+    case WebColorThreedFace:
+        return CSSValueThreedface;
+    case WebColorThreedHighlight:
+        return CSSValueThreedhighlight;
+    case WebColorThreedLightShadow:
+        return CSSValueThreedlightshadow;
+    case WebColorWebkitFocusRingColor:
+        return CSSValueWebkitFocusRingColor;
+    case WebColorWindow:
+        return CSSValueWindow;
+    case WebColorWindowFrame:
+        return CSSValueWindowframe;
+    case WebColorWindowText:
+        return CSSValueWindowtext;
+    default:
+        return CSSValueInvalid;
+    }
+}
+
+void setNamedColors(const WebColorName* colorNames, const WebColor* colors, size_t length)
+{
+    for (size_t i = 0; i < length; ++i) {
+        WebColorName colorName = colorNames[i];
+        WebColor color = colors[i];
+
+        // Convert color to internal value identifier.
+        int internalColorName = toCSSValueKeyword(colorName);
+        if (internalColorName == CSSValueWebkitFocusRingColor) {
+            RenderTheme::setCustomFocusRingColor(color);
+            continue;
+        }
+    }
+
+    // TODO(jeremy): Tell RenderTheme to update colors.
+}
+
+} // WebKit
diff --git a/WebKit/chromium/src/WebCrossOriginPreflightResultCache.cpp b/WebKit/chromium/src/WebCrossOriginPreflightResultCache.cpp
new file mode 100644
index 0000000..719316d
--- /dev/null
+++ b/WebKit/chromium/src/WebCrossOriginPreflightResultCache.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * 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.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * OWNER OR 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.
+ */
+
+#include "config.h"
+#include "WebCrossOriginPreflightResultCache.h"
+
+#include "CrossOriginPreflightResultCache.h"
+
+namespace WebKit {
+
+void WebCrossOriginPreflightResultCache::clear()
+{
+    WebCore::CrossOriginPreflightResultCache::shared().empty();
+}
+
+} // namespace WebKit
diff --git a/WebKit/chromium/src/WebCursorInfo.cpp b/WebKit/chromium/src/WebCursorInfo.cpp
new file mode 100644
index 0000000..d4b0f81
--- /dev/null
+++ b/WebKit/chromium/src/WebCursorInfo.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * 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.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * OWNER OR 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.
+ */
+
+#include "config.h"
+#include "WebCursorInfo.h"
+
+#include "Cursor.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+WebCursorInfo::WebCursorInfo(const Cursor& cursor)
+{
+    type = static_cast<Type>(cursor.impl().type());
+    hotSpot = cursor.impl().hotSpot();
+    customImage = cursor.impl().customImage();
+#ifdef WIN32
+    externalHandle = 0;
+#endif
+}
+
+} // namespace WebKit

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list