diff options
author | yaar@chromium.org <yaar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-12 17:36:25 +0000 |
---|---|---|
committer | yaar@chromium.org <yaar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-12 17:36:25 +0000 |
commit | 232a04056fd9f62a3fab1b7e1b9d38f8aca5cd1b (patch) | |
tree | 6eaff1284ac27cce4e6186dcf3f0b7c5e5bb36a4 /webkit | |
parent | eec3bcfa9e92a62fef68293ccbef32b6ef98eea7 (diff) | |
download | chromium_src-232a04056fd9f62a3fab1b7e1b9d38f8aca5cd1b.zip chromium_src-232a04056fd9f62a3fab1b7e1b9d38f8aca5cd1b.tar.gz chromium_src-232a04056fd9f62a3fab1b7e1b9d38f8aca5cd1b.tar.bz2 |
Files no longer uses.
Review URL: http://codereview.chromium.org/385057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31790 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
246 files changed, 0 insertions, 38581 deletions
diff --git a/webkit/api/README b/webkit/api/README deleted file mode 100644 index 247bcde..0000000 --- a/webkit/api/README +++ /dev/null @@ -1,48 +0,0 @@ -This directory contains the Chromium WebKit API. It will eventually be -upstreamed to WebKit/WebKit/chromium in svn.webkit.org. - - -OVERVIEW - - The Chromium WebKit API provides a stable interface to WebCore without - revealing any of the WebCore or WTF types to the consumer. - - The 'public' directory contains the API headers, and the 'src' directory - contains the API implementation. The API is intended to be used either as a - shared or static library. - - -COMPATIBILITY - - No attempt is made to support runtime compatibility in a shared library - build. Instead, the API is intended to support backwards compatibility at - build time. C++ symbols are allowed in other words. - - -CODING STYLE - - The code in this directory should adhere to the WebKit Coding Style - Guidelines: http://webkit.org/coding/coding-style.html - - -DEFINES - - WEBKIT_IMPLEMENTATION is defined when building the 'src' directory. - Consumers should not define this macro. - - WEBKIT_DLL is defined when building as a shared library. This should be - defined when building the 'src' directory, and it should also be defined by - the consumer to ensure proper linkage to the shared library. - - -BASIC TYPES - - Use of STL is prohibited except in cases where it would be allowed in - WebCore. This includes non-allocating uses: algorithms, numeric limits, etc. - WTF container classes should be used in the implementation of this API. - - The API includes some usage of WebCore types when WEBKIT_IMPLEMENTATION is - defined. This is only done for the convenience to the implementation, and - should not be considered part of the Chromium WebKit API. Similarly, STL - types are assumed when WEBKIT_IMPLEMENTATION is not defined, which is done - for the convenience of the consumer. diff --git a/webkit/api/public/WebAccessibilityCache.h b/webkit/api/public/WebAccessibilityCache.h deleted file mode 100755 index 94704a0..0000000 --- a/webkit/api/public/WebAccessibilityCache.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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. - */ - -#ifndef WebAccessibilityCache_h -#define WebAccessibilityCache_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebView; -class WebAccessibilityObject; - -class WebAccessibilityCache { -public: - WebAccessibilityCache() {} - virtual ~WebAccessibilityCache() {} - - static WebAccessibilityCache* create(); - static void enableAccessibility(); - - virtual void initialize(WebView* view) = 0; - virtual bool isInitialized() const = 0; - - virtual WebAccessibilityObject getObjectById(int) = 0; - virtual bool isValidId(int) const = 0; - virtual int addOrGetId(const WebAccessibilityObject& object) = 0; - - virtual void remove(int) = 0; - virtual void clear() = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebAccessibilityObject.h b/webkit/api/public/WebAccessibilityObject.h deleted file mode 100644 index b6c5191..0000000 --- a/webkit/api/public/WebAccessibilityObject.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * 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. - */ - -#ifndef WebAccessibilityObject_h -#define WebAccessibilityObject_h - -#include "WebAccessibilityRole.h" -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class AccessibilityObject; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebAccessibilityObjectPrivate; -class WebString; -struct WebPoint; -struct WebRect; - -// A container for passing around a reference to AccessibilityObject. -class WebAccessibilityObject { -public: - ~WebAccessibilityObject() { reset(); } - - WebAccessibilityObject() : m_private(0) { } - WebAccessibilityObject(const WebAccessibilityObject& o) : m_private(0) { assign(o); } - WebAccessibilityObject& operator=(const WebAccessibilityObject& o) - { - assign(o); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebAccessibilityObject&); - - bool isNull() const { return !m_private; } - - WebString accessibilityDescription() const; - WebString actionVerb() const; - bool canSetFocusAttribute() const; - - unsigned childCount() const; - - WebAccessibilityObject childAt(unsigned) const; - WebAccessibilityObject firstChild() const; - WebAccessibilityObject focusedChild() const; - WebAccessibilityObject lastChild() const; - WebAccessibilityObject nextSibling() const; - WebAccessibilityObject parentObject() const; - WebAccessibilityObject previousSibling() const; - - bool isAnchor() const; - bool isChecked() const; - bool isFocused() const; - bool isEnabled() const; - bool isHovered() const; - bool isIndeterminate() const; - bool isMultiSelect() const; - bool isOffScreen() const; - bool isPasswordField() const; - bool isPressed() const; - bool isReadOnly() const; - bool isVisited() const; - - WebRect boundingBoxRect() const; - WebString helpText() const; - WebAccessibilityObject hitTest(const WebPoint&) const; - WebString keyboardShortcut() const; - bool performDefaultAction() const; - WebAccessibilityRole roleValue() const; - WebString stringValue() const; - WebString title() const; - -#if WEBKIT_IMPLEMENTATION - WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>&); - WebAccessibilityObject& operator=(const WTF::PassRefPtr<WebCore::AccessibilityObject>&); - operator WTF::PassRefPtr<WebCore::AccessibilityObject>() const; -#endif - -private: - void assign(WebAccessibilityObjectPrivate*); - WebAccessibilityObjectPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebAccessibilityRole.h b/webkit/api/public/WebAccessibilityRole.h deleted file mode 100755 index 491db79..0000000 --- a/webkit/api/public/WebAccessibilityRole.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - * 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. - */ - -#ifndef WebAccessibilityRole_h -#define WebAccessibilityRole_h - -#include "WebCommon.h" - -namespace WebKit { - -// These values must match WebCore::AccessibilityRole values -enum WebAccessibilityRole { - WebAccessibilityRoleUnknown = 1, - WebAccessibilityRoleButton, - WebAccessibilityRoleRadioButton, - WebAccessibilityRoleCheckBox, - WebAccessibilityRoleSlider, - WebAccessibilityRoleTabGroup, - WebAccessibilityRoleTextField, - WebAccessibilityRoleStaticText, - WebAccessibilityRoleTextArea, - WebAccessibilityRoleScrollArea, - WebAccessibilityRolePopUpButton, - WebAccessibilityRoleMenuButton, - WebAccessibilityRoleTable, - WebAccessibilityRoleApplication, - WebAccessibilityRoleGroup, - WebAccessibilityRoleRadioGroup, - WebAccessibilityRoleList, - WebAccessibilityRoleScrollBar, - WebAccessibilityRoleValueIndicator, - WebAccessibilityRoleImage, - WebAccessibilityRoleMenuBar, - WebAccessibilityRoleMenu, - WebAccessibilityRoleMenuItem, - WebAccessibilityRoleColumn, - WebAccessibilityRoleRow, - WebAccessibilityRoleToolbar, - WebAccessibilityRoleBusyIndicator, - WebAccessibilityRoleProgressIndicator, - WebAccessibilityRoleWindow, - WebAccessibilityRoleDrawer, - WebAccessibilityRoleSystemWide, - WebAccessibilityRoleOutline, - WebAccessibilityRoleIncrementor, - WebAccessibilityRoleBrowser, - WebAccessibilityRoleComboBox, - WebAccessibilityRoleSplitGroup, - WebAccessibilityRoleSplitter, - WebAccessibilityRoleColorWell, - WebAccessibilityRoleGrowArea, - WebAccessibilityRoleSheet, - WebAccessibilityRoleHelpTag, - WebAccessibilityRoleMatte, - WebAccessibilityRoleRuler, - WebAccessibilityRoleRulerMarker, - WebAccessibilityRoleLink, - WebAccessibilityRoleDisclosureTriangle, - WebAccessibilityRoleGrid, - WebAccessibilityRoleCell, - WebAccessibilityRoleColumnHeader, - WebAccessibilityRoleRowHeader, - - WebAccessibilityRoleWebCoreLink, - WebAccessibilityRoleImageMapLink, - WebAccessibilityRoleImageMap, - WebAccessibilityRoleListMarker, - WebAccessibilityRoleWebArea, - WebAccessibilityRoleHeading, - WebAccessibilityRoleListBox, - WebAccessibilityRoleListBoxOption, - WebAccessibilityRoleTableHeaderContainer, - WebAccessibilityRoleDefinitionListTerm, - WebAccessibilityRoleDefinitionListDefinition, - WebAccessibilityRoleAnnotation, - WebAccessibilityRoleSliderThumb, - WebAccessibilityRoleIgnored, - WebAccessibilityRoleTab, - WebAccessibilityRoleTabList, - WebAccessibilityRoleTabPanel, - - WebAccessibilityRoleLandmarkApplication, - WebAccessibilityRoleLandmarkBanner, - WebAccessibilityRoleLandmarkComplementary, - WebAccessibilityRoleLandmarkContentInfo, - WebAccessibilityRoleLandmarkMain, - WebAccessibilityRoleLandmarkNavigation, - WebAccessibilityRoleLandmarkSearch, - - WebAccessibilityRoleApplicationLog, - WebAccessibilityRoleApplicationMarquee, - WebAccessibilityRoleApplicationStatus, - WebAccessibilityRoleApplicationTimer, - - WebAccessibilityRoleDocument, - WebAccessibilityRoleDocumentArticle, - WebAccessibilityRoleDocumentNote, - WebAccessibilityRoleDocumentRegion, - - WebAccessibilityRoleUserInterfaceTooltip -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebApplicationCacheHost.h b/webkit/api/public/WebApplicationCacheHost.h deleted file mode 100644 index 7c5dafe..0000000 --- a/webkit/api/public/WebApplicationCacheHost.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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. - */ - -#ifndef WebApplicationCacheHost_h -#define WebApplicationCacheHost_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebApplicationCacheHostClient; -class WebURL; -class WebURLRequest; -class WebURLResponse; -struct WebURLError; - -// This interface is used by webkit to call out to the embedder. Webkit uses -// the WebKitClient::createApplicationCacheHost method to create instances, -// and calls delete when the instance is no longer needed. -class WebApplicationCacheHost { -public: - // These values must match WebCore::ApplicationCacheHost::Status values - enum Status { - Uncached, - Idle, - Checking, - Downloading, - UpdateReady, - Obsolete - }; - - // These values must match WebCore::ApplicationCacheHost::EventID values - enum EventID { - CheckingEvent, - ErrorEvent, - NoUpdateEvent, - DownloadingEvent, - ProgressEvent, - UpdateReadyEvent, - CachedEvent, - ObsoleteEvent - }; - - virtual ~WebApplicationCacheHost() { } - - // Called for every request made within the context. - virtual void willStartMainResourceRequest(WebURLRequest&) = 0; - virtual void willStartSubResourceRequest(WebURLRequest&) = 0; - - // One or the other selectCache methods is called after having parsed the <html> tag. - // The latter returns false if the current document has been identified as a "foreign" - // entry, in which case the frame navigation will be restarted by webkit. - virtual void selectCacheWithoutManifest() = 0; - virtual bool selectCacheWithManifest(const WebURL& manifestURL) = 0; - - // Called as the main resource is retrieved. - virtual void didReceiveResponseForMainResource(const WebURLResponse&) = 0; - virtual void didReceiveDataForMainResource(const char* data, int len) = 0; - virtual void didFinishLoadingMainResource(bool success) = 0; - - // Called on behalf of the scriptable interface. - virtual Status status() = 0; - virtual bool startUpdate() = 0; - virtual bool swapCache() = 0; -}; - -} // namespace WebKit - -#endif // WebApplicationCacheHost_h - diff --git a/webkit/api/public/WebApplicationCacheHostClient.h b/webkit/api/public/WebApplicationCacheHostClient.h deleted file mode 100644 index 4e830e3..0000000 --- a/webkit/api/public/WebApplicationCacheHostClient.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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. - */ - -#ifndef WebApplicationCacheHostClient_h -#define WebApplicationCacheHostClient_h - -#include "WebApplicationCacheHost.h" -#include "WebCommon.h" - -namespace WebKit { - -// This interface is used by the embedder to call into webkit. -class WebApplicationCacheHostClient { -public: - // Called to fire the event in the scriptable interface. - virtual void notifyEventListener(WebApplicationCacheHost::EventID) = 0; - -protected: - // Should not be deleted by the embedder. - virtual ~WebApplicationCacheHostClient() { } -}; - -} // namespace WebKit - -#endif // WebApplicationCacheHostClient_h - diff --git a/webkit/api/public/WebBindings.h b/webkit/api/public/WebBindings.h deleted file mode 100644 index 4e66a8f..0000000 --- a/webkit/api/public/WebBindings.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * 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. - */ - -#ifndef WebBindings_h -#define WebBindings_h - -#include "WebCommon.h" -#include <bindings/npruntime.h> - -namespace WebKit { - -class WebDragData; -class WebRange; - -// A haphazard collection of functions for dealing with plugins. -class WebBindings { -public: - // NPN Functions ------------------------------------------------------ - // These are all defined in npruntime.h and are well documented. - - // NPN_Construct - WEBKIT_API static bool construct(NPP, NPObject*, const NPVariant* args, uint32_t argCount, NPVariant* result); - - // NPN_CreateObject - WEBKIT_API static NPObject* createObject(NPP, NPClass*); - - // NPN_Enumerate - WEBKIT_API static bool enumerate(NPP, NPObject*, NPIdentifier**, uint32_t* count); - - // NPN_Evaluate - WEBKIT_API static bool evaluate(NPP, NPObject*, NPString* script, NPVariant* result); - - // NPN_EvaluateHelper - WEBKIT_API static bool evaluateHelper(NPP, bool popupsAllowed, NPObject*, NPString* script, NPVariant* result); - - // NPN_GetIntIdentifier - WEBKIT_API static NPIdentifier getIntIdentifier(int32_t number); - - // NPN_GetProperty - WEBKIT_API static bool getProperty(NPP, NPObject*, NPIdentifier propertyName, NPVariant *result); - - // NPN_GetStringIdentifier - WEBKIT_API static NPIdentifier getStringIdentifier(const NPUTF8* string); - - // NPN_GetStringIdentifiers - WEBKIT_API static void getStringIdentifiers(const NPUTF8** names, int32_t nameCount, NPIdentifier*); - - // NPN_HasMethod - WEBKIT_API static bool hasMethod(NPP, NPObject*, NPIdentifier methodName); - - // NPN_HasProperty - WEBKIT_API static bool hasProperty(NPP, NPObject*, NPIdentifier propertyName); - - // NPN_IdentifierIsString - WEBKIT_API static bool identifierIsString(NPIdentifier); - - // NPN_InitializeVariantWithStringCopy (though sometimes prefixed with an underscore) - WEBKIT_API static void initializeVariantWithStringCopy(NPVariant*, const NPString*); - - // NPN_IntFromIdentifier - WEBKIT_API static int32_t intFromIdentifier(NPIdentifier); - - // NPN_Invoke - WEBKIT_API static bool invoke(NPP, NPObject*, NPIdentifier methodName, const NPVariant* args, uint32_t count, NPVariant* result); - - // NPN_InvokeDefault - WEBKIT_API static bool invokeDefault(NPP, NPObject*, const NPVariant* args, uint32_t count, NPVariant* result); - - // NPN_ReleaseObject - WEBKIT_API static void releaseObject(NPObject*); - - // NPN_ReleaseVariantValue - WEBKIT_API static void releaseVariantValue(NPVariant*); - - // NPN_RemoveProperty - WEBKIT_API static bool removeProperty(NPP, NPObject*, NPIdentifier); - - // NPN_RetainObject - WEBKIT_API static NPObject* retainObject(NPObject*); - - // NPN_SetException - WEBKIT_API static void setException(NPObject*, const NPUTF8* message); - - // NPN_SetProperty - WEBKIT_API static bool setProperty(NPP, NPObject*, NPIdentifier, const NPVariant*); - - // _NPN_UnregisterObject - WEBKIT_API static void unregisterObject(NPObject*); - - // NPN_UTF8FromIdentifier - WEBKIT_API static NPUTF8* utf8FromIdentifier(NPIdentifier); - - // Miscellaneous utility functions ------------------------------------ - - // Complement to NPN_Get___Identifier functions. Extracts data from the NPIdentifier data - // structure. If isString is true upon return, string will be set but number's value is - // undefined. If iString is false, the opposite is true. - WEBKIT_API static void extractIdentifierData(const NPIdentifier&, const NPUTF8*& string, int32_t& number, bool& isString); - - // Return true (success) if the given npobj is the current drag event in browser dispatch, - // and is accessible based on context execution frames and their security origins and - // WebKit clipboard access policy. If so, return the event id and the clipboard data (WebDragData). - // This only works with V8. If compiled without V8, it'll always return false. - WEBKIT_API static bool getDragData(NPObject* event, int* eventId, WebDragData*); - - // Invoke the event access policy checks listed above with GetDragData(). No need for clipboard - // data or event_id outputs, just confirm the given npobj is the current & accessible drag event. - // This only works with V8. If compiled without V8, it'll always return false. - WEBKIT_API static bool isDragEvent(NPObject* event); - - // Return true (success) if the given npobj is a range object. - // If so, return that range as a WebRange object. - WEBKIT_API static bool getRange(NPObject* range, WebRange*); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCString.h b/webkit/api/public/WebCString.h deleted file mode 100644 index 434cb06..0000000 --- a/webkit/api/public/WebCString.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCString_h -#define WebCString_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class CString; } -#else -#include <string> -#endif - -namespace WebKit { - -class WebCStringPrivate; -class WebString; - -// A single-byte string container with unspecified encoding. It is -// inexpensive to copy a WebCString object. -// -// WARNING: It is not safe to pass a WebCString across threads!!! -// -class WebCString { -public: - ~WebCString() { reset(); } - - WebCString() : m_private(0) { } - - WebCString(const char* data, size_t len) : m_private(0) - { - assign(data, len); - } - - WebCString(const WebCString& s) : m_private(0) { assign(s); } - - WebCString& operator=(const WebCString& s) - { - assign(s); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebCString&); - WEBKIT_API void assign(const char* data, size_t len); - - WEBKIT_API size_t length() const; - WEBKIT_API const char* data() const; - - bool isEmpty() const { return !length(); } - bool isNull() const { return !m_private; } - - WEBKIT_API WebString utf16() const; - - WEBKIT_API static WebCString fromUTF16(const WebUChar* data, size_t length); - WEBKIT_API static WebCString fromUTF16(const WebUChar* data); - -#if WEBKIT_IMPLEMENTATION - WebCString(const WebCore::CString&); - WebCString& operator=(const WebCore::CString&); - operator WebCore::CString() const; -#else - WebCString(const std::string& s) : m_private(0) - { - assign(s.data(), s.length()); - } - - WebCString& operator=(const std::string& s) - { - assign(s.data(), s.length()); - return *this; - } - - operator std::string() const - { - size_t len = length(); - return len ? std::string(data(), len) : std::string(); - } - - template <class UTF16String> - static WebCString fromUTF16(const UTF16String& s) - { - return fromUTF16(s.data(), s.length()); - } -#endif - -private: - void assign(WebCStringPrivate*); - WebCStringPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCache.h b/webkit/api/public/WebCache.h deleted file mode 100644 index 433eb1a..0000000 --- a/webkit/api/public/WebCache.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCache_h -#define WebCache_h - -#include "WebCommon.h" - -namespace WebKit { - -// An interface to query and configure WebKit's resource cache. -class WebCache { -public: - struct UsageStats { - // Capacities. - size_t minDeadCapacity; - size_t maxDeadCapacity; - size_t capacity; - // Utilization. - size_t liveSize; - size_t deadSize; - }; - - // A struct mirroring WebCore::Cache::TypeStatistic. - struct ResourceTypeStat { - size_t count; - size_t size; - size_t liveSize; - size_t decodedSize; - }; - - // A struct mirroring WebCore::Cache::Statistics. - struct ResourceTypeStats { - ResourceTypeStat images; - ResourceTypeStat cssStyleSheets; - ResourceTypeStat scripts; - ResourceTypeStat xslStyleSheets; - ResourceTypeStat fonts; - }; - - // Sets the capacities of the resource cache, evicting objects as necessary. - WEBKIT_API static void setCapacities(size_t minDeadCapacity, - size_t maxDeadCapacity, - size_t capacity); - - // Clears the cache (as much as possible; some resources may not be - // cleared if they are actively referenced). - WEBKIT_API static void clear(); - - // Gets the usage statistics from the resource cache. - WEBKIT_API static void getUsageStats(UsageStats*); - - // Get usage stats about the resource cache. - WEBKIT_API static void getResourceTypeStats(ResourceTypeStats*); - -private: - WebCache(); // Not intended to be instanced. -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCanvas.h b/webkit/api/public/WebCanvas.h deleted file mode 100644 index 4675487..0000000 --- a/webkit/api/public/WebCanvas.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCanvas_h -#define WebCanvas_h - -#include "WebCommon.h" - -#if WEBKIT_USING_SKIA -namespace skia { class PlatformCanvas; } -#elif WEBKIT_USING_CG -struct CGContext; -#endif - -namespace WebKit { - -#if WEBKIT_USING_SKIA -typedef skia::PlatformCanvas WebCanvas; -#elif WEBKIT_USING_CG -typedef struct CGContext WebCanvas; -#else -#error "Need to define WebCanvas" -#endif - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebClipboard.h b/webkit/api/public/WebClipboard.h deleted file mode 100644 index 68e22b5..0000000 --- a/webkit/api/public/WebClipboard.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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. - */ - -#ifndef WebClipboard_h -#define WebClipboard_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebImage; -class WebString; -class WebURL; - -class WebClipboard { -public: - enum Format { - FormatHTML, - FormatBookmark, - FormatSmartPaste - }; - - enum Buffer { - BufferStandard, - // Used on platforms like the X Window System that treat selection - // as a type of clipboard. - BufferSelection - }; - - virtual bool isFormatAvailable(Format, Buffer) = 0; - - virtual WebString readPlainText(Buffer) = 0; - virtual WebString readHTML(Buffer, WebURL*) = 0; - - virtual void writePlainText(const WebString&) = 0; - virtual void writeHTML( - const WebString& htmlText, const WebURL&, - const WebString& plainText, bool writeSmartPaste) = 0; - virtual void writeURL( - const WebURL&, const WebString& title) = 0; - virtual void writeImage( - const WebImage&, const WebURL&, const WebString& title) = 0; - -protected: - ~WebClipboard() {} -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebColor.h b/webkit/api/public/WebColor.h deleted file mode 100644 index 034f8db..0000000 --- a/webkit/api/public/WebColor.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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. - */ - -#ifndef WebColor_h -#define WebColor_h - -#include "WebColorName.h" -#include "WebCommon.h" - -namespace WebKit { - -typedef unsigned WebColor; // RGBA quad. Equivalent to SkColor. - -// Sets the values of a set of named colors. -WEBKIT_API void setNamedColors(const WebColorName*, const WebColor*, size_t length); - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebColorName.h b/webkit/api/public/WebColorName.h deleted file mode 100644 index f97ed26..0000000 --- a/webkit/api/public/WebColorName.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -* 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. -*/ - -#ifndef WebColorName_h -#define WebColorName_h - -namespace WebKit { - -enum WebColorName { - WebColorActiveBorder, - WebColorActiveCaption, - WebColorAppworkspace, - WebColorBackground, - WebColorButtonFace, - WebColorButtonHighlight, - WebColorButtonShadow, - WebColorButtonText, - WebColorCaptionText, - WebColorGrayText, - WebColorHighlight, - WebColorHighlightText, - WebColorInactiveBorder, - WebColorInactiveCaption, - WebColorInactiveCaptionText, - WebColorInfoBackground, - WebColorInfoText, - WebColorMenu, - WebColorMenuText, - WebColorScrollbar, - WebColorText, - WebColorThreedDarkShadow, - WebColorThreedShadow, - WebColorThreedFace, - WebColorThreedHighlight, - WebColorThreedLightShadow, - WebColorWebkitFocusRingColor, - WebColorWindow, - WebColorWindowFrame, - WebColorWindowText -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCommon.h b/webkit/api/public/WebCommon.h deleted file mode 100644 index d347ea6..0000000 --- a/webkit/api/public/WebCommon.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCommon_h -#define WebCommon_h - -// ----------------------------------------------------------------------------- -// Default configuration - -#if !defined(WEBKIT_IMPLEMENTATION) - #define WEBKIT_IMPLEMENTATION 0 -#endif - -#if !defined(WEBKIT_USING_SKIA) - #if !defined(__APPLE__) - #define WEBKIT_USING_SKIA 1 - #else - #define WEBKIT_USING_SKIA 0 - #endif -#endif - -#if !defined(WEBKIT_USING_CG) - #if defined(__APPLE__) - #define WEBKIT_USING_CG 1 - #else - #define WEBKIT_USING_CG 0 - #endif -#endif - -#if !defined(WEBKIT_USING_V8) - #define WEBKIT_USING_V8 1 -#endif - -#if !defined(WEBKIT_USING_JSC) - #define WEBKIT_USING_JSC 0 -#endif - -// ----------------------------------------------------------------------------- -// Exported symbols need to be annotated with WEBKIT_API - -#if defined(WIN32) && defined(WEBKIT_DLL) - #if defined(WEBKIT_IMPLEMENTATION) - #define WEBKIT_API __declspec(dllexport) - #else - #define WEBKIT_API __declspec(dllimport) - #endif -#else - #define WEBKIT_API -#endif - -// ----------------------------------------------------------------------------- -// Basic types - -#include <stddef.h> // For size_t - -namespace WebKit { - - // UTF-16 character type -#if defined(WIN32) -typedef wchar_t WebUChar; -#else -typedef unsigned short WebUChar; -#endif - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCommonWorkerClient.h b/webkit/api/public/WebCommonWorkerClient.h deleted file mode 100644 index 771ffff..0000000 --- a/webkit/api/public/WebCommonWorkerClient.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCommonWorkerClient_h -#define WebCommonWorkerClient_h - -namespace WebKit { - -class WebNotificationPresenter; -class WebString; -class WebWorker; -class WebWorkerClient; - -// Provides an interface back to the in-page script object for a worker. -// This interface contains common APIs used by both shared and dedicated -// workers. -// All functions are expected to be called back on the thread that created -// the Worker object, unless noted. -class WebCommonWorkerClient { -public: - virtual void postExceptionToWorkerObject( - const WebString& errorString, int lineNumber, - const WebString& sourceURL) = 0; - - virtual void postConsoleMessageToWorkerObject( - int destinationIdentifier, - int sourceIdentifier, - int messageType, - int messageLevel, - const WebString& message, - int lineNumber, - const WebString& sourceURL) = 0; - - virtual void workerContextClosed() = 0; - virtual void workerContextDestroyed() = 0; - - // Returns the notification presenter for this worker context. Pointer - // is owned by the object implementing WebCommonWorkerClient. - virtual WebNotificationPresenter* notificationPresenter() = 0; - - // This can be called on any thread to create a nested WebWorker. - // WebSharedWorkers are not instantiated via this API - instead - // they are created via the WebSharedWorkerRepository. - virtual WebWorker* createWorker(WebWorkerClient* client) = 0; - -protected: - ~WebCommonWorkerClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCompositionCommand.h b/webkit/api/public/WebCompositionCommand.h deleted file mode 100644 index fa89529..0000000 --- a/webkit/api/public/WebCompositionCommand.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCompositionCommand_h -#define WebCompositionCommand_h - -namespace WebKit { - -enum WebCompositionCommand { - WebCompositionCommandDiscard, - WebCompositionCommandSet, - WebCompositionCommandConfirm, -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebConsoleMessage.h b/webkit/api/public/WebConsoleMessage.h deleted file mode 100644 index d7a0ead..0000000 --- a/webkit/api/public/WebConsoleMessage.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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. - */ - -#ifndef WebConsoleMessage_h -#define WebConsoleMessage_h - -#include "WebString.h" - -namespace WebKit { - -struct WebConsoleMessage { - enum Level { - LevelTip, - LevelLog, - LevelWarning, - LevelError - }; - - Level level; - WebString text; - - WebConsoleMessage() - : level(LevelLog) { } - WebConsoleMessage(Level level, const WebString& text) - : level(LevelLog) - , text(text) { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebContextMenuData.h b/webkit/api/public/WebContextMenuData.h deleted file mode 100644 index 11f23ba..0000000 --- a/webkit/api/public/WebContextMenuData.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * 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. - */ - -#ifndef WebContextMenuData_h -#define WebContextMenuData_h - -#include "WebPoint.h" -#include "WebString.h" -#include "WebURL.h" - -namespace WebKit { - -// This struct is passed to WebViewClient::ShowContextMenu. -struct WebContextMenuData { - enum MediaType { - // No special node is in context. - MediaTypeNone, - // An image node is selected. - MediaTypeImage, - // A video node is selected. - MediaTypeVideo, - // An audio node is selected. - MediaTypeAudio, - }; - // The type of media the context menu is being invoked on. - MediaType mediaType; - - // The x and y position of the mouse pointer (relative to the webview). - WebPoint mousePosition; - - // The absolute URL of the link that is in context. - WebURL linkURL; - - // The absolute URL of the image/video/audio that is in context. - WebURL srcURL; - - // The absolute URL of the page in context. - WebURL pageURL; - - // The absolute URL of the subframe in context. - WebURL frameURL; - - // The encoding for the frame in context. - WebString frameEncoding; - - enum MediaFlags { - MediaNone = 0x0, - MediaInError = 0x1, - MediaPaused = 0x2, - MediaMuted = 0x4, - MediaLoop = 0x8, - MediaCanSave = 0x10, - MediaHasAudio = 0x20, - }; - - // Extra attributes describing media elements. - int mediaFlags; - - // The raw text of the selection in context. - WebString selectedText; - - // Whether spell checking is enabled. - bool isSpellCheckingEnabled; - - // The editable (possibily) misspelled word. - WebString misspelledWord; - - // Whether context is editable. - bool isEditable; - - enum EditFlags { - CanDoNone = 0x0, - CanUndo = 0x1, - CanRedo = 0x2, - CanCut = 0x4, - CanCopy = 0x8, - CanPaste = 0x10, - CanDelete = 0x20, - CanSelectAll = 0x40, - }; - - // Which edit operations are available in the context. - int editFlags; - - // Security information for the context. - WebCString securityInfo; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCookie.h b/webkit/api/public/WebCookie.h deleted file mode 100644 index 81cb361..0000000 --- a/webkit/api/public/WebCookie.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCookie_h -#define WebCookie_h - -#include "WebCommon.h" -#include "WebString.h" - -namespace WebKit { - -class WebString; - -// A cookie. -// -struct WebCookie { - WebCookie() - : expires(0) - , httpOnly(false) - , secure(false) - , session(false) - { - } - - WebCookie(const WebString& name, const WebString& value, const WebString& domain, - const WebString& path, double expires, bool httpOnly, bool secure, bool session) - : name(name) - , value(value) - , domain(domain) - , path(path) - , expires(expires) - , httpOnly(httpOnly) - , secure(secure) - , session(session) - { - } - - WebString name; - WebString value; - WebString domain; - WebString path; - double expires; - bool httpOnly; - bool secure; - bool session; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCrossOriginPreflightResultCache.h b/webkit/api/public/WebCrossOriginPreflightResultCache.h deleted file mode 100644 index 62827f7..0000000 --- a/webkit/api/public/WebCrossOriginPreflightResultCache.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCrossOriginPreflightResultCache_h -#define WebCrossOriginPreflightResultCache_h - -#include "WebCommon.h" - -namespace WebKit { - -// An interface to configure WebKit's cross-origin preflight result cache. -class WebCrossOriginPreflightResultCache { -public: - // Clears the cache. - WEBKIT_API static void clear(); - -private: - WebCrossOriginPreflightResultCache(); // Not intended to be instanced. -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebCursorInfo.h b/webkit/api/public/WebCursorInfo.h deleted file mode 100644 index 8926e5c..0000000 --- a/webkit/api/public/WebCursorInfo.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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. - */ - -#ifndef WebCursorInfo_h -#define WebCursorInfo_h - -#include "WebImage.h" -#include "WebPoint.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class Cursor; } -#endif - -#ifdef WIN32 -typedef struct HICON__* HICON; -typedef HICON HCURSOR; -#endif - -namespace WebKit { - -struct WebCursorInfo { - enum Type { - TypePointer, - TypeCross, - TypeHand, - TypeIBeam, - TypeWait, - TypeHelp, - TypeEastResize, - TypeNorthResize, - TypeNorthEastResize, - TypeNorthWestResize, - TypeSouthResize, - TypeSouthEastResize, - TypeSouthWestResize, - TypeWestResize, - TypeNorthSouthResize, - TypeEastWestResize, - TypeNorthEastSouthWestResize, - TypeNorthWestSouthEastResize, - TypeColumnResize, - TypeRowResize, - TypeMiddlePanning, - TypeEastPanning, - TypeNorthPanning, - TypeNorthEastPanning, - TypeNorthWestPanning, - TypeSouthPanning, - TypeSouthEastPanning, - TypeSouthWestPanning, - TypeWestPanning, - TypeMove, - TypeVerticalText, - TypeCell, - TypeContextMenu, - TypeAlias, - TypeProgress, - TypeNoDrop, - TypeCopy, - TypeNone, - TypeNotAllowed, - TypeZoomIn, - TypeZoomOut, - TypeCustom - }; - - Type type; - WebPoint hotSpot; - WebImage customImage; - -#ifdef WIN32 - // On Windows, TypeCustom may alternatively reference an externally - // defined HCURSOR. If type is TypeCustom and externalHandle is non- - // null, then customData should be ignored. The WebCursorInfo is not - // responsible for managing the lifetime of this cursor handle. - HCURSOR externalHandle; -#endif - - explicit WebCursorInfo(Type type = TypePointer) - : type(type) - { -#ifdef WIN32 - externalHandle = 0; -#endif - } - -#if WEBKIT_IMPLEMENTATION - explicit WebCursorInfo(const WebCore::Cursor&); -#endif -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebData.h b/webkit/api/public/WebData.h deleted file mode 100644 index 5874bed..0000000 --- a/webkit/api/public/WebData.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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. - */ - -#ifndef WebData_h -#define WebData_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class SharedBuffer; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebDataPrivate; - -// A container for raw bytes. It is inexpensive to copy a WebData object. -// -// WARNING: It is not safe to pass a WebData across threads!!! -// -class WebData { -public: - ~WebData() { reset(); } - - WebData() : m_private(0) { } - - WebData(const char* data, size_t size) : m_private(0) - { - assign(data, size); - } - - template <int N> - WebData(const char (&data)[N]) : m_private(0) - { - assign(data, N - 1); - } - - WebData(const WebData& d) : m_private(0) { assign(d); } - - WebData& operator=(const WebData& d) - { - assign(d); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebData&); - WEBKIT_API void assign(const char* data, size_t size); - - WEBKIT_API size_t size() const; - WEBKIT_API const char* data() const; - - bool isEmpty() const { return !size(); } - bool isNull() const { return !m_private; } - -#if WEBKIT_IMPLEMENTATION - WebData(const WTF::PassRefPtr<WebCore::SharedBuffer>&); - WebData& operator=(const WTF::PassRefPtr<WebCore::SharedBuffer>&); - operator WTF::PassRefPtr<WebCore::SharedBuffer>() const; -#else - template <class C> - WebData(const C& c) : m_private(0) - { - assign(c.data(), c.size()); - } - - template <class C> - WebData& operator=(const C& c) - { - assign(c.data(), c.size()); - return *this; - } -#endif - -private: - void assign(WebDataPrivate*); - WebDataPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDataSource.h b/webkit/api/public/WebDataSource.h deleted file mode 100644 index 3a83341..0000000 --- a/webkit/api/public/WebDataSource.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDataSource_h -#define WebDataSource_h - -#include "WebCommon.h" -#include "WebNavigationType.h" - -namespace WebKit { - -class WebString; -class WebURL; -class WebURLRequest; -class WebURLResponse; -template <typename T> class WebVector; - -class WebDataSource { -public: - class ExtraData { - public: - virtual ~ExtraData() { } - }; - - // Returns the original request that resulted in this datasource. - virtual const WebURLRequest& originalRequest() const = 0; - - // Returns the request corresponding to this datasource. It may - // include additional request headers added by WebKit that were not - // present in the original request. This request may also correspond - // to a location specified by a redirect that was followed. - virtual const WebURLRequest& request() const = 0; - - // Returns the response associated with this datasource. - virtual const WebURLResponse& response() const = 0; - - // When this datasource was created as a result of WebFrame::loadData, - // there may be an associated unreachableURL. - virtual bool hasUnreachableURL() const = 0; - virtual WebURL unreachableURL() const = 0; - - // Returns all redirects that occurred (both client and server) before - // at last committing the current page. This will contain one entry - // for each intermediate URL, and one entry for the last URL (so if - // there are no redirects, it will contain exactly the current URL, and - // if there is one redirect, it will contain the source and destination - // URL). - virtual void redirectChain(WebVector<WebURL>&) const = 0; - - // Returns the title for the current page. - virtual WebString pageTitle() const = 0; - - // The type of navigation that triggered the creation of this datasource. - virtual WebNavigationType navigationType() const = 0; - - // The time in seconds (since the epoch) of the event that triggered - // the creation of this datasource. Returns 0 if unknown. - virtual double triggeringEventTime() const = 0; - - // Extra data associated with this datasource. If non-null, the extra - // data pointer will be deleted when the datasource is destroyed. - // Setting the extra data pointer will cause any existing non-null - // extra data pointer to be deleted. - virtual ExtraData* extraData() const = 0; - virtual void setExtraData(ExtraData*) = 0; - -protected: - ~WebDataSource() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDatabase.h b/webkit/api/public/WebDatabase.h deleted file mode 100644 index 179e828..0000000 --- a/webkit/api/public/WebDatabase.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDatabase_h -#define WebDatabase_h - -#include "WebCommon.h" -#include "WebSecurityOrigin.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class Database; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebDatabaseObserver; -class WebDatabasePrivate; -class WebString; - -class WebDatabase { -public: - WebDatabase() : m_private(0) { } - WebDatabase(const WebDatabase& d) : m_private(0) { assign(d); } - ~WebDatabase() { reset(); } - - WebDatabase& operator=(const WebDatabase& d) - { - assign(d); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebDatabase&); - bool isNull() const { return !m_private; } - - WEBKIT_API WebString name() const; - WEBKIT_API WebString displayName() const; - WEBKIT_API unsigned long estimatedSize() const; - WEBKIT_API WebSecurityOrigin securityOrigin() const; - - WEBKIT_API static void setObserver(WebDatabaseObserver*); - WEBKIT_API static WebDatabaseObserver* observer(); - - WEBKIT_API static void updateDatabaseSize( - const WebString& originIdentifier, const WebString& databaseName, - unsigned long long databaseSize, unsigned long long spaceAvailable); - -#if WEBKIT_IMPLEMENTATION - WebDatabase(const WTF::PassRefPtr<WebCore::Database>&); - WebDatabase& operator=(const WTF::PassRefPtr<WebCore::Database>&); - operator WTF::PassRefPtr<WebCore::Database>() const; -#endif - -private: - void assign(WebDatabasePrivate*); - - WebDatabasePrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDatabaseObserver.h b/webkit/api/public/WebDatabaseObserver.h deleted file mode 100644 index da85c93..0000000 --- a/webkit/api/public/WebDatabaseObserver.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDatabaseObserver_h -#define WebDatabaseObserver_h - -namespace WebKit { -class WebDatabase; - -class WebDatabaseObserver { -public: - virtual void databaseOpened(const WebDatabase&) = 0; - virtual void databaseModified(const WebDatabase&) = 0; - virtual void databaseClosed(const WebDatabase&) = 0; -protected: - ~WebDatabaseObserver() {} -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDevToolsAgent.h b/webkit/api/public/WebDevToolsAgent.h deleted file mode 100644 index cf4d7ea..0000000 --- a/webkit/api/public/WebDevToolsAgent.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDevToolsAgent_h -#define WebDevToolsAgent_h - -#include "WebCommon.h" - -namespace WebKit { -class WebDevToolsAgentClient; -class WebString; -class WebView; -struct WebPoint; - -class WebDevToolsAgent { -public: - WEBKIT_API static WebDevToolsAgent* create(WebView*, WebDevToolsAgentClient*); - - virtual ~WebDevToolsAgent() {} - - virtual void attach() = 0; - virtual void detach() = 0; - - virtual void didNavigate() = 0; - - virtual void dispatchMessageFromFrontend(const WebString& className, - const WebString& methodName, - const WebString& param1, - const WebString& param2, - const WebString& param3) = 0; - - virtual void inspectElementAt(const WebPoint&) = 0; - - virtual void setRuntimeFeatureEnabled(const WebString& feature, bool enabled) = 0; - - // Asynchronously executes debugger command in the render thread. - // |callerIdentifier| will be used for sending response. - WEBKIT_API static void executeDebuggerCommand( - const WebString& command, int callerIdentifier); - - typedef void (*MessageLoopDispatchHandler)(); - - // Installs dispatch handle that is going to be called periodically - // while on a breakpoint. - WEBKIT_API static void setMessageLoopDispatchHandler(MessageLoopDispatchHandler); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDevToolsAgentClient.h b/webkit/api/public/WebDevToolsAgentClient.h deleted file mode 100644 index d3c48c7..0000000 --- a/webkit/api/public/WebDevToolsAgentClient.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDevToolsAgentClient_h -#define WebDevToolsAgentClient_h - -#include "WebCommon.h" - -namespace WebKit { -class WebString; - -class WebDevToolsAgentClient { -public: - virtual void sendMessageToFrontend(const WebString& className, - const WebString& methodName, - const WebString& param1, - const WebString& param2, - const WebString& param3) = 0; - - // Invalidates widget which leads to the repaint. - virtual void forceRepaint() = 0; - - // Returns the identifier of the entity hosting this agent. - virtual int hostIdentifier() = 0; - - // Notifies host upon runtime feature being enabled/disabled. - virtual void runtimeFeatureStateChanged(const WebString& feature, bool enabled) = 0; - -protected: - ~WebDevToolsAgentClient() {} -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDevToolsFrontend.h b/webkit/api/public/WebDevToolsFrontend.h deleted file mode 100644 index a816b12..0000000 --- a/webkit/api/public/WebDevToolsFrontend.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDevToolsFrontend_h -#define WebDevToolsFrontend_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebDevToolsFrontendClient; -class WebString; -class WebView; - -// WebDevToolsFrontend represents DevTools client sitting in the Glue. It provides -// direct and delegate Apis to the host. -class WebDevToolsFrontend { -public: - WEBKIT_API static WebDevToolsFrontend* create(WebView* view, - WebDevToolsFrontendClient* client, - const WebString& applicationLocale); - - virtual ~WebDevToolsFrontend() {} - - virtual void dispatchMessageFromAgent(const WebString& className, - const WebString& methodName, - const WebString& param1, - const WebString& param2, - const WebString& param3) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDevToolsFrontendClient.h b/webkit/api/public/WebDevToolsFrontendClient.h deleted file mode 100644 index f2a6c4c..0000000 --- a/webkit/api/public/WebDevToolsFrontendClient.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDevToolsFrontendClient_h -#define WebDevToolsFrontendClient_h - -namespace WebKit { - -class WebString; - -class WebDevToolsFrontendClient { -public: - WebDevToolsFrontendClient() {} - - virtual void sendMessageToAgent(const WebString& className, - const WebString& methodName, - const WebString& param1, - const WebString& param2, - const WebString& param3) = 0; - virtual void sendDebuggerCommandToAgent(const WebString& command) = 0; - - virtual void activateWindow() = 0; - virtual void closeWindow() = 0; - virtual void dockWindow() = 0; - virtual void undockWindow() = 0; - -protected: - virtual ~WebDevToolsFrontendClient() {} -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDragData.h b/webkit/api/public/WebDragData.h deleted file mode 100644 index f7a165d..0000000 --- a/webkit/api/public/WebDragData.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDragData_h -#define WebDragData_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class ChromiumDataObject; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebData; -class WebDragDataPrivate; -class WebString; -class WebURL; -template <typename T> class WebVector; - -// Holds data that may be exchanged through a drag-n-drop operation. It is -// inexpensive to copy a WebDragData object. -class WebDragData { -public: - ~WebDragData() { reset(); } - - WebDragData() : m_private(0) { } - WebDragData(const WebDragData& d) : m_private(0) { assign(d); } - WebDragData& operator=(const WebDragData& d) - { - assign(d); - return *this; - } - - WEBKIT_API void initialize(); - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebDragData&); - - bool isNull() const { return !m_private; } - - WEBKIT_API WebURL url() const; - WEBKIT_API void setURL(const WebURL&); - - WEBKIT_API WebString urlTitle() const; - WEBKIT_API void setURLTitle(const WebString&); - - WEBKIT_API WebString fileExtension() const; - WEBKIT_API void setFileExtension(const WebString&); - - WEBKIT_API bool hasFileNames() const; - WEBKIT_API void fileNames(WebVector<WebString>&) const; - WEBKIT_API void setFileNames(const WebVector<WebString>&); - WEBKIT_API void appendToFileNames(const WebString&); - - WEBKIT_API WebString plainText() const; - WEBKIT_API void setPlainText(const WebString&); - - WEBKIT_API WebString htmlText() const; - WEBKIT_API void setHTMLText(const WebString&); - - WEBKIT_API WebURL htmlBaseURL() const; - WEBKIT_API void setHTMLBaseURL(const WebURL&); - - WEBKIT_API WebString fileContentFileName() const; - WEBKIT_API void setFileContentFileName(const WebString&); - - WEBKIT_API WebData fileContent() const; - WEBKIT_API void setFileContent(const WebData&); - -#if WEBKIT_IMPLEMENTATION - WebDragData(const WTF::PassRefPtr<WebCore::ChromiumDataObject>&); - WebDragData& operator=(const WTF::PassRefPtr<WebCore::ChromiumDataObject>&); - operator WTF::PassRefPtr<WebCore::ChromiumDataObject>() const; -#endif - -private: - void assign(WebDragDataPrivate*); - void ensureMutable(); - WebDragDataPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebDragOperation.h b/webkit/api/public/WebDragOperation.h deleted file mode 100644 index 050b74f..0000000 --- a/webkit/api/public/WebDragOperation.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -* 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. -*/ - -#ifndef WebDragOperation_h -#define WebDragOperation_h - -#include <limits.h> - -namespace WebKit { - -// "Verb" of a drag-and-drop operation as negotiated between the source and -// destination. -// (These constants match their equivalents in WebCore's DragActions.h and -// should not be renumbered.) -enum WebDragOperation { - WebDragOperationNone = 0, - WebDragOperationCopy = 1, - WebDragOperationLink = 2, - WebDragOperationGeneric = 4, - WebDragOperationPrivate = 8, - WebDragOperationMove = 16, - WebDragOperationDelete = 32, - WebDragOperationEvery = UINT_MAX -}; - -// Alternate typedef to make it clear when this is being used as a mask -// with potentially multiple value bits set. -typedef WebDragOperation WebDragOperationsMask; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebEditingAction.h b/webkit/api/public/WebEditingAction.h deleted file mode 100644 index 4e76100..0000000 --- a/webkit/api/public/WebEditingAction.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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. - */ - -#ifndef WebEditingAction_h -#define WebEditingAction_h - -namespace WebKit { - -enum WebEditingAction { - WebEditingActionTyped, - WebEditingActionPasted, - WebEditingActionDropped, -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebElement.h b/webkit/api/public/WebElement.h deleted file mode 100644 index 45e40ad..0000000 --- a/webkit/api/public/WebElement.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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. - */ - -#ifndef WebElement_h -#define WebElement_h - -#include "WebNode.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class Element; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -// Provides readonly access to some properties of a DOM element node. -class WebElement : public WebNode { -public: - WebElement() : WebNode() { } - WebElement(const WebElement& e) : WebNode(e) { } - - WebElement& operator=(const WebElement& e) - { - WebNode::assign(e); - return *this; - } - WEBKIT_API void assign(const WebElement& e) { WebNode::assign(e); } - -#if WEBKIT_IMPLEMENTATION - WebElement(const WTF::PassRefPtr<WebCore::Element>&); - WebElement& operator=(const WTF::PassRefPtr<WebCore::Element>&); - operator WTF::PassRefPtr<WebCore::Element>() const; -#endif - -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebFileChooserCompletion.h b/webkit/api/public/WebFileChooserCompletion.h deleted file mode 100644 index 14bace4..0000000 --- a/webkit/api/public/WebFileChooserCompletion.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFileChooserCompletion_h -#define WebFileChooserCompletion_h - -namespace WebKit { - -class WebString; -template <typename T> class WebVector; - -// Gets called back when WebViewClient finished choosing a file. -class WebFileChooserCompletion { -public: - // Called with zero or more file names. Zero-lengthed vector means that - // the user cancelled or that file choosing failed. The callback instance - // is destroyed when this method is called. - virtual void didChooseFile(const WebVector<WebString>& fileNames) = 0; -protected: - virtual ~WebFileChooserCompletion() {} -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebFindOptions.h b/webkit/api/public/WebFindOptions.h deleted file mode 100644 index 93d48d3..0000000 --- a/webkit/api/public/WebFindOptions.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFindOptions_h -#define WebFindOptions_h - -#include "WebString.h" - -namespace WebKit { - -// Options used when performing a find-in-page query. -struct WebFindOptions { - // Whether to search forward or backward within the page. - bool forward; - - // Whether search should be case-sensitive. - bool matchCase; - - // Whether this operation is the first request or a follow-up. - bool findNext; - - WebFindOptions() - : forward(true) - , matchCase(false) - , findNext(false) { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebFontCache.h b/webkit/api/public/WebFontCache.h deleted file mode 100644 index 05aadc7..0000000 --- a/webkit/api/public/WebFontCache.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFontCache_h -#define WebFontCache_h - -#include "WebCommon.h" - -namespace WebKit { - -// An interface to query and configure WebKit's font cache. -class WebFontCache { -public: - // Returns the number of items in the font data cache. - WEBKIT_API static size_t fontDataCount(); - - // Returns the number of inactive items in the font data cache. - WEBKIT_API static size_t inactiveFontDataCount(); - - // Clears the cache. - WEBKIT_API static void clear(); - -private: - WebFontCache(); // Not intended to be instanced. -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebFormElement.h b/webkit/api/public/WebFormElement.h deleted file mode 100644 index c5e578a..0000000 --- a/webkit/api/public/WebFormElement.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFormElement_h -#define WebFormElement_h - -#include "WebElement.h" -#include "WebVector.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class HTMLFormElement; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { -// A container for passing around a reference to a form element. Provides -// some information about the form. -class WebFormElement : public WebElement { -public: - ~WebFormElement() { reset(); } - - WebFormElement() : WebElement() { } - WebFormElement(const WebFormElement& e) : WebElement(e) { } - - WebElement& operator=(const WebFormElement& e) - { - WebElement::assign(e); - return *this; - } - WEBKIT_API void assign(const WebFormElement& e) { WebElement::assign(e); } - -#if WEBKIT_IMPLEMENTATION - WebFormElement(const WTF::PassRefPtr<WebCore::HTMLFormElement>&); - WebFormElement& operator=(const WTF::PassRefPtr<WebCore::HTMLFormElement>&); - operator WTF::PassRefPtr<WebCore::HTMLFormElement>() const; -#endif - - bool autoComplete() const; - WebString action(); - void submit(); - void getNamedElements(const WebString&, WebVector<WebNode>&); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebFrame.h b/webkit/api/public/WebFrame.h deleted file mode 100644 index 0a3ed00..0000000 --- a/webkit/api/public/WebFrame.h +++ /dev/null @@ -1,464 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFrame_h -#define WebFrame_h - -#include "WebCanvas.h" -#include "WebURL.h" - -struct NPObject; - -#if WEBKIT_USING_V8 -namespace v8 { -class Context; -template <class T> class Local; -} -#endif - -namespace WebKit { - -class WebData; -class WebDataSource; -class WebFormElement; -class WebHistoryItem; -class WebInputElement; -class WebPasswordAutocompleteListener; -class WebRange; -class WebSecurityOrigin; -class WebString; -class WebURL; -class WebURLRequest; -class WebView; -struct WebConsoleMessage; -struct WebFindOptions; -struct WebRect; -struct WebScriptSource; -struct WebSize; -template <typename T> class WebVector; - -class WebFrame { -public: - // The two functions below retrieve the WebFrame instances relating the - // currently executing JavaScript. Since JavaScript can make function - // calls across frames, though, we need to be more precise. - // - // For example, imagine that a JS function in frame A calls a function - // in frame B, which calls native code, which wants to know what the - // 'active' frame is. - // - // The 'entered context' is the context where execution first entered - // the script engine; the context that is at the bottom of the JS - // function stack. frameForEnteredContext() would return frame A in - // our example. - // - // The 'current context' is the context the JS engine is currently - // inside of; the context that is at the top of the JS function stack. - // frameForCurrentContext() would return frame B in our example. - WEBKIT_API static WebFrame* frameForEnteredContext(); - WEBKIT_API static WebFrame* frameForCurrentContext(); - - - // Basic properties --------------------------------------------------- - - // The name of this frame. - virtual WebString name() const = 0; - - // The url of the document loaded in this frame. This is equivalent to - // dataSource()->request().url(). - virtual WebURL url() const = 0; - - // The url of the favicon (if any) specified by the document loaded in - // this frame. - virtual WebURL favIconURL() const = 0; - - // The url of the OpenSearch Desription Document (if any) specified by - // the document loaded in this frame. - virtual WebURL openSearchDescriptionURL() const = 0; - - - // Geometry ----------------------------------------------------------- - - // NOTE: These routines do not force page layout so their results may - // not be accurate if the page layout is out-of-date. - - // The scroll offset from the top-left corner of the frame in pixels. - virtual WebSize scrollOffset() const = 0; - - // The size of the contents area. - virtual WebSize contentsSize() const = 0; - - // Returns the minimum preferred width of the content contained in the - // current document. - virtual int contentsPreferredWidth() const = 0; - - // Returns true if the contents (minus scrollbars) has non-zero area. - virtual bool hasVisibleContent() const = 0; - - - // Hierarchy ---------------------------------------------------------- - - // Returns the containing view. - virtual WebView* view() const = 0; - - // Returns the frame that opened this frame or 0 if there is none. - virtual WebFrame* opener() const = 0; - - // Returns the parent frame or 0 if this is a top-most frame. - virtual WebFrame* parent() const = 0; - - // Returns the top-most frame in the hierarchy containing this frame. - virtual WebFrame* top() const = 0; - - // Returns the first/last child frame. - virtual WebFrame* firstChild() const = 0; - virtual WebFrame* lastChild() const = 0; - - // Returns the next/previous sibling frame. - virtual WebFrame* nextSibling() const = 0; - virtual WebFrame* previousSibling() const = 0; - - // Returns the next/previous frame in "frame traversal order" - // optionally wrapping around. - virtual WebFrame* traverseNext(bool wrap) const = 0; - virtual WebFrame* traversePrevious(bool wrap) const = 0; - - // Returns the child frame identified by the given name. - virtual WebFrame* findChildByName(const WebString& name) const = 0; - - // Returns the child frame identified by the given xpath expression. - virtual WebFrame* findChildByExpression(const WebString& xpath) const = 0; - - - // Content ------------------------------------------------------------ - - virtual void forms(WebVector<WebFormElement>&) const = 0; - - - // Scripting ---------------------------------------------------------- - - // Returns the security origin of the current document. - virtual WebSecurityOrigin securityOrigin() const = 0; - - // This grants the currently loaded document access to all security - // origins (including file URLs). Use with care. The access is - // revoked when a new document is loaded into this frame. - virtual void grantUniversalAccess() = 0; - - // Returns a NPObject corresponding to this frame's DOMWindow. - virtual NPObject* windowObject() const = 0; - - // Binds a NPObject as a property of this frame's DOMWindow. - virtual void bindToWindowObject(const WebString& name, NPObject*) = 0; - - // Executes script in the context of the current page. - virtual void executeScript(const WebScriptSource&) = 0; - - // Executes script in a new context associated with the frame. The - // script gets its own global scope and its own prototypes for - // intrinsic JS objects (String, Array, and so-on). It shares the - // wrappers for all DOM nodes and DOM constructors. extensionGroup is - // an embedder-provided specifier that controls which v8 extensions are - // loaded into the new context - see WebKit::registerExtension for the - // corresponding specifier. - virtual void executeScriptInNewContext(const WebScriptSource* sources, - unsigned numSources, - int extensionGroup) = 0; - - // Executes JavaScript in a new world associated with the web frame. - // The script gets its own global scope and its own prototypes for - // intrinsic JavaScript objects (String, Array, and so-on). It also - // gets its own wrappers for all DOM nodes and DOM constructors. - // extensionGroup is an embedder-provided specifier that controls which - // v8 extensions are loaded into the new context - see - // WebKit::registerExtension for the corresponding specifier. - virtual void executeScriptInIsolatedWorld( - int worldId, const WebScriptSource* sources, unsigned numSources, - int extensionGroup) = 0; - - // Logs to the console associated with this frame. - virtual void addMessageToConsole(const WebConsoleMessage&) = 0; - - // Calls window.gc() if it is defined. - virtual void collectGarbage() = 0; - -#if WEBKIT_USING_V8 - // Returns the V8 context for this frame, or an empty handle if there - // is none. - virtual v8::Local<v8::Context> mainWorldScriptContext() const = 0; -#endif - - - // Styling ------------------------------------------------------------- - - // Insert the given text as a STYLE element at the beginning of the - // document. |elementId| can be empty, but if specified then it is used - // as the id for the newly inserted element (replacing an existing one - // with the same id, if any). - virtual bool insertStyleText(const WebString& styleText, - const WebString& elementId) = 0; - - - // Navigation ---------------------------------------------------------- - - // Reload the current document. - virtual void reload() = 0; - - // Load the given URL. - virtual void loadRequest(const WebURLRequest&) = 0; - - // Load the given history state, corresponding to a back/forward - // navigation. - virtual void loadHistoryItem(const WebHistoryItem&) = 0; - - // Loads the given data with specific mime type and optional text - // encoding. For HTML data, baseURL indicates the security origin of - // the document and is used to resolve links. If specified, - // unreachableURL is reported via WebDataSource::unreachableURL. If - // replace is false, then this data will be loaded as a normal - // navigation. Otherwise, the current history item will be replaced. - virtual void loadData(const WebData& data, - const WebString& mimeType, - const WebString& textEncoding, - const WebURL& baseURL, - const WebURL& unreachableURL = WebURL(), - bool replace = false) = 0; - - // This method is short-hand for calling LoadData, where mime_type is - // "text/html" and text_encoding is "UTF-8". - virtual void loadHTMLString(const WebData& html, - const WebURL& baseURL, - const WebURL& unreachableURL = WebURL(), - bool replace = false) = 0; - - // Returns true if the current frame is busy loading content. - virtual bool isLoading() const = 0; - - // Stops any pending loads on the frame and its children. - virtual void stopLoading() = 0; - - // Returns the data source that is currently loading. May be null. - virtual WebDataSource* provisionalDataSource() const = 0; - - // Returns the data source that is currently loaded. - virtual WebDataSource* dataSource() const = 0; - - // Returns the previous history item. Check WebHistoryItem::isNull() - // before using. - virtual WebHistoryItem previousHistoryItem() const = 0; - - // Returns the current history item. Check WebHistoryItem::isNull() - // before using. - virtual WebHistoryItem currentHistoryItem() const = 0; - - // View-source rendering mode. Set this before loading an URL to cause - // it to be rendered in view-source mode. - virtual void enableViewSourceMode(bool) = 0; - virtual bool isViewSourceModeEnabled() const = 0; - - // Sets the referrer for the given request to be the specified URL or - // if that is null, then it sets the referrer to the referrer that the - // frame would use for subresources. NOTE: This method also filters - // out invalid referrers (e.g., it is invalid to send a HTTPS URL as - // the referrer for a HTTP request). - virtual void setReferrerForRequest(WebURLRequest&, const WebURL&) = 0; - - // Called to associate the WebURLRequest with this frame. The request - // will be modified to inherit parameters that allow it to be loaded. - // This method ends up triggering WebFrameClient::willSendRequest. - virtual void dispatchWillSendRequest(WebURLRequest&) = 0; - - // Called from within WebFrameClient::didReceiveDocumentData to commit - // data for the frame that will be used to construct the frame's - // document. - virtual void commitDocumentData(const char* data, size_t length) = 0; - - // Returns the number of registered unload listeners. - virtual unsigned unloadListenerCount() const = 0; - - // Returns true if a user gesture is currently being processed. - virtual bool isProcessingUserGesture() const = 0; - - // Returns true if this frame is in the process of opening a new frame - // with a suppressed opener. - virtual bool willSuppressOpenerInNewFrame() const = 0; - - - // Editing ------------------------------------------------------------- - - // Replaces the selection with the given text. - virtual void replaceSelection(const WebString& text) = 0; - - virtual void insertText(const WebString& text) = 0; - - virtual void setMarkedText(const WebString& text, unsigned location, unsigned length) = 0; - virtual void unmarkText() = 0; - virtual bool hasMarkedText() const = 0; - - virtual WebRange markedRange() const = 0; - - // Supports commands like Undo, Redo, Cut, Copy, Paste, SelectAll, - // Unselect, etc. See EditorCommand.cpp for the full list of supported - // commands. - virtual bool executeCommand(const WebString&) = 0; - virtual bool executeCommand(const WebString&, const WebString& value) = 0; - virtual bool isCommandEnabled(const WebString&) const = 0; - - // Spell-checking support. - virtual void enableContinuousSpellChecking(bool) = 0; - virtual bool isContinuousSpellCheckingEnabled() const = 0; - - - // Selection ----------------------------------------------------------- - - virtual bool hasSelection() const = 0; - - virtual WebRange selectionRange() const = 0; - - virtual WebString selectionAsText() const = 0; - virtual WebString selectionAsMarkup() const = 0; - - - // Printing ------------------------------------------------------------ - - // Reformats the WebFrame for printing. pageSize is the page size in - // pixels. Returns the number of pages that can be printed at the - // given page size. - virtual int printBegin(const WebSize& pageSize) = 0; - - // Returns the page shrinking factor calculated by webkit (usually - // between 1/1.25 and 1/2). Returns 0 if the page number is invalid or - // not in printing mode. - virtual float getPrintPageShrink(int page) = 0; - - // Prints one page, and returns the calculated page shrinking factor - // (usually between 1/1.25 and 1/2). Returns 0 if the page number is - // invalid or not in printing mode. - virtual float printPage(int pageToPrint, WebCanvas*) = 0; - - // Reformats the WebFrame for screen display. - virtual void printEnd() = 0; - - - // Find-in-page -------------------------------------------------------- - - // Searches a frame for a given string. - // - // If a match is found, this function will select it (scrolling down to - // make it visible if needed) and fill in selectionRect with the - // location of where the match was found (in window coordinates). - // - // If no match is found, this function clears all tickmarks and - // highlighting. - // - // Returns true if the search string was found, false otherwise. - virtual bool find(int identifier, - const WebString& searchText, - const WebFindOptions& options, - bool wrapWithinFrame, - WebRect* selectionRect) = 0; - - // Notifies the frame that we are no longer interested in searching. - // This will abort any asynchronous scoping effort already under way - // (see the function scopeStringMatches for details) and erase all - // tick-marks and highlighting from the previous search. If - // clearSelection is true, it will also make sure the end state for the - // find operation does not leave a selection. This can occur when the - // user clears the search string but does not close the find box. - virtual void stopFinding(bool clearSelection) = 0; - - // Counts how many times a particular string occurs within the frame. - // It also retrieves the location of the string and updates a vector in - // the frame so that tick-marks and highlighting can be drawn. This - // function does its work asynchronously, by running for a certain - // time-slice and then scheduling itself (co-operative multitasking) to - // be invoked later (repeating the process until all matches have been - // found). This allows multiple frames to be searched at the same time - // and provides a way to cancel at any time (see - // cancelPendingScopingEffort). The parameter searchText specifies - // what to look for and |reset| signals whether this is a brand new - // request or a continuation of the last scoping effort. - virtual void scopeStringMatches(int identifier, - const WebString& searchText, - const WebFindOptions& options, - bool reset) = 0; - - // Cancels any outstanding requests for scoping string matches on a frame. - virtual void cancelPendingScopingEffort() = 0; - - // This function is called on the main frame during the scoping effort - // to keep a running tally of the accumulated total match-count for all - // frames. After updating the count it will notify the WebViewClient - // about the new count. - virtual void increaseMatchCount(int count, int identifier) = 0; - - // This function is called on the main frame to reset the total number - // of matches found during the scoping effort. - virtual void resetMatchCount() = 0; - - // Password autocompletion --------------------------------------------- - - // Registers a listener for the specified user name input element. The - // listener will receive notifications for blur and when autocomplete - // should be triggered. - // The WebFrame becomes the owner of the passed listener. - virtual void registerPasswordListener( - WebInputElement, - WebPasswordAutocompleteListener*) = 0; - - // Utility ------------------------------------------------------------- - - // Given a relative URL, returns an absolute URL by resolving the URL - // relative to the base URL of the frame's document. This uses the - // same algorithm that WebKit uses to resolve hyperlinks found in a - // HTML document. - virtual WebURL completeURL(const WebString&) const = 0; - - // Returns the contents of this frame as a string. If the text is - // longer than maxChars, it will be clipped to that length. WARNING: - // This function may be slow depending on the number of characters - // retrieved and page complexity. For a typically sized page, expect - // it to take on the order of milliseconds. - // - // If there is room, subframe text will be recursively appended. Each - // frame will be separated by an empty line. - virtual WebString contentAsText(size_t maxChars) const = 0; - - // Returns HTML text for the contents of this frame. This is generated - // from the DOM. - virtual WebString contentAsMarkup() const = 0; - -protected: - ~WebFrame() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebFrameClient.h b/webkit/api/public/WebFrameClient.h deleted file mode 100644 index 297eb62..0000000 --- a/webkit/api/public/WebFrameClient.h +++ /dev/null @@ -1,290 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFrameClient_h -#define WebFrameClient_h - -#include "WebCommon.h" -#include "WebNavigationPolicy.h" -#include "WebNavigationType.h" -#include "WebURLError.h" - -namespace WebKit { - -class WebDataSource; -class WebFormElement; -class WebFrame; -class WebMediaPlayer; -class WebMediaPlayerClient; -class WebNode; -class WebPlugin; -class WebSecurityOrigin; -class WebSharedWorker; -class WebString; -class WebURL; -class WebURLRequest; -class WebURLResponse; -class WebWorker; -class WebWorkerClient; -struct WebPluginParams; -struct WebRect; -struct WebSize; -struct WebURLError; - -class WebFrameClient { -public: - // Factory methods ----------------------------------------------------- - - // May return null. - virtual WebPlugin* createPlugin(WebFrame*, const WebPluginParams&) { return 0; } - - // May return null. - virtual WebWorker* createWorker(WebFrame*, WebWorkerClient*) { return 0; } - - // May return null. - virtual WebSharedWorker* createSharedWorker(WebFrame*, const WebURL&, const WebString&, unsigned long long) { return 0; } - - // May return null. - virtual WebMediaPlayer* createMediaPlayer(WebFrame*, WebMediaPlayerClient*) { return 0; } - - - // General notifications ----------------------------------------------- - - // This frame is about to be closed. - virtual void willClose(WebFrame*) { } - - - // Load commands ------------------------------------------------------- - - // The client should handle the navigation externally. - virtual void loadURLExternally( - WebFrame*, const WebURLRequest&, WebNavigationPolicy) { } - - - // Navigational queries ------------------------------------------------ - - // The client may choose to alter the navigation policy. Otherwise, - // defaultPolicy should just be returned. - virtual WebNavigationPolicy decidePolicyForNavigation( - WebFrame*, const WebURLRequest&, WebNavigationType, - const WebNode& originatingNode, - WebNavigationPolicy defaultPolicy, bool isRedirect) { return defaultPolicy; } - - // Query if the specified request can be handled. - virtual bool canHandleRequest( - WebFrame*, const WebURLRequest& request) { return true; } - - // Returns an error corresponding to canHandledRequest() returning false. - virtual WebURLError cannotHandleRequestError( - WebFrame*, const WebURLRequest& request) { return WebURLError(); } - - // Returns an error corresponding to a user cancellation event. - virtual WebURLError cancelledError( - WebFrame*, const WebURLRequest& request) { return WebURLError(); } - - // Notify that a URL cannot be handled. - virtual void unableToImplementPolicyWithError( - WebFrame*, const WebURLError&) { } - - - // Navigational notifications ------------------------------------------ - - // A form submission is about to occur. - virtual void willSubmitForm(WebFrame*, const WebFormElement&) { } - - // A client-side redirect will occur. This may correspond to a <META - // refresh> or some script activity. - virtual void willPerformClientRedirect( - WebFrame*, const WebURL& from, const WebURL& to, - double interval, double fireTime) { } - - // A client-side redirect was cancelled. - virtual void didCancelClientRedirect(WebFrame*) { } - - // A client-side redirect completed. - virtual void didCompleteClientRedirect(WebFrame*, const WebURL& fromURL) { } - - // A datasource has been created for a new navigation. The given - // datasource will become the provisional datasource for the frame. - virtual void didCreateDataSource(WebFrame*, WebDataSource*) { } - - // A new provisional load has been started. - virtual void didStartProvisionalLoad(WebFrame*) { } - - // The provisional load was redirected via a HTTP 3xx response. - virtual void didReceiveServerRedirectForProvisionalLoad(WebFrame*) { } - - // The provisional load failed. - virtual void didFailProvisionalLoad(WebFrame*, const WebURLError&) { } - - // Notifies the client to commit data for the given frame. The client - // may optionally prevent default processing by setting preventDefault - // to true before returning. If default processing is prevented, then - // it is up to the client to manually call commitDocumentData on the - // WebFrame. It is only valid to call commitDocumentData within a call - // to didReceiveDocumentData. If commitDocumentData is not called, - // then an empty document will be loaded. - virtual void didReceiveDocumentData( - WebFrame*, const char* data, size_t length, bool& preventDefault) { } - - // The provisional datasource is now committed. The first part of the - // response body has been received, and the encoding of the response - // body is known. - virtual void didCommitProvisionalLoad(WebFrame*, bool isNewNavigation) { } - - // The window object for the frame has been cleared of any extra - // properties that may have been set by script from the previously - // loaded document. - virtual void didClearWindowObject(WebFrame*) { } - - // The document element has been created. - virtual void didCreateDocumentElement(WebFrame*) { } - - // The page title is available. - virtual void didReceiveTitle(WebFrame*, const WebString& title) { } - - // The frame's document finished loading. - virtual void didFinishDocumentLoad(WebFrame*) { } - - // The 'load' event was dispatched. - virtual void didHandleOnloadEvents(WebFrame*) { } - - // The frame's document or one of its subresources failed to load. - virtual void didFailLoad(WebFrame*, const WebURLError&) { } - - // The frame's document and all of its subresources succeeded to load. - virtual void didFinishLoad(WebFrame*) { } - - // The navigation resulted in scrolling the page to a named anchor instead - // of downloading a new document. - virtual void didChangeLocationWithinPage(WebFrame*, bool isNewNavigation) { } - - // Called upon update to scroll position, document state, and other - // non-navigational events related to the data held by WebHistoryItem. - // WARNING: This method may be called very frequently. - virtual void didUpdateCurrentHistoryItem(WebFrame*) { } - - - // Low-level resource notifications ------------------------------------ - - // An identifier was assigned to the specified request. The client - // should remember this association if interested in subsequent events. - virtual void assignIdentifierToRequest( - WebFrame*, unsigned identifier, const WebURLRequest&) { } - - // A request is about to be sent out, and the client may modify it. Request - // is writable, and changes to the URL, for example, will change the request - // made. If this request is the result of a redirect, then redirectResponse - // will be non-null and contain the response that triggered the redirect. - virtual void willSendRequest( - WebFrame*, unsigned identifier, WebURLRequest&, - const WebURLResponse& redirectResponse) { } - - // Response headers have been received for the resource request given - // by identifier. - virtual void didReceiveResponse( - WebFrame*, unsigned identifier, const WebURLResponse&) { } - - // The resource request given by identifier succeeded. - virtual void didFinishResourceLoad( - WebFrame*, unsigned identifier) { } - - // The resource request given by identifier failed. - virtual void didFailResourceLoad( - WebFrame*, unsigned identifier, const WebURLError&) { } - - // The specified request was satified from WebCore's memory cache. - virtual void didLoadResourceFromMemoryCache( - WebFrame*, const WebURLRequest&, const WebURLResponse&) { } - - // This frame has displayed inactive content (such as an image) from an - // insecure source. Inactive content cannot spread to other frames. - virtual void didDisplayInsecureContent(WebFrame*) { } - - // The indicated security origin has run active content (such as a - // script) from an insecure source. Note that the insecure content can - // spread to other frames in the same origin. - virtual void didRunInsecureContent(WebFrame*, const WebSecurityOrigin&) { } - - - // Script notifications ------------------------------------------------ - - // Controls whether scripts are allowed to execute for this frame. - virtual bool allowScript(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; } - - // Script in the page tried to allocate too much memory. - virtual void didExhaustMemoryAvailableForScript(WebFrame*) { } - - // Notifies that a new script context has been created for this frame. - // This is similar to didClearWindowObject but only called once per - // frame context. - virtual void didCreateScriptContext(WebFrame*) { } - - // Notifies that this frame's script context has been destroyed. - virtual void didDestroyScriptContext(WebFrame*) { } - - // Notifies that a garbage-collected context was created - content - // scripts. - virtual void didCreateIsolatedScriptContext(WebFrame*) { } - - - // Geometry notifications ---------------------------------------------- - - // The size of the content area changed. - virtual void didChangeContentsSize(WebFrame*, const WebSize&) { } - - // The main frame scrolled. - virtual void didChangeScrollOffset(WebFrame*) { } - - - // Find-in-page notifications ------------------------------------------ - - // Notifies how many matches have been found so far, for a given - // identifier. |finalUpdate| specifies whether this is the last update - // (all frames have completed scoping). - virtual void reportFindInPageMatchCount( - int identifier, int count, bool finalUpdate) { } - - // Notifies what tick-mark rect is currently selected. The given - // identifier lets the client know which request this message belongs - // to, so that it can choose to ignore the message if it has moved on - // to other things. The selection rect is expected to have coordinates - // relative to the top left corner of the web page area and represent - // where on the screen the selection rect is currently located. - virtual void reportFindInPageSelection( - int identifier, int activeMatchOrdinal, const WebRect& selection) { } - -protected: - ~WebFrameClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebHTTPBody.h b/webkit/api/public/WebHTTPBody.h deleted file mode 100644 index 43f51a6..0000000 --- a/webkit/api/public/WebHTTPBody.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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. - */ - -#ifndef WebHTTPBody_h -#define WebHTTPBody_h - -#include "WebData.h" -#include "WebNonCopyable.h" -#include "WebString.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class FormData; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebHTTPBodyPrivate; - -class WebHTTPBody { -public: - struct Element { - enum { TypeData, TypeFile } type; - WebData data; - WebString filePath; - }; - - ~WebHTTPBody() { reset(); } - - WebHTTPBody() : m_private(0) { } - WebHTTPBody(const WebHTTPBody& b) : m_private(0) { assign(b); } - WebHTTPBody& operator=(const WebHTTPBody& b) - { - assign(b); - return *this; - } - - WEBKIT_API void initialize(); - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebHTTPBody&); - - bool isNull() const { return !m_private; } - - // Returns the number of elements comprising the http body. - WEBKIT_API size_t elementCount() const; - - // Sets the values of the element at the given index. Returns false if - // index is out of bounds. - WEBKIT_API bool elementAt(size_t index, Element&) const; - - // Append to the list of elements. - WEBKIT_API void appendData(const WebData&); - WEBKIT_API void appendFile(const WebString&); - - // Identifies a particular form submission instance. A value of 0 is - // used to indicate an unspecified identifier. - WEBKIT_API long long identifier() const; - WEBKIT_API void setIdentifier(long long); - -#if WEBKIT_IMPLEMENTATION - WebHTTPBody(const WTF::PassRefPtr<WebCore::FormData>&); - WebHTTPBody& operator=(const WTF::PassRefPtr<WebCore::FormData>&); - operator WTF::PassRefPtr<WebCore::FormData>() const; -#endif - -private: - void assign(WebHTTPBodyPrivate*); - void ensureMutable(); - WebHTTPBodyPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebHTTPHeaderVisitor.h b/webkit/api/public/WebHTTPHeaderVisitor.h deleted file mode 100644 index 2ca86c0..0000000 --- a/webkit/api/public/WebHTTPHeaderVisitor.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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. - */ - -#ifndef WebHTTPHeaderVisitor_h -#define WebHTTPHeaderVisitor_h - -namespace WebKit { - -class WebString; - -class WebHTTPHeaderVisitor { -public: - virtual void visitHeader(const WebString& name, const WebString& value) = 0; - -protected: - ~WebHTTPHeaderVisitor() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebHistoryItem.h b/webkit/api/public/WebHistoryItem.h deleted file mode 100644 index f15a62c..0000000 --- a/webkit/api/public/WebHistoryItem.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - * 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. - */ - -#ifndef WebHistoryItem_h -#define WebHistoryItem_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class HistoryItem; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebHistoryItemPrivate; -class WebHTTPBody; -class WebString; -struct WebPoint; -template <typename T> class WebVector; - -// Represents a frame-level navigation entry in session history. A -// WebHistoryItem is a node in a tree. -// -// Copying a WebHistoryItem is cheap. -// -class WebHistoryItem { -public: - ~WebHistoryItem() { reset(); } - - WebHistoryItem() : m_private(0) { } - WebHistoryItem(const WebHistoryItem& h) : m_private(0) { assign(h); } - WebHistoryItem& operator=(const WebHistoryItem& h) - { - assign(h); - return *this; - } - - WEBKIT_API void initialize(); - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebHistoryItem&); - - bool isNull() const { return !m_private; } - - WEBKIT_API WebString urlString() const; - WEBKIT_API void setURLString(const WebString&); - - WEBKIT_API WebString originalURLString() const; - WEBKIT_API void setOriginalURLString(const WebString&); - - WEBKIT_API WebString referrer() const; - WEBKIT_API void setReferrer(const WebString&); - - WEBKIT_API WebString target() const; - WEBKIT_API void setTarget(const WebString&); - - WEBKIT_API WebString parent() const; - WEBKIT_API void setParent(const WebString&); - - WEBKIT_API WebString title() const; - WEBKIT_API void setTitle(const WebString&); - - WEBKIT_API WebString alternateTitle() const; - WEBKIT_API void setAlternateTitle(const WebString&); - - WEBKIT_API double lastVisitedTime() const; - WEBKIT_API void setLastVisitedTime(double); - - WEBKIT_API WebPoint scrollOffset() const; - WEBKIT_API void setScrollOffset(const WebPoint&); - - WEBKIT_API bool isTargetItem() const; - WEBKIT_API void setIsTargetItem(bool); - - WEBKIT_API int visitCount() const; - WEBKIT_API void setVisitCount(int); - - WEBKIT_API WebVector<WebString> documentState() const; - WEBKIT_API void setDocumentState(const WebVector<WebString>&); - - WEBKIT_API WebString httpContentType() const; - WEBKIT_API void setHTTPContentType(const WebString&); - - WEBKIT_API WebHTTPBody httpBody() const; - WEBKIT_API void setHTTPBody(const WebHTTPBody&); - - WEBKIT_API WebVector<WebHistoryItem> children() const; - WEBKIT_API void setChildren(const WebVector<WebHistoryItem>&); - WEBKIT_API void appendToChildren(const WebHistoryItem&); - -#if WEBKIT_IMPLEMENTATION - WebHistoryItem(const WTF::PassRefPtr<WebCore::HistoryItem>&); - WebHistoryItem& operator=(const WTF::PassRefPtr<WebCore::HistoryItem>&); - operator WTF::PassRefPtr<WebCore::HistoryItem>() const; -#endif - -private: - void assign(WebHistoryItemPrivate*); - void ensureMutable(); - WebHistoryItemPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebImage.h b/webkit/api/public/WebImage.h deleted file mode 100644 index a7b6f8c..0000000 --- a/webkit/api/public/WebImage.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * 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. - */ - -#ifndef WebImage_h -#define WebImage_h - -#include "WebCommon.h" - -#if WEBKIT_USING_SKIA -#include <SkBitmap.h> -#elif WEBKIT_USING_CG -typedef struct CGImage* CGImageRef; -#endif - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class Image; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebData; -struct WebSize; - -// A container for an ARGB bitmap. -class WebImage { -public: - ~WebImage() { reset(); } - - WebImage() { init(); } - WebImage(const WebImage& image) - { - init(); - assign(image); - } - - WebImage& operator=(const WebImage& image) - { - assign(image); - return *this; - } - - // Decodes the given image data. If the image has multiple frames, - // then the frame whose size is desiredSize is returned. Otherwise, - // the first frame is returned. - WEBKIT_API static WebImage fromData(const WebData&, const WebSize& desiredSize); - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebImage&); - - WEBKIT_API bool isNull() const; - WEBKIT_API WebSize size() const; - -#if WEBKIT_IMPLEMENTATION - WebImage(const WTF::PassRefPtr<WebCore::Image>&); - WebImage& operator=(const WTF::PassRefPtr<WebCore::Image>&); -#endif - -#if WEBKIT_USING_SKIA - WebImage(const SkBitmap& bitmap) : m_bitmap(bitmap) { } - - WebImage& operator=(const SkBitmap& bitmap) - { - m_bitmap = bitmap; - return *this; - } - - SkBitmap& getSkBitmap() { return m_bitmap; } - const SkBitmap& getSkBitmap() const { return m_bitmap; } - -private: - void init() { } - SkBitmap m_bitmap; - -#elif WEBKIT_USING_CG - WebImage(CGImageRef imageRef) - { - init(); - assign(imageRef); - } - - WebImage& operator=(CGImageRef imageRef) - { - assign(imageRef); - return *this; - } - - CGImageRef getCGImageRef() const { return m_imageRef; } - -private: - void init() { m_imageRef = 0; } - void assign(CGImageRef); - CGImageRef m_imageRef; -#endif -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebInputElement.h b/webkit/api/public/WebInputElement.h deleted file mode 100644 index 0a70965..0000000 --- a/webkit/api/public/WebInputElement.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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. - */ - -#ifndef WebInputElement_h -#define WebInputElement_h - -#include "WebElement.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class HTMLInputElement; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -// Provides readonly access to some properties of a DOM input element node. -class WebInputElement : public WebElement { -public: - WebInputElement() : WebElement() { } - WebInputElement(const WebInputElement& n) : WebElement(n) { } - - WebInputElement& operator=(const WebInputElement& n) - { - WebElement::assign(n); - return *this; - } - WEBKIT_API void assign(const WebInputElement& n) { WebElement::assign(n); } - -#if WEBKIT_IMPLEMENTATION - WebInputElement(const WTF::PassRefPtr<WebCore::HTMLInputElement>&); - WebInputElement& operator=(const WTF::PassRefPtr<WebCore::HTMLInputElement>&); - operator WTF::PassRefPtr<WebCore::HTMLInputElement>() const; -#endif - - void setActivatedSubmit(bool); - void setValue(const WebString& value); - WebString value(); - void setAutofilled(bool); - void dispatchFormControlChangeEvent(); - void setSelectionRange(size_t, size_t); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebInputEvent.h b/webkit/api/public/WebInputEvent.h deleted file mode 100644 index 983aa2a..0000000 --- a/webkit/api/public/WebInputEvent.h +++ /dev/null @@ -1,260 +0,0 @@ -/* - * 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. - */ - -#ifndef WebInputEvent_h -#define WebInputEvent_h - -#include "WebCommon.h" - -#include <string.h> - -namespace WebKit { - -// The classes defined in this file are intended to be used with -// WebWidget's handleInputEvent method. These event types are cross- -// platform and correspond closely to WebCore's Platform*Event classes. -// -// WARNING! These classes must remain PODs (plain old data). They are -// intended to be "serializable" by copying their raw bytes, so they must -// not contain any non-bit-copyable member variables! - -// WebInputEvent -------------------------------------------------------------- - -class WebInputEvent { -public: - WebInputEvent(unsigned sizeParam = sizeof(WebInputEvent)) - : size(sizeParam) - , type(Undefined) - , modifiers(0) - , timeStampSeconds(0.0) { } - - // When we use an input method (or an input method editor), we receive - // two events for a keypress. The former event is a keydown, which - // provides a keycode, and the latter is a textinput, which provides - // a character processed by an input method. (The mapping from a - // keycode to a character code is not trivial for non-English - // keyboards.) - // To support input methods, Safari sends keydown events to WebKit for - // filtering. WebKit sends filtered keydown events back to Safari, - // which sends them to input methods. - // Unfortunately, it is hard to apply this design to Chrome because of - // our multiprocess architecture. An input method is running in a - // browser process. On the other hand, WebKit is running in a renderer - // process. So, this design results in increasing IPC messages. - // To support input methods without increasing IPC messages, Chrome - // handles keyboard events in a browser process and send asynchronous - // input events (to be translated to DOM events) to a renderer - // process. - // This design is mostly the same as the one of Windows and Mac Carbon. - // So, for what it's worth, our Linux and Mac front-ends emulate our - // Windows front-end. To emulate our Windows front-end, we can share - // our back-end code among Windows, Linux, and Mac. - // TODO(hbono): Issue 18064: remove the KeyDown type since it isn't - // used in Chrome any longer. - - enum Type { - Undefined = -1, - - // WebMouseEvent - MouseDown, - MouseUp, - MouseMove, - MouseEnter, - MouseLeave, - - // WebMouseWheelEvent - MouseWheel, - - // WebKeyboardEvent - RawKeyDown, - KeyDown, - KeyUp, - Char - }; - - enum Modifiers { - // modifiers for all events: - ShiftKey = 1 << 0, - ControlKey = 1 << 1, - AltKey = 1 << 2, - MetaKey = 1 << 3, - - // modifiers for keyboard events: - IsKeyPad = 1 << 4, - IsAutoRepeat = 1 << 5, - - // modifiers for mouse events: - LeftButtonDown = 1 << 6, - MiddleButtonDown = 1 << 7, - RightButtonDown = 1 << 8, - }; - - unsigned size; // The size of this structure, for serialization. - Type type; - int modifiers; - double timeStampSeconds; // Seconds since epoch. - - // Returns true if the WebInputEvent |type| is a keyboard event. - static bool isKeyboardEventType(int type) - { - return type == RawKeyDown - || type == KeyDown - || type == KeyUp - || type == Char; - } -}; - -// WebKeyboardEvent ----------------------------------------------------------- - -class WebKeyboardEvent : public WebInputEvent { -public: - // Caps on string lengths so we can make them static arrays and keep - // them PODs. - static const size_t textLengthCap = 4; - - // http://www.w3.org/TR/DOM-Level-3-Events/keyset.html lists the - // identifiers. The longest is 18 characters, so we round up to the - // next multiple of 4. - static const size_t keyIdentifierLengthCap = 20; - - // |windowsKeyCode| is the Windows key code associated with this key - // event. Sometimes it's direct from the event (i.e. on Windows), - // sometimes it's via a mapping function. If you want a list, see - // WebCore/platform/chromium/KeyboardCodes* . - int windowsKeyCode; - - // The actual key code genenerated by the platform. The DOM spec runs - // on Windows-equivalent codes (thus |windowsKeyCode| above) but it - // doesn't hurt to have this one around. - int nativeKeyCode; - - // |text| is the text generated by this keystroke. |unmodifiedText| is - // |text|, but unmodified by an concurrently-held modifiers (except - // shift). This is useful for working out shortcut keys. Linux and - // Windows guarantee one character per event. The Mac does not, but in - // reality that's all it ever gives. We're generous, and cap it a bit - // longer. - WebUChar text[textLengthCap]; - WebUChar unmodifiedText[textLengthCap]; - - // This is a string identifying the key pressed. - char keyIdentifier[keyIdentifierLengthCap]; - - // This identifies whether this event was tagged by the system as being - // a "system key" event (see - // http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx for - // details). Other platforms don't have this concept, but it's just - // easier to leave it always false than ifdef. - // int is used instead of bool to ensure the size of this structure is - // strictly aligned to a factor of 4 bytes, otherwise memory check tools - // like valgrind may complain about uninitialized memory usage when - // transfering it over the wire. - int isSystemKey; - - WebKeyboardEvent(unsigned sizeParam = sizeof(WebKeyboardEvent)) - : WebInputEvent(sizeParam) - , windowsKeyCode(0) - , nativeKeyCode(0) - , isSystemKey(false) - { - memset(&text, 0, sizeof(text)); - memset(&unmodifiedText, 0, sizeof(unmodifiedText)); - memset(&keyIdentifier, 0, sizeof(keyIdentifier)); - } - - // Sets keyIdentifier based on the value of windowsKeyCode. This is - // handy for generating synthetic keyboard events. - WEBKIT_API void setKeyIdentifierFromWindowsKeyCode(); -}; - -// WebMouseEvent -------------------------------------------------------------- - -class WebMouseEvent : public WebInputEvent { -public: - // These values defined for WebCore::MouseButton - enum Button { - ButtonNone = -1, - ButtonLeft, - ButtonMiddle, - ButtonRight - }; - - Button button; - int x; - int y; - int windowX; - int windowY; - int globalX; - int globalY; - int clickCount; - - WebMouseEvent(unsigned sizeParam = sizeof(WebMouseEvent)) - : WebInputEvent(sizeParam) - , button(ButtonNone) - , x(0) - , y(0) - , windowX(0) - , windowY(0) - , globalX(0) - , globalY(0) - , clickCount(0) - { - } -}; - -// WebMouseWheelEvent --------------------------------------------------------- - -class WebMouseWheelEvent : public WebMouseEvent { -public: - float deltaX; - float deltaY; - float wheelTicksX; - float wheelTicksY; - - // int is used instead of bool to ensure the size of this structure is - // strictly aligned to a factor of 4 bytes, otherwise memory check tools - // like valgrind may complain about uninitialized memory usage when - // transfering it over the wire. - int scrollByPage; - - WebMouseWheelEvent(unsigned sizeParam = sizeof(WebMouseWheelEvent)) - : WebMouseEvent(sizeParam) - , deltaX(0.0f) - , deltaY(0.0f) - , wheelTicksX(0.0f) - , wheelTicksY(0.0f) - , scrollByPage(false) - { - } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebKit.h b/webkit/api/public/WebKit.h deleted file mode 100644 index b9e6407..0000000 --- a/webkit/api/public/WebKit.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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. - */ - -#ifndef WebKit_h -#define WebKit_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebKitClient; - -// Must be called on the thread that will be the main WebKit thread before -// using any other WebKit APIs. The provided WebKitClient must be non-null -// and must remain valid until the current thread calls shutdown. -WEBKIT_API void initialize(WebKitClient*); - -// Once shutdown, the WebKitClient passed to initialize will no longer be -// accessed. No other WebKit objects should be in use when this function -// is called. Any background threads created by WebKit are promised to be -// terminated by the time this function returns. -WEBKIT_API void shutdown(); - -// Returns the WebKitClient instance passed to initialize. -WEBKIT_API WebKitClient* webKitClient(); - -// Alters the rendering of content to conform to a fixed set of rules. -WEBKIT_API void setLayoutTestMode(bool); -WEBKIT_API bool layoutTestMode(); - -// Purge the plugin list cache. If |reloadPages| is true, any pages -// containing plugins will be reloaded after refreshing the plugin list. -WEBKIT_API void resetPluginCache(bool reloadPages); - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebKitClient.h b/webkit/api/public/WebKitClient.h deleted file mode 100644 index 6ff6aa6..0000000 --- a/webkit/api/public/WebKitClient.h +++ /dev/null @@ -1,272 +0,0 @@ -/* - * 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. - */ - -#ifndef WebKitClient_h -#define WebKitClient_h - -#include "WebCommon.h" -#include "WebLocalizedString.h" -#include "WebVector.h" - -#include <time.h> - -#ifdef WIN32 -typedef void *HANDLE; -#endif - -namespace WebKit { - -class WebApplicationCacheHost; -class WebApplicationCacheHostClient; -class WebClipboard; -class WebData; -class WebMessagePortChannel; -class WebMimeRegistry; -class WebPluginListBuilder; -class WebSandboxSupport; -class WebSharedWorkerRepository; -class WebSocketStreamHandle; -class WebStorageNamespace; -class WebString; -class WebThemeEngine; -class WebURL; -class WebURLLoader; -struct WebCookie; -struct WebPluginInfo; -template <typename T> class WebVector; - -class WebKitClient { -public: - // Must return non-null. - virtual WebClipboard* clipboard() = 0; - - // Must return non-null. - virtual WebMimeRegistry* mimeRegistry() = 0; - - // May return null if sandbox support is not necessary - virtual WebSandboxSupport* sandboxSupport() = 0; - - // May return null on some platforms. - virtual WebThemeEngine* themeEngine() = 0; - - - // Application Cache -------------------------------------------- - - // May return null if the process type doesn't involve appcaching. - virtual WebApplicationCacheHost* createApplicationCacheHost(WebApplicationCacheHostClient*) = 0; - - - // DOM Storage -------------------------------------------------- - - // Return a LocalStorage namespace that corresponds to the following path. - virtual WebStorageNamespace* createLocalStorageNamespace(const WebString& path, unsigned quota) = 0; - - // Return a new SessionStorage namespace. - virtual WebStorageNamespace* createSessionStorageNamespace() = 0; - - // Called when storage events fire. - virtual void dispatchStorageEvent(const WebString& key, const WebString& oldValue, - const WebString& newValue, const WebString& origin, - const WebURL& url, bool isLocalStorage) = 0; - - - // File ---------------------------------------------------------------- - - // Various file/directory related functions. These map 1:1 with - // functions in WebCore's FileSystem.h. - virtual bool fileExists(const WebString& path) = 0; - virtual bool deleteFile(const WebString& path) = 0; - virtual bool deleteEmptyDirectory(const WebString& path) = 0; - virtual bool getFileSize(const WebString& path, long long& result) = 0; - virtual bool getFileModificationTime(const WebString& path, time_t& result) = 0; - virtual WebString directoryName(const WebString& path) = 0; - virtual WebString pathByAppendingComponent(const WebString& path, const WebString& component) = 0; - virtual bool makeAllDirectories(const WebString& path) = 0; - virtual WebString getAbsolutePath(const WebString& path) = 0; - virtual bool isDirectory(const WebString& path) = 0; - virtual WebURL filePathToURL(const WebString& path) = 0; - - - // History ------------------------------------------------------------- - - // Returns the hash for the given canonicalized URL for use in visited - // link coloring. - virtual unsigned long long visitedLinkHash( - const char* canonicalURL, size_t length) = 0; - - // Returns whether the given link hash is in the user's history. The - // hash must have been generated by calling VisitedLinkHash(). - virtual bool isLinkVisited(unsigned long long linkHash) = 0; - - - // Database ------------------------------------------------------------ - -#ifdef WIN32 - typedef HANDLE FileHandle; -#else - typedef int FileHandle; -#endif - - // Opens a database file; dirHandle should be 0 if the caller does not need - // a handle to the directory containing this file - virtual FileHandle databaseOpenFile( - const WebString& fileName, int desiredFlags, FileHandle* dirHandle) = 0; - - // Deletes a database file and returns the error code - virtual int databaseDeleteFile(const WebString& fileName, bool syncDir) = 0; - - // Returns the attributes of the given database file - virtual long databaseGetFileAttributes(const WebString& fileName) = 0; - - // Returns the size of the given database file - virtual long long databaseGetFileSize(const WebString& fileName) = 0; - - - // Keygen -------------------------------------------------------------- - - // Handle the <keygen> tag for generating client certificates - // Returns a base64 encoded signed copy of a public key from a newly - // generated key pair and the supplied challenge string. keySizeindex - // specifies the strength of the key. - virtual WebString signedPublicKeyAndChallengeString(unsigned keySizeIndex, - const WebKit::WebString& challenge, - const WebKit::WebURL& url) = 0; - - - - // Memory -------------------------------------------------------------- - - // Returns the current space allocated for the pagefile, in MB. - // That is committed size for Windows and virtual memory size for POSIX - virtual size_t memoryUsageMB() = 0; - - - // Message Ports ------------------------------------------------------- - - // Creates a Message Port Channel. This can be called on any thread. - // The returned object should only be used on the thread it was created on. - virtual WebMessagePortChannel* createMessagePortChannel() = 0; - - - // Network ------------------------------------------------------------- - - virtual void setCookies( - const WebURL& url, const WebURL& policyURL, const WebString& cookies) = 0; - virtual WebString cookies(const WebURL& url, const WebURL& policyURL) = 0; - virtual bool rawCookies(const WebURL& url, const WebURL& policyURL, WebVector<WebCookie>*) = 0; - virtual void deleteCookie(const WebURL& url, const WebString& cookieName) = 0; - - // A suggestion to prefetch IP information for the given hostname. - virtual void prefetchHostName(const WebString&) = 0; - - // Returns a new WebURLLoader instance. - virtual WebURLLoader* createURLLoader() = 0; - - // Returns a new WebSocketStreamHandle instance. - virtual WebSocketStreamHandle* createSocketStreamHandle() = 0; - - // Returns the User-Agent string that should be used for the given URL. - virtual WebString userAgent(const WebURL&) = 0; - - - // Plugins ------------------------------------------------------------- - - // If refresh is true, then cached information should not be used to - // satisfy this call. - virtual void getPluginList(bool refresh, WebPluginListBuilder*) = 0; - - - // Profiling ----------------------------------------------------------- - - virtual void decrementStatsCounter(const char* name) = 0; - virtual void incrementStatsCounter(const char* name) = 0; - - // An event is identified by the pair (name, id). The extra parameter - // specifies additional data to log with the event. - virtual void traceEventBegin(const char* name, void* id, const char* extra) = 0; - virtual void traceEventEnd(const char* name, void* id, const char* extra) = 0; - - - // Resources ----------------------------------------------------------- - - // Returns a blob of data corresponding to the named resource. - virtual WebData loadResource(const char* name) = 0; - - // Returns a localized string resource (with an optional numeric - // parameter value). - virtual WebString queryLocalizedString(WebLocalizedString::Name) = 0; - virtual WebString queryLocalizedString(WebLocalizedString::Name, int numericValue) = 0; - - - // Sandbox ------------------------------------------------------------ - - // In some browsers, a "sandbox" restricts what operations a program - // is allowed to preform. Such operations are typically abstracted out - // via this API, but sometimes (like in HTML 5 database opening) WebKit - // needs to behave differently based on whether it's restricted or not. - // In these cases (and these cases only) you can call this function. - // It's OK for this value to be conservitive (i.e. true even if the - // sandbox isn't active). - virtual bool sandboxEnabled() = 0; - - - // Shared Workers ------------------------------------------------------ - - virtual WebSharedWorkerRepository* sharedWorkerRepository() = 0; - - // Sudden Termination -------------------------------------------------- - - // Disable/Enable sudden termination. - virtual void suddenTerminationChanged(bool enabled) = 0; - - - // System -------------------------------------------------------------- - - // Returns a value such as "en-US". - virtual WebString defaultLocale() = 0; - - // Wall clock time in seconds since the epoch. - virtual double currentTime() = 0; - - // Delayed work is driven by a shared timer. - virtual void setSharedTimerFiredFunction(void (*func)()) = 0; - virtual void setSharedTimerFireTime(double fireTime) = 0; - virtual void stopSharedTimer() = 0; - - // Callable from a background WebKit thread. - virtual void callOnMainThread(void (*func)()) = 0; - -protected: - ~WebKitClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebLocalizedString.h b/webkit/api/public/WebLocalizedString.h deleted file mode 100644 index 99a7d23..0000000 --- a/webkit/api/public/WebLocalizedString.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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. - */ - -#ifndef WebLocalizedString_h -#define WebLocalizedString_h - -namespace WebKit { - -struct WebLocalizedString { - enum Name { - SubmitButtonDefaultLabel, - InputElementAltText, - ResetButtonDefaultLabel, - FileButtonChooseFileLabel, - FileButtonNoFileSelectedLabel, - MultipleFileUploadText, - SearchableIndexIntroduction, - SearchMenuNoRecentSearchesText, - SearchMenuRecentSearchesText, - SearchMenuClearRecentSearchesText, - AXWebAreaText, - AXLinkText, - AXListMarkerText, - AXImageMapText, - AXHeadingText, - AXButtonActionVerb, - AXRadioButtonActionVerb, - AXTextFieldActionVerb, - AXCheckedCheckBoxActionVerb, - AXUncheckedCheckBoxActionVerb, - AXLinkActionVerb, - KeygenMenuHighGradeKeySize, - KeygenMenuMediumGradeKeySize, - }; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebMediaPlayer.h b/webkit/api/public/WebMediaPlayer.h deleted file mode 100644 index 0b658f9..0000000 --- a/webkit/api/public/WebMediaPlayer.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * 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. - */ - -#ifndef WebMediaPlayer_h -#define WebMediaPlayer_h - -#include "WebCanvas.h" -#include "WebVector.h" - -namespace WebKit { - -class WebMediaPlayerClient; -class WebURL; -struct WebRect; -struct WebSize; - -struct WebTimeRange { - WebTimeRange() : start(0), end(0) {} - WebTimeRange(float s, float e) : start(s), end(e) {} - - float start; - float end; -}; - -typedef WebVector<WebTimeRange> WebTimeRanges; - -class WebMediaPlayer { -public: - enum NetworkState { - Empty, - Idle, - Loading, - Loaded, - FormatError, - NetworkError, - DecodeError, - }; - - enum ReadyState { - HaveNothing, - HaveMetadata, - HaveCurrentData, - HaveFutureData, - HaveEnoughData, - }; - - enum MovieLoadType { - Unknown, - Download, - StoredStream, - LiveStream, - }; - - virtual ~WebMediaPlayer() {} - - virtual void load(const WebURL&) = 0; - virtual void cancelLoad() = 0; - - // Playback controls. - virtual void play() = 0; - virtual void pause() = 0; - virtual bool supportsFullscreen() const = 0; - virtual bool supportsSave() const = 0; - virtual void seek(float seconds) = 0; - virtual void setEndTime(float seconds) = 0; - virtual void setRate(float) = 0; - virtual void setVolume(float) = 0; - virtual void setVisible(bool) = 0; - virtual bool setAutoBuffer(bool) = 0; - virtual bool totalBytesKnown() = 0; - virtual const WebTimeRanges& buffered() const = 0; - virtual float maxTimeSeekable() const = 0; - - virtual void setSize(const WebSize&) = 0; - - virtual void paint(WebCanvas*, const WebRect&) = 0; - - // True if the loaded media has a playable video/audio track. - virtual bool hasVideo() const = 0; - virtual bool hasAudio() const = 0; - - // Dimension of the video. - virtual WebSize naturalSize() const = 0; - - // Getters of playback state. - virtual bool paused() const = 0; - virtual bool seeking() const = 0; - virtual float duration() const = 0; - virtual float currentTime() const = 0; - - // Get rate of loading the resource. - virtual int dataRate() const = 0; - - // Internal states of loading and network. - virtual NetworkState networkState() const = 0; - virtual ReadyState readyState() const = 0; - - virtual unsigned long long bytesLoaded() const = 0; - virtual unsigned long long totalBytes() const = 0; - - virtual bool hasSingleSecurityOrigin() const = 0; - virtual MovieLoadType movieLoadType() const = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebMediaPlayerAction.h b/webkit/api/public/WebMediaPlayerAction.h deleted file mode 100644 index 3aede25..0000000 --- a/webkit/api/public/WebMediaPlayerAction.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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. - */ - -#ifndef WebMediaPlayerAction_h -#define WebMediaPlayerAction_h - -namespace WebKit { - -struct WebMediaPlayerAction { - enum Type { - Unknown, - Play, - Mute, - Loop - }; - - Type type; - bool enable; - - WebMediaPlayerAction() - : type(Unknown), enable(false) { } - WebMediaPlayerAction(Type type, bool enable) - : type(type), enable(enable) { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebMediaPlayerClient.h b/webkit/api/public/WebMediaPlayerClient.h deleted file mode 100644 index 558fb4a..0000000 --- a/webkit/api/public/WebMediaPlayerClient.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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. - */ - -#ifndef WebMediaPlayerClient_h -#define WebMediaPlayerClient_h - -namespace WebKit { - -class WebRequest; -class WebURL; - -class WebMediaPlayerClient { -public: - virtual void networkStateChanged() = 0; - virtual void readyStateChanged() = 0; - virtual void volumeChanged() = 0; - virtual void timeChanged() = 0; - virtual void repaint() = 0; - virtual void durationChanged() = 0; - virtual void rateChanged() = 0; - virtual void sizeChanged() = 0; - virtual void sawUnsupportedTracks() = 0; - -protected: - ~WebMediaPlayerClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebMessagePortChannel.h b/webkit/api/public/WebMessagePortChannel.h deleted file mode 100644 index 288bd55..0000000 --- a/webkit/api/public/WebMessagePortChannel.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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. - */ - -#ifndef WebMessagePortChannel_h -#define WebMessagePortChannel_h - -#include "WebCommon.h" -#include "WebVector.h" - -namespace WebKit { - -class WebMessagePortChannelClient; -class WebString; - -typedef WebVector<class WebMessagePortChannel*> WebMessagePortChannelArray; - -// Provides an interface to a Message Port Channel implementation. The object owns itself and -// is signalled that its not needed anymore with the destroy() call. -class WebMessagePortChannel { -public: - virtual void setClient(WebMessagePortChannelClient*) = 0; - virtual void destroy() = 0; - // WebKit versions of WebCore::MessagePortChannel. - virtual void entangle(WebMessagePortChannel*) = 0; - // Callee receives ownership of the passed vector. - virtual void postMessage(const WebString&, WebMessagePortChannelArray*) = 0; - virtual bool tryGetMessage(WebString*, WebMessagePortChannelArray&) = 0; - -protected: - ~WebMessagePortChannel() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebMessagePortChannelClient.h b/webkit/api/public/WebMessagePortChannelClient.h deleted file mode 100644 index 0b85bb3..0000000 --- a/webkit/api/public/WebMessagePortChannelClient.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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. - */ - -#ifndef WebMessagePortChannelClient_h -#define WebMessagePortChannelClient_h - -namespace WebKit { - -// Provides an interface for users of WebMessagePortChannel to be notified -// when messages are available. -class WebMessagePortChannelClient { -public: - // Alerts that new messages have arrived, which are retrieved by calling - // WebMessagePortChannel::tryGetMessage. Note that this may be called - // on any thread. - virtual void messageAvailable() = 0; - -protected: - ~WebMessagePortChannelClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebMimeRegistry.h b/webkit/api/public/WebMimeRegistry.h deleted file mode 100644 index 425753e..0000000 --- a/webkit/api/public/WebMimeRegistry.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef WebMimeRegistry_h -#define WebMimeRegistry_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebString; - -class WebMimeRegistry { -public: - enum SupportsType { IsNotSupported, IsSupported, MayBeSupported }; - - virtual SupportsType supportsMIMEType(const WebString& mimeType) = 0; - virtual SupportsType supportsImageMIMEType(const WebString& mimeType) = 0; - virtual SupportsType supportsJavaScriptMIMEType(const WebString& mimeType) = 0; - virtual SupportsType supportsMediaMIMEType(const WebString& mimeType, - const WebString& codecs) = 0; - virtual SupportsType supportsNonImageMIMEType(const WebString& mimeType) = 0; - - virtual WebString mimeTypeForExtension(const WebString& fileExtension) = 0; - virtual WebString mimeTypeFromFile(const WebString& filePath) = 0; - virtual WebString preferredExtensionForMIMEType(const WebString& mimeType) = 0; - -protected: - ~WebMimeRegistry() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebNavigationPolicy.h b/webkit/api/public/WebNavigationPolicy.h deleted file mode 100644 index 54bee9d..0000000 --- a/webkit/api/public/WebNavigationPolicy.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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. - */ - -#ifndef WebNavigationPolicy_h -#define WebNavigationPolicy_h - -namespace WebKit { - -enum WebNavigationPolicy { - WebNavigationPolicyIgnore, - WebNavigationPolicyDownload, - WebNavigationPolicyCurrentTab, - WebNavigationPolicyNewBackgroundTab, - WebNavigationPolicyNewForegroundTab, - WebNavigationPolicyNewWindow, - WebNavigationPolicyNewPopup, -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebNavigationType.h b/webkit/api/public/WebNavigationType.h deleted file mode 100644 index 8ca8dc6..0000000 --- a/webkit/api/public/WebNavigationType.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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. - */ - -#ifndef WebNavigationType_h -#define WebNavigationType_h - -namespace WebKit { - -enum WebNavigationType { - WebNavigationTypeLinkClicked, - WebNavigationTypeFormSubmitted, - WebNavigationTypeBackForward, - WebNavigationTypeReload, - WebNavigationTypeFormResubmitted, - WebNavigationTypeOther -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebNode.h b/webkit/api/public/WebNode.h deleted file mode 100644 index 4c48915..0000000 --- a/webkit/api/public/WebNode.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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. - */ - -#ifndef WebNode_h -#define WebNode_h - -#include "WebCommon.h" -#include "WebString.h" - -namespace WebCore { class Node; } -#if WEBKIT_IMPLEMENTATION -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { -class WebFrame; - -// Provides readonly access to some properties of a DOM node. -class WebNode { -public: - virtual ~WebNode() { reset(); } - - WebNode() : m_private(0) { } - WebNode(const WebNode& n) : m_private(0) { assign(n); } - WebNode& operator=(const WebNode& n) - { - assign(n); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebNode&); - - bool isNull() const { return !m_private; } - -#if WEBKIT_IMPLEMENTATION - WebNode(const WTF::PassRefPtr<WebCore::Node>&); - WebNode& operator=(const WTF::PassRefPtr<WebCore::Node>&); - operator WTF::PassRefPtr<WebCore::Node>() const; -#endif - - WEBKIT_API WebNode parentNode() const; - WEBKIT_API WebString nodeName() const; - WebFrame* frame(); - - template<typename T> T toElement() - { - T res; - res.m_private = m_private; - return res; - } - -protected: - typedef WebCore::Node WebNodePrivate; - void assign(WebNodePrivate*); - WebNodePrivate* m_private; - - template<typename T> T* unwrap() - { - return static_cast<T*>(m_private); - } - - template<typename T> const T* constUnwrap() const - { - return static_cast<const T*>(m_private); - } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebNonCopyable.h b/webkit/api/public/WebNonCopyable.h deleted file mode 100644 index b0bd456..0000000 --- a/webkit/api/public/WebNonCopyable.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - */ - -#ifndef WebNonCopyable_h -#define WebNonCopyable_h - -namespace WebKit { - -// A base class to extend from if you do not support copying. -class WebNonCopyable { -protected: - WebNonCopyable() { } - ~WebNonCopyable() { } - -private: - WebNonCopyable(const WebNonCopyable&); - WebNonCopyable& operator=(const WebNonCopyable&); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebNotification.h b/webkit/api/public/WebNotification.h deleted file mode 100644 index 1a41252..0000000 --- a/webkit/api/public/WebNotification.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * 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. - */ - -#ifndef WebNotification_h -#define WebNotification_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class Notification; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebNotificationPrivate; -class WebURL; -class WebString; - -// Represents access to a desktop notification. -class WebNotification { -public: - WebNotification() : m_private(0) { } - WebNotification(const WebNotification& other) : m_private(0) { assign(other); } - - ~WebNotification() { reset(); } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebNotification&); - - WebNotification& operator=(const WebNotification& other) - { - assign(other); - return *this; - } - - // Operators required to put WebNotification in an ordered map. - bool equals(const WebNotification& other) const { return m_private == other.m_private; } - bool lessThan(const WebNotification& other) const; - - // Is the notification HTML vs. icon-title-text? - WEBKIT_API bool isHTML() const; - - // If HTML, the URL which contains the contents of the notification. - WEBKIT_API WebURL url() const; - - // If not HTML, the parameters for the icon-title-text notification. - WEBKIT_API WebString icon() const; - WEBKIT_API WebString title() const; - WEBKIT_API WebString body() const; - - // Called to indicate the notification has been displayed. - WEBKIT_API void dispatchDisplayEvent(); - - // Called to indicate an error has occurred with this notification. - WEBKIT_API void dispatchErrorEvent(const WebString& errorMessage); - - // Called to indicate the notification has been closed. If it was - // closed by the user (as opposed to automatically by the system), - // the byUser parameter will be true. - WEBKIT_API void dispatchCloseEvent(bool byUser); - -#if WEBKIT_IMPLEMENTATION - WebNotification(const WTF::PassRefPtr<WebCore::Notification>&); - WebNotification& operator=(const WTF::PassRefPtr<WebCore::Notification>&); - operator WTF::PassRefPtr<WebCore::Notification>() const; -#endif - -private: - void assign(WebNotificationPrivate*); - WebNotificationPrivate* m_private; -}; - -inline bool operator==(const WebNotification& a, const WebNotification& b) -{ - return a.equals(b); -} - -inline bool operator!=(const WebNotification& a, const WebNotification& b) -{ - return !a.equals(b); -} - -inline bool operator<(const WebNotification& a, const WebNotification& b) -{ - return a.lessThan(b); -} - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebNotificationPermissionCallback.h b/webkit/api/public/WebNotificationPermissionCallback.h deleted file mode 100644 index 07e85ee..0000000 --- a/webkit/api/public/WebNotificationPermissionCallback.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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. - */ - -#ifndef WebNotificationPermissionCallback_h -#define WebNotificationPermissionCallback_h - -namespace WebKit { - -// Callback object used with WebNotificationPresenter. -class WebNotificationPermissionCallback { -public: - // Method to be invoked when the async permission request involving - // this object has been completed. - virtual void permissionRequestComplete() = 0; - -protected: - // This object is to be destroyed after the callback is invoked; - // it should not be directly destroyed. - ~WebNotificationPermissionCallback() {} -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebNotificationPresenter.h b/webkit/api/public/WebNotificationPresenter.h deleted file mode 100644 index 653b142..0000000 --- a/webkit/api/public/WebNotificationPresenter.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ - -#ifndef WebNotificationPresenter_h -#define WebNotificationPresenter_h - -#include "WebString.h" - -namespace WebKit { - -class WebNotification; -class WebNotificationPermissionCallback; - -// Provides the services to show desktop notifications to the user. -class WebNotificationPresenter { -public: - enum Permission { - PermissionAllowed, // User has allowed permission to the origin. - PermissionNotAllowed, // User has not taken an action on the origin (defaults to not allowed). - PermissionDenied // User has explicitly denied permission from the origin. - }; - - // Shows a notification. - virtual bool show(const WebNotification&) = 0; - - // Cancels a notification previously shown, and removes it if being shown. - virtual void cancel(const WebNotification&) = 0; - - // Indiciates that the notification object subscribed to events for a previously shown notification is - // being destroyed. Does _not_ remove the notification if being shown, but detaches it from receiving events. - virtual void objectDestroyed(const WebNotification&) = 0; - - // Checks the permission level of a given origin. - virtual Permission checkPermission(const WebString& origin) = 0; - - // Requests permission for a given origin. This operation is asynchronous and the callback provided - // will be invoked when the permission decision is made. Callback pointer must remain - // valid until called. - virtual void requestPermission(const WebString& origin, WebNotificationPermissionCallback* callback) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPasswordAutocompleteListener.h b/webkit/api/public/WebPasswordAutocompleteListener.h deleted file mode 100644 index db6589d..0000000 --- a/webkit/api/public/WebPasswordAutocompleteListener.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPasswordAutocompleteListener_h -#define WebPasswordAutocompleteListener_h - -namespace WebKit { -class WebString; - -class WebPasswordAutocompleteListener { -public: - virtual ~WebPasswordAutocompleteListener() {} - - virtual void didBlurInputElement( - const WebString& userInput) = 0; - - virtual void performInlineAutocomplete( - const WebString& userInput, - bool backSpaceOrDeletePressed, - bool showSuggestions) = 0; -}; - -} // namespace WebKit - - -#endif diff --git a/webkit/api/public/WebPasswordFormData.h b/webkit/api/public/WebPasswordFormData.h deleted file mode 100644 index e1804d1..0000000 --- a/webkit/api/public/WebPasswordFormData.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPasswordFormData_h -#define WebPasswordFormData_h - -#include "WebFormElement.h" -#include "WebString.h" -#include "WebURL.h" - -namespace WebKit { - -struct WebPasswordFormData { - // If the provided form is suitable for password completion, isValid() will - // return true; - WebPasswordFormData(const WebFormElement&); - - // If creation failed, return false. - bool isValid() const { return action.isValid(); } - - // The action target of the form. This is the primary data used by the - // PasswordManager for form autofill; that is, the action of the saved - // credentials must match the action of the form on the page to be autofilled. - // If this is empty / not available, it will result in a "restricted" - // IE-like autofill policy, where we wait for the user to type in his - // username before autofilling the password. In these cases, after successful - // login the action URL will automatically be assigned by the - // PasswordManager. - // - // When parsing an HTML form, this must always be set. - WebURL action; - - // The "Realm" for the sign-on (scheme, host, port for SCHEME_HTML, and - // contains the HTTP realm for dialog-based forms). - // The signon_realm is effectively the primary key used for retrieving - // data from the database, so it must not be empty. - WebString signonRealm; - - // The URL (minus query parameters) containing the form. This is the primary - // data used by the PasswordManager to decide (in longest matching prefix - // fashion) whether or not a given PasswordForm result from the database is a - // good fit for a particular form on a page, so it must not be empty. - WebURL origin; - - // The name of the submit button used. Optional; only used in scoring - // of PasswordForm results from the database to make matches as tight as - // possible. - // - // When parsing an HTML form, this must always be set. - WebString submitElement; - - // The name of the username input element. Optional (improves scoring). - // - // When parsing an HTML form, this must always be set. - WebString userNameElement; - - // The username. Optional. - // - // When parsing an HTML form, this is typically empty unless the site - // has implemented some form of autofill. - WebString userNameValue; - - // The name of the password input element, Optional (improves scoring). - // - // When parsing an HTML form, this must always be set. - WebString passwordElement; - - // The password. Required. - // - // When parsing an HTML form, this is typically empty. - WebString passwordValue; - - // If the form was a change password form, the name of the - // 'old password' input element. Optional. - WebString oldPasswordElement; - - // The old password. Optional. - WebString oldPasswordValue; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPlugin.h b/webkit/api/public/WebPlugin.h deleted file mode 100644 index 5097265..0000000 --- a/webkit/api/public/WebPlugin.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPlugin_h -#define WebPlugin_h - -#include "WebCanvas.h" - -struct NPObject; - -namespace WebKit { - -class WebDataSource; -class WebFrame; -class WebInputEvent; -class WebPluginContainer; -class WebURL; -class WebURLResponse; -struct WebCursorInfo; -struct WebPluginParams; -struct WebRect; -struct WebURLError; -template <typename T> class WebVector; - -class WebPlugin { -public: - virtual bool initialize(WebPluginContainer*) = 0; - virtual void destroy() = 0; - - virtual NPObject* scriptableObject() = 0; - - virtual void paint(WebCanvas*, const WebRect&) = 0; - - // Coordinates are relative to the containing window. - virtual void updateGeometry( - const WebRect& frameRect, const WebRect& clipRect, - const WebVector<WebRect>& cutOutsRects, bool isVisible) = 0; - - virtual void updateFocus(bool) = 0; - virtual void updateVisibility(bool) = 0; - - virtual bool acceptsInputEvents() = 0; - virtual bool handleInputEvent(const WebInputEvent&, WebCursorInfo&) = 0; - - virtual void didReceiveResponse(const WebURLResponse&) = 0; - virtual void didReceiveData(const char* data, int dataLength) = 0; - virtual void didFinishLoading() = 0; - virtual void didFailLoading(const WebURLError&) = 0; - - // Called in response to WebPluginContainer::loadFrameRequest - virtual void didFinishLoadingFrameRequest( - const WebURL&, void* notifyData) = 0; - virtual void didFailLoadingFrameRequest( - const WebURL&, void* notifyData, const WebURLError&) = 0; - -protected: - ~WebPlugin() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPluginContainer.h b/webkit/api/public/WebPluginContainer.h deleted file mode 100644 index 41e304e..0000000 --- a/webkit/api/public/WebPluginContainer.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPluginContainer_h -#define WebPluginContainer_h - -struct NPObject; - -namespace WebKit { - -class WebString; -class WebURL; -class WebURLRequest; -struct WebRect; - -class WebPluginContainer { -public: - virtual void invalidate() = 0; - virtual void invalidateRect(const WebRect&) = 0; - - // Causes the container to report its current geometry via - // WebPlugin::updateGeometry. - virtual void reportGeometry() = 0; - - // Drop any references to script objects allocated by the plugin. - // These are objects derived from WebPlugin::scriptableObject. This is - // called when the plugin is being destroyed or if it needs to be - // re-initialized. - virtual void clearScriptObjects() = 0; - - // Returns the scriptable object associated with the DOM element - // containing the plugin. - virtual NPObject* scriptableObjectForElement() = 0; - - // Executes a "javascript:" URL on behalf of the plugin in the context - // of the frame containing the plugin. Returns the result of script - // execution, if any. - virtual WebString executeScriptURL(const WebURL&, bool popupsAllowed) = 0; - - // Loads an URL in the specified frame (or the frame containing this - // plugin if target is empty). If notifyNeeded is true, then upon - // completion, WebPlugin::didFinishLoadingFrameRequest is called if the - // load was successful or WebPlugin::didFailLoadingFrameRequest is - // called if the load failed. The given notifyData is passed along to - // the callback. - virtual void loadFrameRequest( - const WebURLRequest&, const WebString& target, bool notifyNeeded, void* notifyData) = 0; - -protected: - ~WebPluginContainer() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPluginListBuilder.h b/webkit/api/public/WebPluginListBuilder.h deleted file mode 100644 index 4bd427d..0000000 --- a/webkit/api/public/WebPluginListBuilder.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPluginListBuilder_h -#define WebPluginListBuilder_h - -namespace WebKit { - -class WebString; - -// An interface for building a list of known plugins. -class WebPluginListBuilder { -public: - virtual void addPlugin( - const WebString& name, const WebString& description, - const WebString& fileName) = 0; - - virtual void addMediaTypeToLastPlugin( - const WebString& name, const WebString& description) = 0; - - virtual void addFileExtensionToLastMediaType( - const WebString& fileExtension) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPluginParams.h b/webkit/api/public/WebPluginParams.h deleted file mode 100644 index 5d03204..0000000 --- a/webkit/api/public/WebPluginParams.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPluginParams_h -#define WebPluginParams_h - -#include "WebString.h" -#include "WebURL.h" -#include "WebVector.h" - -namespace WebKit { - -struct WebPluginParams { - WebURL url; - WebString mimeType; - WebVector<WebString> attributeNames; - WebVector<WebString> attributeValues; - bool loadManually; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPoint.h b/webkit/api/public/WebPoint.h deleted file mode 100644 index d1abe02..0000000 --- a/webkit/api/public/WebPoint.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPoint_h -#define WebPoint_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -#include "IntPoint.h" -#else -#include <base/gfx/rect.h> -#endif - -namespace WebKit { - -struct WebPoint { - int x; - int y; - - WebPoint() - : x(0) - , y(0) - { - } - - WebPoint(int x, int y) - : x(x) - , y(y) - { - } - -#if WEBKIT_IMPLEMENTATION - WebPoint(const WebCore::IntPoint& p) - : x(p.x()) - , y(p.y()) - { - } - - WebPoint& operator=(const WebCore::IntPoint& p) - { - x = p.x(); - y = p.y(); - return *this; - } - - operator WebCore::IntPoint() const - { - return WebCore::IntPoint(x, y); - } -#else - WebPoint(const gfx::Point& p) - : x(p.x()) - , y(p.y()) - { - } - - WebPoint& operator=(const gfx::Point& p) - { - x = p.x(); - y = p.y(); - return *this; - } - - operator gfx::Point() const - { - return gfx::Point(x, y); - } -#endif -}; - -inline bool operator==(const WebPoint& a, const WebPoint& b) -{ - return a.x == b.x && a.y == b.y; -} - -inline bool operator!=(const WebPoint& a, const WebPoint& b) -{ - return !(a == b); -} - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPopupMenu.h b/webkit/api/public/WebPopupMenu.h deleted file mode 100644 index c2cdec3..0000000 --- a/webkit/api/public/WebPopupMenu.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPopupMenu_h -#define WebPopupMenu_h - -#include "WebCommon.h" -#include "WebWidget.h" - -namespace WebKit { - -class WebWidgetClient; - -class WebPopupMenu : public WebWidget { -public: - WEBKIT_API static WebPopupMenu* create(WebWidgetClient*); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebPopupMenuInfo.h b/webkit/api/public/WebPopupMenuInfo.h deleted file mode 100644 index 107cfa9..0000000 --- a/webkit/api/public/WebPopupMenuInfo.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPopupMenuInfo_h -#define WebPopupMenuInfo_h - -#include "WebCommon.h" -#include "WebRect.h" -#include "WebString.h" -#include "WebVector.h" - -namespace WebKit { - -// Describes the contents of a popup menu. -struct WebPopupMenuInfo { - struct Item { - enum Type { - Option, - Group, - Separator, - }; - WebString label; - Type type; - bool enabled; - }; - - int itemHeight; - int selectedIndex; - WebVector<Item> items; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebRange.h b/webkit/api/public/WebRange.h deleted file mode 100644 index 89fc8f6..0000000 --- a/webkit/api/public/WebRange.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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. - */ - -#ifndef WebRange_h -#define WebRange_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class Range; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebNode; -class WebRangePrivate; -class WebString; - -// Provides readonly access to some properties of a DOM range. -class WebRange { -public: - ~WebRange() { reset(); } - - WebRange() : m_private(0) { } - WebRange(const WebRange& r) : m_private(0) { assign(r); } - WebRange& operator=(const WebRange& r) - { - assign(r); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebRange&); - - bool isNull() const { return !m_private; } - - WEBKIT_API int startOffset() const; - WEBKIT_API int endOffset() const; - WEBKIT_API WebNode startContainer(int& exceptionCode) const; - WEBKIT_API WebNode endContainer(int& exceptionCode) const; - - WEBKIT_API WebString toHTMLText() const; - WEBKIT_API WebString toPlainText() const; - -#if WEBKIT_IMPLEMENTATION - WebRange(const WTF::PassRefPtr<WebCore::Range>&); - WebRange& operator=(const WTF::PassRefPtr<WebCore::Range>&); - operator WTF::PassRefPtr<WebCore::Range>() const; -#endif - -private: - void assign(WebRangePrivate*); - WebRangePrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebRect.h b/webkit/api/public/WebRect.h deleted file mode 100644 index ed5a7d1..0000000 --- a/webkit/api/public/WebRect.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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. - */ - -#ifndef WebRect_h -#define WebRect_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -#include "IntRect.h" -#else -#include <base/gfx/rect.h> -#endif - -namespace WebKit { - -struct WebRect { - int x; - int y; - int width; - int height; - - bool isEmpty() const { return width <= 0 || height <= 0; } - - WebRect() - : x(0) - , y(0) - , width(0) - , height(0) - { - } - - WebRect(int x, int y, int width, int height) - : x(x) - , y(y) - , width(width) - , height(height) - { - } - -#if WEBKIT_IMPLEMENTATION - WebRect(const WebCore::IntRect& r) - : x(r.x()) - , y(r.y()) - , width(r.width()) - , height(r.height()) - { - } - - WebRect& operator=(const WebCore::IntRect& r) - { - x = r.x(); - y = r.y(); - width = r.width(); - height = r.height(); - return *this; - } - - operator WebCore::IntRect() const - { - return WebCore::IntRect(x, y, width, height); - } -#else - WebRect(const gfx::Rect& r) - : x(r.x()) - , y(r.y()) - , width(r.width()) - , height(r.height()) - { - } - - WebRect& operator=(const gfx::Rect& r) - { - x = r.x(); - y = r.y(); - width = r.width(); - height = r.height(); - return *this; - } - - operator gfx::Rect() const - { - return gfx::Rect(x, y, width, height); - } -#endif -}; - -inline bool operator==(const WebRect& a, const WebRect& b) -{ - return a.x == b.x && a.y == b.y && a.width == b.width && a.height == b.height; -} - -inline bool operator!=(const WebRect& a, const WebRect& b) -{ - return !(a == b); -} - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebRuntimeFeatures.h b/webkit/api/public/WebRuntimeFeatures.h deleted file mode 100644 index eb6b2da..0000000 --- a/webkit/api/public/WebRuntimeFeatures.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ - -#ifndef WebRuntimeFeatures_h -#define WebRuntimeFeatures_h - -#include "WebCommon.h" - -namespace WebKit { - -// This class is used to enable runtime features of WebKit. It is unspecified -// whether a feature is enabled by default. In the future, a feature may be -// promoted from disabled by default to enabled by default once it reaches a -// certain level of maturity. -class WebRuntimeFeatures { -public: - WEBKIT_API static void enableDatabase(bool); - WEBKIT_API static bool isDatabaseEnabled(); - - WEBKIT_API static void enableLocalStorage(bool); - WEBKIT_API static bool isLocalStorageEnabled(); - - WEBKIT_API static void enableSessionStorage(bool); - WEBKIT_API static bool isSessionStorageEnabled(); - - WEBKIT_API static void enableMediaPlayer(bool); - WEBKIT_API static bool isMediaPlayerEnabled(); - - WEBKIT_API static void enableSockets(bool); - WEBKIT_API static bool isSocketsEnabled(); - - WEBKIT_API static void enableNotifications(bool); - WEBKIT_API static bool isNotificationsEnabled(); - - WEBKIT_API static void enableApplicationCache(bool); - WEBKIT_API static bool isApplicationCacheEnabled(); - -private: - WebRuntimeFeatures(); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebScreenInfo.h b/webkit/api/public/WebScreenInfo.h deleted file mode 100644 index d3d268a..0000000 --- a/webkit/api/public/WebScreenInfo.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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. - */ - -#ifndef WebScreenInfo_h -#define WebScreenInfo_h - -#include "WebRect.h" - -namespace WebKit { - -struct WebScreenInfo { - // The screen depth in bits per pixel - int depth; - - // The bits per colour component. This assumes that the colours are balanced - // equally. - int depthPerComponent; - - // This can be true for black and white printers - bool isMonochrome; - - // This is set from the rcMonitor member of MONITORINFOEX, to whit: - // "A RECT structure that specifies the display monitor rectangle, - // expressed in virtual-screen coordinates. Note that if the monitor - // is not the primary display monitor, some of the rectangle's - // coordinates may be negative values." - WebRect rect; - - // This is set from the rcWork member of MONITORINFOEX, to whit: - // "A RECT structure that specifies the work area rectangle of the - // display monitor that can be used by applications, expressed in - // virtual-screen coordinates. Windows uses this rectangle to - // maximize an application on the monitor. The rest of the area in - // rcMonitor contains system windows such as the task bar and side - // bars. Note that if the monitor is not the primary display monitor, - // some of the rectangle's coordinates may be negative values". - WebRect availableRect; - - WebScreenInfo() - : depth(0) - , depthPerComponent(0) - , isMonochrome(false) { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebScriptController.h b/webkit/api/public/WebScriptController.h deleted file mode 100644 index 54bb08a..0000000 --- a/webkit/api/public/WebScriptController.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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. - */ - -#ifndef WebScriptController_h -#define WebScriptController_h - -#include "WebCommon.h" - -namespace v8 { -class Extension; -} - -namespace WebKit { - -class WebString; - -class WebScriptController { -public: - // Registers a v8 extension to be available on webpages. The three forms - // offer various restrictions on what types of contexts the extension is - // loaded into. If a scheme is provided, only pages whose URL has the given - // scheme will match. If extensionGroup is provided, the extension will only - // be loaded into scripts run via WebFrame::ExecuteInNewWorld with the - // matching group. - // Will only affect v8 contexts initialized after this call. Takes ownership - // of the v8::Extension object passed. - WEBKIT_API static void registerExtension(v8::Extension*); - WEBKIT_API static void registerExtension(v8::Extension*, - const WebString& schemeRestriction); - WEBKIT_API static void registerExtension(v8::Extension*, int extensionGroup); - - // Enables special settings which are only applicable if V8 is executed - // in the single thread which must be the main thread. - // FIXME: make a try to dynamically detect when this condition is broken - // and automatically switch off single thread mode. - WEBKIT_API static void enableV8SingleThreadMode(); - - // Process any pending JavaScript console messages. - WEBKIT_API static void flushConsoleMessages(); - -private: - WebScriptController(); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebScriptSource.h b/webkit/api/public/WebScriptSource.h deleted file mode 100644 index 344815b..0000000 --- a/webkit/api/public/WebScriptSource.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - */ - -#ifndef WebScriptSource_h -#define WebScriptSource_h - -#include "WebString.h" -#include "WebURL.h" - -namespace WebKit { - -struct WebScriptSource { - WebString code; - WebURL url; - int startLine; - - WebScriptSource(const WebString& code) - : code(code), startLine(1) { } - WebScriptSource(const WebString& code, const WebURL& url) - : code(code), url(url), startLine(1) { } - WebScriptSource(const WebString& code, const WebURL& url, int startLine) - : code(code), url(url), startLine(startLine) { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSearchableFormData.h b/webkit/api/public/WebSearchableFormData.h deleted file mode 100644 index e453387..0000000 --- a/webkit/api/public/WebSearchableFormData.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSearchableFormData_h -#define WebSearchableFormData_h - -#include "WebString.h" -#include "WebURL.h" - -namespace WebKit { -class WebFormElement; - -// SearchableFormData encapsulates a URL and encoding of an INPUT field that -// corresponds to a searchable form request. -class WebSearchableFormData { -public: - // If the provided form is suitable for automated searching, isValid() - // will return false. - WebSearchableFormData(const WebFormElement&); - - bool isValid() { return m_url.isValid(); } - - // URL for the searchable form request. - const WebURL& url() const - { - return m_url; - } - - // Encoding used to encode the form parameters; never empty. - const WebString& encoding() const - { - return m_encoding; - } - -private: - WebURL m_url; - WebString m_encoding; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSecurityOrigin.h b/webkit/api/public/WebSecurityOrigin.h deleted file mode 100644 index d04fbc6..0000000 --- a/webkit/api/public/WebSecurityOrigin.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSecurityOrigin_h -#define WebSecurityOrigin_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class SecurityOrigin; } -namespace WTF { template <typename T> class PassRefPtr; } -#endif - -namespace WebKit { - -class WebSecurityOriginPrivate; -class WebString; - -class WebSecurityOrigin { -public: - ~WebSecurityOrigin() { reset(); } - - WebSecurityOrigin() : m_private(0) { } - WebSecurityOrigin(const WebSecurityOrigin& s) : m_private(0) { assign(s); } - WebSecurityOrigin& operator=(const WebSecurityOrigin& s) - { - assign(s); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebSecurityOrigin&); - - bool isNull() const { return !m_private; } - - WEBKIT_API WebString protocol() const; - WEBKIT_API WebString host() const; - WEBKIT_API unsigned short port() const; - - // The empty WebSecurityOrigin is the least privileged WebSecurityOrigin. - WEBKIT_API bool isEmpty() const; - - // Returns a string representation of the WebSecurityOrigin. The empty - // WebSecurityOrigin is represented by "null". The representation of a - // non-empty WebSecurityOrigin resembles a standard URL. - WEBKIT_API WebString toString() const; - - // Returns a string representation of this WebSecurityOrigin that can - // be used as a file. Should be used in storage APIs only. - WEBKIT_API WebString databaseIdentifier(); - -#if WEBKIT_IMPLEMENTATION - WebSecurityOrigin(const WTF::PassRefPtr<WebCore::SecurityOrigin>&); - WebSecurityOrigin& operator=(const WTF::PassRefPtr<WebCore::SecurityOrigin>&); - operator WTF::PassRefPtr<WebCore::SecurityOrigin>() const; -#endif - -private: - void assign(WebSecurityOriginPrivate*); - WebSecurityOriginPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSecurityPolicy.h b/webkit/api/public/WebSecurityPolicy.h deleted file mode 100755 index 47dfe87..0000000 --- a/webkit/api/public/WebSecurityPolicy.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSecurityPolicy_h -#define WebSecurityPolicy_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebString; -class WebURL; - -class WebSecurityPolicy { -public: - // Registers a URL scheme to be treated as a local scheme (i.e., with the - // same security rules as those applied to "file" URLs). This means that - // normal pages cannot link to or access URLs of this scheme. - WEBKIT_API static void registerURLSchemeAsLocal(const WebString&); - - // Registers a URL scheme to be treated as a noAccess scheme. This means - // that pages loaded with this URL scheme cannot access pages loaded with - // any other URL scheme. - WEBKIT_API static void registerURLSchemeAsNoAccess(const WebString&); - - // Support for whitelisting access to origins beyond the same-origin policy. - WEBKIT_API static void whiteListAccessFromOrigin( - const WebURL& sourceOrigin, const WebString& destinationProtocol, - const WebString& destinationHost, bool allowDestinationSubdomains); - WEBKIT_API static void resetOriginAccessWhiteLists(); - -private: - WebSecurityPolicy(); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSettings.h b/webkit/api/public/WebSettings.h deleted file mode 100644 index 8ec41f8..0000000 --- a/webkit/api/public/WebSettings.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSettings_h -#define WebSettings_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebString; -class WebURL; - -// WebSettings is owned by the WebView and allows code to modify the settings for -// the WebView's page without any knowledge of WebCore itself. For the most part, -// these functions have a 1:1 mapping with the methods in WebCore/page/settings.h. -class WebSettings { -public: - virtual void setStandardFontFamily(const WebString&) = 0; - virtual void setFixedFontFamily(const WebString&) = 0; - virtual void setSerifFontFamily(const WebString&) = 0; - virtual void setSansSerifFontFamily(const WebString&) = 0; - virtual void setCursiveFontFamily(const WebString&) = 0; - virtual void setFantasyFontFamily(const WebString&) = 0; - virtual void setDefaultFontSize(int) = 0; - virtual void setDefaultFixedFontSize(int) = 0; - virtual void setMinimumFontSize(int) = 0; - virtual void setMinimumLogicalFontSize(int) = 0; - virtual void setDefaultTextEncodingName(const WebString&) = 0; - virtual void setJavaScriptEnabled(bool) = 0; - virtual void setWebSecurityEnabled(bool) = 0; - virtual void setJavaScriptCanOpenWindowsAutomatically(bool) = 0; - virtual void setLoadsImagesAutomatically(bool) = 0; - virtual void setPluginsEnabled(bool) = 0; - virtual void setDOMPasteAllowed(bool) = 0; - virtual void setDeveloperExtrasEnabled(bool) = 0; - virtual void setShrinksStandaloneImagesToFit(bool) = 0; - virtual void setUsesEncodingDetector(bool) = 0; - virtual void setTextAreasAreResizable(bool) = 0; - virtual void setJavaEnabled(bool) = 0; - virtual void setAllowScriptsToCloseWindows(bool) = 0; - virtual void setUserStyleSheetLocation(const WebURL&) = 0; - virtual void setUsesPageCache(bool) = 0; - virtual void setDownloadableBinaryFontsEnabled(bool) = 0; - virtual void setXSSAuditorEnabled(bool) = 0; - virtual void setLocalStorageEnabled(bool) = 0; - virtual void setEditableLinkBehaviorNeverLive() = 0; - virtual void setFontRenderingModeNormal() = 0; - virtual void setShouldPaintCustomScrollbars(bool) = 0; - virtual void setDatabasesEnabled(bool) = 0; - virtual void setAllowUniversalAccessFromFileURLs(bool) = 0; - virtual void setTextDirectionSubmenuInclusionBehaviorNeverIncluded() = 0; - virtual void setOfflineWebApplicationCacheEnabled(bool) = 0; - virtual void setExperimentalWebGLEnabled(bool) = 0; - -protected: - ~WebSettings() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSharedWorker.h b/webkit/api/public/WebSharedWorker.h deleted file mode 100644 index 4ac7639..0000000 --- a/webkit/api/public/WebSharedWorker.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSharedWorker_h -#define WebSharedWorker_h - -#include "WebCommon.h" - -namespace WebCore { -class ScriptExecutionContext; -} - -namespace WebKit { - -class WebString; -class WebMessagePortChannel; -class WebCommonWorkerClient; -class WebURL; - -// This is the interface to a SharedWorker thread. -// Since SharedWorkers communicate entirely through MessagePorts this interface only contains APIs for starting up a SharedWorker. -class WebSharedWorker { -public: - // Invoked from the worker thread to instantiate a WebSharedWorker that interacts with the WebKit worker components. - WEBKIT_API static WebSharedWorker* create(WebCommonWorkerClient*); - - virtual ~WebSharedWorker() {}; - - // Returns false if the thread hasn't been started yet (script loading has not taken place). - // FIXME(atwilson): Remove this when we move the initial script loading into the worker process. - virtual bool isStarted() = 0; - - virtual void startWorkerContext(const WebURL& scriptURL, - const WebString& name, - const WebString& userAgent, - const WebString& sourceCode) = 0; - class ConnectListener { - public: - // Invoked once the connect event has been sent so the caller can free this object. - virtual void connected() = 0; - }; - - // Sends a connect event to the SharedWorker context. The listener is invoked when this async operation completes. - virtual void connect(WebMessagePortChannel*, ConnectListener*) = 0; - - // Invoked to shutdown the worker when there are no more associated documents. - virtual void terminateWorkerContext() = 0; - - // Notification when the WebCommonWorkerClient is destroyed. - virtual void clientDestroyed() = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSharedWorkerRepository.h b/webkit/api/public/WebSharedWorkerRepository.h deleted file mode 100644 index 9fe6890..0000000 --- a/webkit/api/public/WebSharedWorkerRepository.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSharedWorkerRepository_h -#define WebSharedWorkerRepository_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebString; -class WebSharedWorker; -class WebURL; - -class WebSharedWorkerRepository { -public: - // Unique identifier for the parent document of a worker (unique within a given process). - typedef unsigned long long DocumentID; - - // Tracks a newly-created SharedWorker via the repository. - virtual void addSharedWorker(WebSharedWorker*, DocumentID) = 0; - - // Invoked when a document has been detached. DocumentID can be re-used after documentDetached() is invoked. - virtual void documentDetached(DocumentID) = 0; - - // Returns true if the passed document is associated with any SharedWorkers. - virtual bool hasSharedWorkers(DocumentID) = 0; -}; - -} // namespace WebKit - -#endif // WebSharedWorkerRepository_h diff --git a/webkit/api/public/WebSize.h b/webkit/api/public/WebSize.h deleted file mode 100644 index bb88633..0000000 --- a/webkit/api/public/WebSize.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSize_h -#define WebSize_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -#include "IntSize.h" -#else -#include <base/gfx/rect.h> -#endif - -namespace WebKit { - -struct WebSize { - int width; - int height; - - bool isEmpty() const { return width <= 0 || height <= 0; } - - WebSize() - : width(0) - , height(0) - { - } - - WebSize(int width, int height) - : width(width) - , height(height) - { - } - -#if WEBKIT_IMPLEMENTATION - WebSize(const WebCore::IntSize& s) - : width(s.width()) - , height(s.height()) - { - } - - WebSize& operator=(const WebCore::IntSize& s) - { - width = s.width(); - height = s.height(); - return *this; - } - - operator WebCore::IntSize() const - { - return WebCore::IntSize(width, height); - } -#else - WebSize(const gfx::Size& s) - : width(s.width()) - , height(s.height()) - { - } - - WebSize& operator=(const gfx::Size& s) - { - width = s.width(); - height = s.height(); - return *this; - } - - operator gfx::Size() const - { - return gfx::Size(width, height); - } -#endif -}; - -inline bool operator==(const WebSize& a, const WebSize& b) -{ - return a.width == b.width && a.height == b.height; -} - -inline bool operator!=(const WebSize& a, const WebSize& b) -{ - return !(a == b); -} - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSocketStreamError.h b/webkit/api/public/WebSocketStreamError.h deleted file mode 100644 index f52869b..0000000 --- a/webkit/api/public/WebSocketStreamError.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSocketStreamError_h -#define WebSocketStreamError_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebSocketStreamError { -public: - // FIXME: Define SocketStream Error codes and accessor methods. -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSocketStreamHandle.h b/webkit/api/public/WebSocketStreamHandle.h deleted file mode 100644 index ededa0e..0000000 --- a/webkit/api/public/WebSocketStreamHandle.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSocketStreamHandle_h -#define WebSocketStreamHandle_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebData; -class WebSocketStreamHandleClient; -class WebURL; - -class WebSocketStreamHandle { -public: - virtual ~WebSocketStreamHandle() { } - - // Connect new socket stream asynchronously. - virtual void connect(const WebURL&, WebSocketStreamHandleClient*) = 0; - - // Send web socket frame data on the socket stream. - virtual bool send(const WebData&) = 0; - - // Close the socket stream. - virtual void close() = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebSocketStreamHandleClient.h b/webkit/api/public/WebSocketStreamHandleClient.h deleted file mode 100644 index 82f328c..0000000 --- a/webkit/api/public/WebSocketStreamHandleClient.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSocketStreamHandleClient_h -#define WebSocketStreamHandleClient_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebData; -class WebSocketStreamError; -class WebSocketStreamHandle; -class WebURL; - -class WebSocketStreamHandleClient { -public: - - // Called when Socket Stream is opened. - virtual void didOpenStream(WebSocketStreamHandle*, int /* maxPendingSendAllowed */) = 0; - - // Called when |amountSent| bytes are sent. - virtual void didSendData(WebSocketStreamHandle*, int /* amountSent */) = 0; - - // Called when data are received. - virtual void didReceiveData(WebSocketStreamHandle*, const WebData&) = 0; - - // Called when Socket Stream is closed. - virtual void didClose(WebSocketStreamHandle*) = 0; - - // Called when Socket Stream has an error. - virtual void didFail(WebSocketStreamHandle*, const WebSocketStreamError&) = 0; - - // FIXME: auth challenge for proxy -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebStorageArea.h b/webkit/api/public/WebStorageArea.h deleted file mode 100644 index 71dc7a5..0000000 --- a/webkit/api/public/WebStorageArea.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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. - */ - -#ifndef WebStorageArea_h -#define WebStorageArea_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebString; -class WebURL; - -// In WebCore, there's one distinct StorageArea per origin per StorageNamespace. This -// class wraps a StorageArea. All the methods have obvious connections to the spec: -// http://dev.w3.org/html5/webstorage/ -class WebStorageArea { -public: - virtual ~WebStorageArea() { } - - // The number of key/value pairs in the storage area. - virtual unsigned length() = 0; - - // Get a value for a specific key. Valid key indices are 0 through length() - 1. - // Indexes may change on any set/removeItem call. Will return null if the index - // provided is out of range. - virtual WebString key(unsigned index) = 0; - - // Get the value that corresponds to a specific key. This returns null if there is - // no entry for that key. - virtual WebString getItem(const WebString& key) = 0; - - // Set the value that corresponds to a specific key. QuotaException is set if we've - // the StorageArea would have exceeded its quota. The value is NOT set when there's - // an exception. url is the url that should be used if a storage event fires. - virtual void setItem(const WebString& key, const WebString& value, const WebURL& url, bool& quotaException) = 0; - - // Remove the value associated with a particular key. url is the url that should be used - // if a storage event fires. - virtual void removeItem(const WebString& key, const WebURL& url) = 0; - - // Clear all key/value pairs. url is the url that should be used if a storage event fires. - virtual void clear(const WebURL& url) = 0; -}; - -} // namespace WebKit - -#endif // WebStorageArea_h diff --git a/webkit/api/public/WebStorageEventDispatcher.h b/webkit/api/public/WebStorageEventDispatcher.h deleted file mode 100644 index 57750e8..0000000 --- a/webkit/api/public/WebStorageEventDispatcher.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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. - */ - -#ifndef WebStorageEventDispatcher_h -#define WebStorageEventDispatcher_h - -#include "WebString.h" - -namespace WebKit { - -class WebURL; - -// This is used to dispatch storage events to all pages. -// FIXME: Make this (or something) work for SessionStorage! -class WebStorageEventDispatcher { -public: - static WebStorageEventDispatcher* create(); - - virtual ~WebStorageEventDispatcher() { } - - // Dispatch the actual event. Doesn't yet work for SessionStorage. - virtual void dispatchStorageEvent(const WebString& key, const WebString& oldValue, - const WebString& newValue, const WebString& origin, - const WebURL& url, bool isLocalStorage) = 0; -}; - -} // namespace WebKit - -#endif // WebStorageEventDispatcher_h diff --git a/webkit/api/public/WebStorageNamespace.h b/webkit/api/public/WebStorageNamespace.h deleted file mode 100644 index da92a77..0000000 --- a/webkit/api/public/WebStorageNamespace.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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. - */ - -#ifndef WebStorageNamespace_h -#define WebStorageNamespace_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebStorageArea; -class WebString; - -// WebStorageNamespace represents a collection of StorageAreas. Typically, you'll have -// multiple StorageNamespaces to represent the SessionStorage for each tab and a single -// StorageNamespace to represent LocalStorage for the entire browser. -class WebStorageNamespace { -public: - // Create a new WebStorageNamespace. LocalStorageNamespaces require a path to specify - // where the SQLite databases that make LocalStorage data persistent are located. - // If path is empty, data will not persist. You should call delete on the returned - // object when you're finished. - WEBKIT_API static WebStorageNamespace* createLocalStorageNamespace(const WebString& backingDirectoryPath, unsigned quota); - WEBKIT_API static WebStorageNamespace* createSessionStorageNamespace(); - - static const unsigned noQuota = UINT_MAX; - - virtual ~WebStorageNamespace() { } - - // Create a new WebStorageArea object. Two subsequent calls with the same origin - // will return two different WebStorageArea objects that share the same backing store. - // You should call delete on the returned object when you're finished. - virtual WebStorageArea* createStorageArea(const WebString& origin) = 0; - - // Copy a StorageNamespace. This only makes sense in the case of SessionStorage. - virtual WebStorageNamespace* copy() = 0; - - // Shutdown the StorageNamespace. Write all StorageArea's to disk and disallow new - // write activity. - virtual void close() = 0; -}; - -} // namespace WebKit - -#endif // WebStorageNamespace_h diff --git a/webkit/api/public/WebString.h b/webkit/api/public/WebString.h deleted file mode 100644 index d9b66b2..0000000 --- a/webkit/api/public/WebString.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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. - */ - -#ifndef WebString_h -#define WebString_h - -#include "WebCommon.h" - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { -class String; -class AtomicString; -} -#else -#include <base/nullable_string16.h> -#include <base/string16.h> -#endif - -namespace WebKit { - -class WebCString; -class WebStringPrivate; - -// A UTF-16 string container. It is inexpensive to copy a WebString -// object. -// -// WARNING: It is not safe to pass a WebString across threads!!! -// -class WebString { -public: - ~WebString() { reset(); } - - WebString() : m_private(0) { } - - WebString(const WebUChar* data, size_t len) : m_private(0) - { - assign(data, len); - } - - WebString(const WebString& s) : m_private(0) { assign(s); } - - WebString& operator=(const WebString& s) - { - assign(s); - return *this; - } - - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebString&); - WEBKIT_API void assign(const WebUChar* data, size_t len); - - WEBKIT_API size_t length() const; - WEBKIT_API const WebUChar* data() const; - - bool isEmpty() const { return !length(); } - bool isNull() const { return !m_private; } - - WEBKIT_API WebCString utf8() const; - - WEBKIT_API static WebString fromUTF8(const char* data, size_t length); - WEBKIT_API static WebString fromUTF8(const char* data); - -#if WEBKIT_IMPLEMENTATION - WebString(const WebCore::String&); - WebString& operator=(const WebCore::String&); - operator WebCore::String() const; - - WebString(const WebCore::AtomicString&); - WebString& operator=(const WebCore::AtomicString&); - operator WebCore::AtomicString() const; -#else - WebString(const string16& s) : m_private(0) - { - assign(s.data(), s.length()); - } - - WebString& operator=(const string16& s) - { - assign(s.data(), s.length()); - return *this; - } - - operator string16() const - { - size_t len = length(); - return len ? string16(data(), len) : string16(); - } - - WebString(const NullableString16& s) : m_private(0) - { - if (s.is_null()) - assign(0); - else - assign(s.string().data(), s.string().length()); - } - - WebString& operator=(const NullableString16& s) - { - if (s.is_null()) - assign(0); - else - assign(s.string().data(), s.string().length()); - return *this; - } - - operator NullableString16() const - { - if (!m_private) - return NullableString16(string16(), true); - size_t len = length(); - return NullableString16(len ? string16(data(), len) : string16(), false); - } - - template <class UTF8String> - static WebString fromUTF8(const UTF8String& s) - { - return fromUTF8(s.data(), s.length()); - } -#endif - -private: - void assign(WebStringPrivate*); - WebStringPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebTextAffinity.h b/webkit/api/public/WebTextAffinity.h deleted file mode 100644 index 1224f61..0000000 --- a/webkit/api/public/WebTextAffinity.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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. - */ - -#ifndef WebTextAffinity_h -#define WebTextAffinity_h - -namespace WebKit { - -// These constants specify the preferred direction of selection. -enum WebTextAffinity { - WebTextAffinityUpstream, // The selection is moving toward the top of the document. - WebTextAffinityDownstream, // The selection is moving toward the bottom of the document. -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebTextDirection.h b/webkit/api/public/WebTextDirection.h deleted file mode 100644 index 3d51296..0000000 --- a/webkit/api/public/WebTextDirection.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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. - */ - -#ifndef WebTextDirection_h -#define WebTextDirection_h - -namespace WebKit { - -// Represents text directions (or writing directions) of a DOM node. -enum WebTextDirection { - WebTextDirectionDefault, // Natural writing direction ("inherit") - WebTextDirectionLeftToRight, - WebTextDirectionRightToLeft, -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebURL.h b/webkit/api/public/WebURL.h deleted file mode 100644 index 78a16a8..0000000 --- a/webkit/api/public/WebURL.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURL_h -#define WebURL_h - -#include "WebCString.h" -#include <googleurl/src/url_parse.h> - -#if WEBKIT_IMPLEMENTATION -namespace WebCore { class KURL; } -#else -#include <googleurl/src/gurl.h> -#endif - -namespace WebKit { - -class WebURL { -public: - ~WebURL() - { - } - - WebURL() : m_isValid(false) - { - } - - WebURL(const WebCString& spec, const url_parse::Parsed& parsed, bool isValid) - : m_spec(spec) - , m_parsed(parsed) - , m_isValid(isValid) - { - } - - WebURL(const WebURL& s) - : m_spec(s.m_spec) - , m_parsed(s.m_parsed) - , m_isValid(s.m_isValid) - { - } - - WebURL& operator=(const WebURL& s) - { - m_spec = s.m_spec; - m_parsed = s.m_parsed; - m_isValid = s.m_isValid; - return *this; - } - - void assign(const WebCString& spec, const url_parse::Parsed& parsed, bool isValid) - { - m_spec = spec; - m_parsed = parsed; - m_isValid = isValid; - } - - const WebCString& spec() const - { - return m_spec; - } - - const url_parse::Parsed& parsed() const - { - return m_parsed; - } - - bool isValid() const - { - return m_isValid; - } - - bool isEmpty() const - { - return m_spec.isEmpty(); - } - - bool isNull() const - { - return m_spec.isEmpty(); - } - -#if WEBKIT_IMPLEMENTATION - WebURL(const WebCore::KURL&); - WebURL& operator=(const WebCore::KURL&); - operator WebCore::KURL() const; -#else - WebURL(const GURL& g) - : m_spec(g.possibly_invalid_spec()) - , m_parsed(g.parsed_for_possibly_invalid_spec()) - , m_isValid(g.is_valid()) - { - } - - WebURL& operator=(const GURL& g) - { - m_spec = g.possibly_invalid_spec(); - m_parsed = g.parsed_for_possibly_invalid_spec(); - m_isValid = g.is_valid(); - return *this; - } - - operator GURL() const - { - return isNull() ? GURL() : GURL(m_spec.data(), m_spec.length(), m_parsed, m_isValid); - } -#endif - -private: - WebCString m_spec; // UTF-8 encoded - url_parse::Parsed m_parsed; - bool m_isValid; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebURLError.h b/webkit/api/public/WebURLError.h deleted file mode 100644 index de88e3e..0000000 --- a/webkit/api/public/WebURLError.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURLError_h -#define WebURLError_h - -#include "WebString.h" -#include "WebURL.h" - -#if defined(WEBKIT_IMPLEMENTATION) -namespace WebCore { class ResourceError; } -#endif - -namespace WebKit { - -struct WebURLError { - // A namespace for "reason" to support various layers generating - // resource errors. WebKit does not care about the value of this - // string as it will just be passed via callbacks to the consumer. - WebString domain; - - // A numeric error code detailing the reason for this error. A value - // of 0 means no error. WebKit does not interpret the meaning of other - // values and normally just forwards this error information back to the - // embedder (see for example WebFrameClient). - int reason; - - // The url that failed to load. - WebURL unreachableURL; - - WebURLError() : reason(0) { } - -#if defined(WEBKIT_IMPLEMENTATION) - WebURLError(const WebCore::ResourceError&); - WebURLError& operator=(const WebCore::ResourceError&); - operator WebCore::ResourceError() const; -#endif -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebURLLoader.h b/webkit/api/public/WebURLLoader.h deleted file mode 100644 index 54d105e..0000000 --- a/webkit/api/public/WebURLLoader.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURLLoader_h -#define WebURLLoader_h - -#include "WebCommon.h" - -namespace WebKit { - -class WebData; -class WebURLLoaderClient; -class WebURLRequest; -class WebURLResponse; -struct WebURLError; - -class WebURLLoader { -public: - // The WebURLLoader may be deleted in a call to its client. - virtual ~WebURLLoader() {} - - // Load the request synchronously, returning results directly to the - // caller upon completion. There is no mechanism to interrupt a - // synchronous load!! - virtual void loadSynchronously(const WebURLRequest&, - WebURLResponse&, WebURLError&, WebData& data) = 0; - - // Load the request asynchronously, sending notifications to the given - // client. The client will receive no further notifications if the - // loader is disposed before it completes its work. - virtual void loadAsynchronously(const WebURLRequest&, - WebURLLoaderClient*) = 0; - - // Cancels an asynchronous load. This will appear as a load error to - // the client. - virtual void cancel() = 0; - - // Suspends/resumes an asynchronous load. - virtual void setDefersLoading(bool) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebURLLoaderClient.h b/webkit/api/public/WebURLLoaderClient.h deleted file mode 100644 index 03b2c54..0000000 --- a/webkit/api/public/WebURLLoaderClient.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURLLoaderClient_h -#define WebURLLoaderClient_h - -namespace WebKit { - -class WebURLLoader; -class WebURLRequest; -class WebURLResponse; -struct WebURLError; - -class WebURLLoaderClient { -public: - // Called when following a redirect. |newRequest| contains the request - // generated by the redirect. The client may modify |newRequest|. - virtual void willSendRequest( - WebURLLoader*, WebURLRequest& newRequest, const WebURLResponse& redirectResponse) = 0; - - // Called to report upload progress. The bytes reported correspond to - // the HTTP message body. - virtual void didSendData( - WebURLLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) = 0; - - // Called when response headers are received. - virtual void didReceiveResponse(WebURLLoader*, const WebURLResponse&) = 0; - - // Called when a chunk of response data is received. - virtual void didReceiveData(WebURLLoader*, const char* data, int dataLength) = 0; - - // Called when the load completes successfully. - virtual void didFinishLoading(WebURLLoader*) = 0; - - // Called when the load completes with an error. - virtual void didFail(WebURLLoader*, const WebURLError&) = 0; - -protected: - ~WebURLLoaderClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebURLRequest.h b/webkit/api/public/WebURLRequest.h deleted file mode 100644 index de3d329..0000000 --- a/webkit/api/public/WebURLRequest.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURLRequest_h -#define WebURLRequest_h - -#include "WebCommon.h" -#include "WebHTTPBody.h" - -#if defined(WEBKIT_IMPLEMENTATION) -namespace WebCore { class ResourceRequest; } -#endif - -namespace WebKit { - -class WebCString; -class WebHTTPBody; -class WebHTTPHeaderVisitor; -class WebString; -class WebURL; -class WebURLRequestPrivate; - -class WebURLRequest { -public: - enum CachePolicy { - UseProtocolCachePolicy, // normal load - ReloadIgnoringCacheData, // reload - ReturnCacheDataElseLoad, // back/forward or encoding change - allow stale data - ReturnCacheDataDontLoad, // results of a post - allow stale data and only use cache - }; - - enum TargetType { - TargetIsMainFrame, - TargetIsSubFrame, - TargetIsSubResource, - TargetIsObject, - TargetIsMedia - }; - - ~WebURLRequest() { reset(); } - - WebURLRequest() : m_private(0) { } - WebURLRequest(const WebURLRequest& r) : m_private(0) { assign(r); } - WebURLRequest& operator=(const WebURLRequest& r) - { - assign(r); - return *this; - } - - explicit WebURLRequest(const WebURL& url) : m_private(0) - { - initialize(); - setURL(url); - } - - WEBKIT_API void initialize(); - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebURLRequest&); - - WEBKIT_API bool isNull() const; - - WEBKIT_API WebURL url() const; - WEBKIT_API void setURL(const WebURL&); - - // Used to implement third-party cookie blocking. - WEBKIT_API WebURL firstPartyForCookies() const; - WEBKIT_API void setFirstPartyForCookies(const WebURL&); - - WEBKIT_API bool allowCookies() const; - WEBKIT_API void setAllowCookies(bool allowCookies); - - // Controls whether user name, password, and cookies may be sent with the - // request. (If false, this overrides allowCookies.) - WEBKIT_API bool allowStoredCredentials() const; - WEBKIT_API void setAllowStoredCredentials(bool allowStoredCredentials); - - WEBKIT_API CachePolicy cachePolicy() const; - WEBKIT_API void setCachePolicy(CachePolicy); - - WEBKIT_API WebString httpMethod() const; - WEBKIT_API void setHTTPMethod(const WebString&); - - WEBKIT_API WebString httpHeaderField(const WebString& name) const; - WEBKIT_API void setHTTPHeaderField(const WebString& name, const WebString& value); - WEBKIT_API void addHTTPHeaderField(const WebString& name, const WebString& value); - WEBKIT_API void clearHTTPHeaderField(const WebString& name); - WEBKIT_API void visitHTTPHeaderFields(WebHTTPHeaderVisitor*) const; - - WEBKIT_API WebHTTPBody httpBody() const; - WEBKIT_API void setHTTPBody(const WebHTTPBody&); - - // Controls whether upload progress events are generated when a request - // has a body. - WEBKIT_API bool reportUploadProgress() const; - WEBKIT_API void setReportUploadProgress(bool); - - WEBKIT_API TargetType targetType() const; - WEBKIT_API void setTargetType(TargetType); - - // A consumer controlled value intended to be used to identify the - // requestor. - WEBKIT_API int requestorID() const; - WEBKIT_API void setRequestorID(int); - - // A consumer controlled value intended to be used to identify the - // process of the requestor. - WEBKIT_API int requestorProcessID() const; - WEBKIT_API void setRequestorProcessID(int); - - // Allows the request to be matched up with its app cache host. - WEBKIT_API int appCacheHostID() const; - WEBKIT_API void setAppCacheHostID(int id); - -#if defined(WEBKIT_IMPLEMENTATION) - WebCore::ResourceRequest& toMutableResourceRequest(); - const WebCore::ResourceRequest& toResourceRequest() const; -#endif - -protected: - void assign(WebURLRequestPrivate*); - -private: - WebURLRequestPrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebURLResponse.h b/webkit/api/public/WebURLResponse.h deleted file mode 100644 index cdac83c..0000000 --- a/webkit/api/public/WebURLResponse.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURLResponse_h -#define WebURLResponse_h - -#include "WebCommon.h" - -#if defined(WEBKIT_IMPLEMENTATION) -namespace WebCore { class ResourceResponse; } -#endif - -namespace WebKit { - -class WebCString; -class WebHTTPHeaderVisitor; -class WebString; -class WebURL; -class WebURLResponsePrivate; - -class WebURLResponse { -public: - ~WebURLResponse() { reset(); } - - WebURLResponse() : m_private(0) { } - WebURLResponse(const WebURLResponse& r) : m_private(0) { assign(r); } - WebURLResponse& operator=(const WebURLResponse& r) - { - assign(r); - return *this; - } - - explicit WebURLResponse(const WebURL& url) : m_private(0) - { - initialize(); - setURL(url); - } - - WEBKIT_API void initialize(); - WEBKIT_API void reset(); - WEBKIT_API void assign(const WebURLResponse&); - - WEBKIT_API bool isNull() const; - - WEBKIT_API WebURL url() const; - WEBKIT_API void setURL(const WebURL&); - - WEBKIT_API WebString mimeType() const; - WEBKIT_API void setMIMEType(const WebString&); - - WEBKIT_API long long expectedContentLength() const; - WEBKIT_API void setExpectedContentLength(long long); - - WEBKIT_API WebString textEncodingName() const; - WEBKIT_API void setTextEncodingName(const WebString&); - - WEBKIT_API WebString suggestedFileName() const; - WEBKIT_API void setSuggestedFileName(const WebString&); - - WEBKIT_API int httpStatusCode() const; - WEBKIT_API void setHTTPStatusCode(int); - - WEBKIT_API WebString httpStatusText() const; - WEBKIT_API void setHTTPStatusText(const WebString&); - - WEBKIT_API WebString httpHeaderField(const WebString& name) const; - WEBKIT_API void setHTTPHeaderField(const WebString& name, const WebString& value); - WEBKIT_API void addHTTPHeaderField(const WebString& name, const WebString& value); - WEBKIT_API void clearHTTPHeaderField(const WebString& name); - WEBKIT_API void visitHTTPHeaderFields(WebHTTPHeaderVisitor*) const; - - WEBKIT_API double lastModifiedDate() const; - WEBKIT_API void setLastModifiedDate(double); - - WEBKIT_API bool isContentFiltered() const; - WEBKIT_API void setIsContentFiltered(bool); - - WEBKIT_API long long appCacheID() const; - WEBKIT_API void setAppCacheID(long long); - - WEBKIT_API WebURL appCacheManifestURL() const; - WEBKIT_API void setAppCacheManifestURL(const WebURL&); - - // A consumer controlled value intended to be used to record opaque - // security info related to this request. - WEBKIT_API WebCString securityInfo() const; - WEBKIT_API void setSecurityInfo(const WebCString&); - -#if defined(WEBKIT_IMPLEMENTATION) - WebCore::ResourceResponse& toMutableResourceResponse(); - const WebCore::ResourceResponse& toResourceResponse() const; -#endif - -protected: - void assign(WebURLResponsePrivate*); - -private: - WebURLResponsePrivate* m_private; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebVector.h b/webkit/api/public/WebVector.h deleted file mode 100644 index d1f99b4..0000000 --- a/webkit/api/public/WebVector.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * 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. - */ - -#ifndef WebVector_h -#define WebVector_h - -#include "WebCommon.h" - -#include <algorithm> - -namespace WebKit { - -// A simple vector class. -// -// Sample usage: -// -// void Foo(WebVector<int>& result) -// { -// WebVector<int> data(10); -// for (size_t i = 0; i < data.size(); ++i) -// data[i] = ... -// result.swap(data); -// } -// -// It is also possible to assign from other types of random access -// containers: -// -// void Foo(const std::vector<std::string>& input) -// { -// WebVector<WebCString> cstrings = input; -// ... -// } -// -template <typename T> -class WebVector { -public: - typedef T ValueType; - - ~WebVector() - { - destroy(); - } - - explicit WebVector(size_t size = 0) - { - initialize(size); - } - - WebVector(const WebVector<T>& other) - { - initializeFrom(other.m_ptr, other.m_size); - } - - template <typename C> - WebVector(const C& other) - { - initializeFrom(other.size() ? &other[0] : 0, other.size()); - } - - template <typename C> - WebVector<T>& operator=(const C& other) - { - if (this != reinterpret_cast<const WebVector<T>*>(&other)) - assign(other); - return *this; - } - - template <typename C> - void assign(const C& other) - { - assign(other.size() ? &other[0] : 0, other.size()); - } - - template <typename U> - void assign(const U* values, size_t size) - { - destroy(); - initializeFrom(values, size); - } - - size_t size() const { return m_size; } - bool isEmpty() const { return !m_size; } - - T& operator[](size_t i) { return m_ptr[i]; } - const T& operator[](size_t i) const { return m_ptr[i]; } - - T* data() { return m_ptr; } - const T* data() const { return m_ptr; } - - void swap(WebVector<T>& other) - { - std::swap(m_ptr, other.m_ptr); - std::swap(m_size, other.m_size); - } - -private: - void initialize(size_t size) - { - m_size = size; - if (!m_size) - m_ptr = 0; - else { - m_ptr = static_cast<T*>(::operator new(sizeof(T) * m_size)); - for (size_t i = 0; i < m_size; ++i) - new (&m_ptr[i]) T(); - } - } - - template <typename U> - void initializeFrom(const U* values, size_t size) - { - m_size = size; - if (!m_size) - m_ptr = 0; - else { - m_ptr = static_cast<T*>(::operator new(sizeof(T) * m_size)); - for (size_t i = 0; i < m_size; ++i) - new (&m_ptr[i]) T(values[i]); - } - } - - void destroy() - { - for (size_t i = 0; i < m_size; ++i) - m_ptr[i].~T(); - ::operator delete(m_ptr); - } - - T* m_ptr; - size_t m_size; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebView.h b/webkit/api/public/WebView.h deleted file mode 100644 index 8261afc..0000000 --- a/webkit/api/public/WebView.h +++ /dev/null @@ -1,246 +0,0 @@ -/* - * 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. - */ - -#ifndef WebView_h -#define WebView_h - -#include "WebDragOperation.h" -#include "WebWidget.h" - -namespace WebKit { - -class WebAccessibilityObject; -class WebDevToolsAgent; -class WebDragData; -class WebFrame; -class WebFrameClient; -class WebNode; -class WebSettings; -class WebString; -class WebViewClient; -struct WebMediaPlayerAction; -struct WebPoint; -template <typename T> class WebVector; - -class WebView : public WebWidget { -public: - // Initialization ------------------------------------------------------ - - // Creates a WebView that is NOT yet initialized. You will need to - // call initializeMainFrame to finish the initialization. It is valid - // to pass a null WebViewClient pointer. - WEBKIT_API static WebView* create(WebViewClient*); - - // After creating a WebView, you should immediately call this method. - // You can optionally modify the settings before calling this method. - // The WebFrameClient will receive events for the main frame and any - // child frames. It is valid to pass a null WebFrameClient pointer. - virtual void initializeMainFrame(WebFrameClient*) = 0; - - - // Options ------------------------------------------------------------- - - // The returned pointer is valid for the lifetime of the WebView. - virtual WebSettings* settings() = 0; - - // Corresponds to the encoding of the main frame. Setting the page - // encoding may cause the main frame to reload. - virtual WebString pageEncoding() const = 0; - virtual void setPageEncoding(const WebString&) = 0; - - // Makes the WebView transparent. This is useful if you want to have - // some custom background rendered behind it. - virtual bool isTransparent() const = 0; - virtual void setIsTransparent(bool) = 0; - - // Controls whether pressing Tab key advances focus to links. - virtual bool tabsToLinks() const = 0; - virtual void setTabsToLinks(bool) = 0; - - // Method that controls whether pressing Tab key cycles through page - // elements or inserts a '\t' char in the focused text area. - virtual bool tabKeyCyclesThroughElements() const = 0; - virtual void setTabKeyCyclesThroughElements(bool) = 0; - - // Controls the WebView's active state, which may affect the rendering - // of elements on the page (i.e., tinting of input elements). - virtual bool isActive() const = 0; - virtual void setIsActive(bool) = 0; - - - // Closing ------------------------------------------------------------- - - // Runs beforeunload handlers for the current page, returning false if - // any handler suppressed unloading. - virtual bool dispatchBeforeUnloadEvent() = 0; - - // Runs unload handlers for the current page. - virtual void dispatchUnloadEvent() = 0; - - - // Frames -------------------------------------------------------------- - - virtual WebFrame* mainFrame() = 0; - - // Returns the frame identified by the given name. This method - // supports pseudo-names like _self, _top, and _blank. It traverses - // the entire frame tree containing this tree looking for a frame that - // matches the given name. If the optional relativeToFrame parameter - // is specified, then the search begins with the given frame and its - // children. - virtual WebFrame* findFrameByName( - const WebString& name, WebFrame* relativeToFrame = 0) = 0; - - - // Focus --------------------------------------------------------------- - - virtual WebFrame* focusedFrame() = 0; - virtual void setFocusedFrame(WebFrame*) = 0; - - // Focus the first (last if reverse is true) focusable node. - virtual void setInitialFocus(bool reverse) = 0; - - // Clears the focused node (and selection if a text field is focused) - // to ensure that a text field on the page is not eating keystrokes we - // send it. - virtual void clearFocusedNode() = 0; - - - // Zoom ---------------------------------------------------------------- - - // Change the text zoom level. It will make the zoom level 20% larger - // or smaller. If textOnly is set, the text size will be changed. - // When unset, the entire page's zoom factor will be changed. - // - // You can only have either text zoom or full page zoom at one time. - // Changing the mode will change things in weird ways. Generally the - // app should only support text zoom or full page zoom, and not both. - // - // zoomDefault will reset both full page and text zoom. - virtual void zoomIn(bool textOnly) = 0; - virtual void zoomOut(bool textOnly) = 0; - virtual void zoomDefault() = 0; - - - // Media --------------------------------------------------------------- - - // Performs the specified action on the node at the given location. - virtual void performMediaPlayerAction( - const WebMediaPlayerAction&, const WebPoint& location) = 0; - - - // Data exchange ------------------------------------------------------- - - // Copy to the clipboard the image located at a particular point in the - // WebView (if there is such an image) - virtual void copyImageAt(const WebPoint&) = 0; - - // Notifies the WebView that a drag has terminated. - virtual void dragSourceEndedAt( - const WebPoint& clientPoint, const WebPoint& screenPoint, - WebDragOperation operation) = 0; - - // Notfies the WebView that the system drag and drop operation has ended. - virtual void dragSourceSystemDragEnded() = 0; - - // Callback methods when a drag-and-drop operation is trying to drop - // something on the WebView. - virtual WebDragOperation dragTargetDragEnter( - const WebDragData&, int identity, - const WebPoint& clientPoint, const WebPoint& screenPoint, - WebDragOperationsMask operationsAllowed) = 0; - virtual WebDragOperation dragTargetDragOver( - const WebPoint& clientPoint, const WebPoint& screenPoint, - WebDragOperationsMask operationsAllowed) = 0; - virtual void dragTargetDragLeave() = 0; - virtual void dragTargetDrop( - const WebPoint& clientPoint, const WebPoint& screenPoint) = 0; - - virtual int dragIdentity() = 0; - - // Helper method for drag and drop target operations: override the - // default drop effect with either a "copy" (accept true) or "none" - // (accept false) effect. Return true on success. - virtual bool setDropEffect(bool accept) = 0; - - - // Developer tools ----------------------------------------------------- - - // Inspect a particular point in the WebView. (x = -1 || y = -1) is a - // special case, meaning inspect the current page and not a specific - // point. - virtual void inspectElementAt(const WebPoint&) = 0; - - // Settings used by the inspector. - virtual WebString inspectorSettings() const = 0; - virtual void setInspectorSettings(const WebString&) = 0; - - // The embedder may optionally engage a WebDevToolsAgent. This may only - // be set once per WebView. - virtual WebDevToolsAgent* devToolsAgent() = 0; - virtual void setDevToolsAgent(WebDevToolsAgent*) = 0; - - - // Accessibility ------------------------------------------------------- - - // Returns the accessibility object for this view. - virtual WebAccessibilityObject accessibilityObject() = 0; - - - // Autofill ------------------------------------------------------------ - - // Notifies the WebView that autofill suggestions are available for a node. - virtual void applyAutofillSuggestions( - const WebNode&, - const WebVector<WebString>& suggestions, - int defaultSuggestionIndex) = 0; - - // Hides the autofill popup if any are showing. - virtual void hideAutofillPopup() = 0; - - - // Visited link state -------------------------------------------------- - - // Tells all WebView instances to update the visited link state for the - // specified hash. - WEBKIT_API static void updateVisitedLinkState(unsigned long long hash); - - // Tells all WebView instances to update the visited state for all - // their links. - WEBKIT_API static void resetVisitedLinkState(); - - -protected: - ~WebView() {} -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebViewClient.h b/webkit/api/public/WebViewClient.h deleted file mode 100644 index 2e2f953..0000000 --- a/webkit/api/public/WebViewClient.h +++ /dev/null @@ -1,278 +0,0 @@ -/* - * 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. - */ - -#ifndef WebViewClient_h -#define WebViewClient_h - -#include "WebDragOperation.h" -#include "WebEditingAction.h" -#include "WebFileChooserCompletion.h" -#include "WebString.h" -#include "WebTextAffinity.h" -#include "WebTextDirection.h" -#include "WebWidgetClient.h" - -namespace WebKit { - -class WebAccessibilityObject; -class WebDragData; -class WebFileChooserCompletion; -class WebFrame; -class WebNode; -class WebNotificationPresenter; -class WebRange; -class WebURL; -class WebView; -class WebWidget; -struct WebConsoleMessage; -struct WebContextMenuData; -struct WebPoint; -struct WebPopupMenuInfo; - -// Since a WebView is a WebWidget, a WebViewClient is a WebWidgetClient. -// Virtual inheritance allows an implementation of WebWidgetClient to be -// easily reused as part of an implementation of WebViewClient. -class WebViewClient : virtual public WebWidgetClient { -public: - // Factory methods ----------------------------------------------------- - - // Create a new related WebView. - virtual WebView* createView(WebFrame* creator) { return 0; } - - // Create a new WebPopupMenu. In the second form, the client is - // responsible for rendering the contents of the popup menu. - virtual WebWidget* createPopupMenu(bool activatable) { return 0; } - virtual WebWidget* createPopupMenu(const WebPopupMenuInfo&) { return 0; } - - - // Misc ---------------------------------------------------------------- - - // A new message was added to the console. - virtual void didAddMessageToConsole( - const WebConsoleMessage&, const WebString& sourceName, unsigned sourceLine) { } - - // Called when script in the page calls window.print(). If frame is - // non-null, then it selects a particular frame, including its - // children, to print. Otherwise, the main frame and its children - // should be printed. - virtual void printPage(WebFrame*) { } - - // Called to retrieve the provider of desktop notifications. - virtual WebNotificationPresenter* notificationPresenter() { return 0; } - - - // Navigational -------------------------------------------------------- - - // These notifications bracket any loading that occurs in the WebView. - virtual void didStartLoading() { } - virtual void didStopLoading() { } - - - // Editing ------------------------------------------------------------- - - // These methods allow the client to intercept and overrule editing - // operations. - virtual bool shouldBeginEditing(const WebRange&) { return true; } - virtual bool shouldEndEditing(const WebRange&) { return true; } - virtual bool shouldInsertNode( - const WebNode&, const WebRange&, WebEditingAction) { return true; } - virtual bool shouldInsertText( - const WebString&, const WebRange&, WebEditingAction) { return true; } - virtual bool shouldChangeSelectedRange( - const WebRange& from, const WebRange& to, WebTextAffinity, - bool stillSelecting) { return true; } - virtual bool shouldDeleteRange(const WebRange&) { return true; } - virtual bool shouldApplyStyle(const WebString& style, const WebRange&) { return true; } - - virtual bool isSmartInsertDeleteEnabled() { return true; } - virtual bool isSelectTrailingWhitespaceEnabled() { return true; } - virtual void setInputMethodEnabled(bool enabled) { } - - virtual void didBeginEditing() { } - virtual void didChangeSelection(bool isSelectionEmpty) { } - virtual void didChangeContents() { } - virtual void didExecuteCommand(const WebString& commandName) { } - virtual void didEndEditing() { } - - // This method is called in response to WebView's handleInputEvent() - // when the default action for the current keyboard event is not - // suppressed by the page, to give the embedder a chance to handle - // the keyboard event specially. - // - // Returns true if the keyboard event was handled by the embedder, - // indicating that the default action should be suppressed. - virtual bool handleCurrentKeyboardEvent() { return false; } - - - // Spellchecker -------------------------------------------------------- - - // The client should perform spell-checking on the given text. If the - // text contains a misspelled word, then upon return misspelledOffset - // will point to the start of the misspelled word, and misspelledLength - // will indicates its length. Otherwise, if there was not a spelling - // error, then upon return misspelledLength is 0. - virtual void spellCheck( - const WebString& text, int& misspelledOffset, int& misspelledLength) { } - - // Computes an auto-corrected replacement for a misspelled word. If no - // replacement is found, then an empty string is returned. - virtual WebString autoCorrectWord(const WebString& misspelledWord) { return WebString(); } - - // Show or hide the spelling UI. - virtual void showSpellingUI(bool show) { } - - // Returns true if the spelling UI is showing. - virtual bool isShowingSpellingUI() { return false; } - - // Update the spelling UI with the given word. - virtual void updateSpellingUIWithMisspelledWord(const WebString& word) { } - - - // Dialogs ------------------------------------------------------------- - - // This method returns immediately after showing the dialog. When the - // dialog is closed, it should call the WebFileChooserCompletion to - // pass the results of the dialog. Returns false if - // WebFileChooseCompletion will never be called. - virtual bool runFileChooser( - bool multiSelect, const WebString& title, - const WebString& initialValue, WebFileChooserCompletion*) { return false; } - - // Displays a modal alert dialog containing the given message. Returns - // once the user dismisses the dialog. - virtual void runModalAlertDialog( - WebFrame*, const WebString& message) { } - - // Displays a modal confirmation dialog with the given message as - // description and OK/Cancel choices. Returns true if the user selects - // 'OK' or false otherwise. - virtual bool runModalConfirmDialog( - WebFrame*, const WebString& message) { return false; } - - // Displays a modal input dialog with the given message as description - // and OK/Cancel choices. The input field is pre-filled with - // defaultValue. Returns true if the user selects 'OK' or false - // otherwise. Upon returning true, actualValue contains the value of - // the input field. - virtual bool runModalPromptDialog( - WebFrame*, const WebString& message, const WebString& defaultValue, - WebString* actualValue) { return false; } - - // Displays a modal confirmation dialog containing the given message as - // description and OK/Cancel choices, where 'OK' means that it is okay - // to proceed with closing the view. Returns true if the user selects - // 'OK' or false otherwise. - virtual bool runModalBeforeUnloadDialog( - WebFrame*, const WebString& message) { return true; } - - - // UI ------------------------------------------------------------------ - - // Called when script modifies window.status - virtual void setStatusText(const WebString&) { } - - // Called when hovering over an anchor with the given URL. - virtual void setMouseOverURL(const WebURL&) { } - - // Called when keyboard focus switches to an anchor with the given URL. - virtual void setKeyboardFocusURL(const WebURL&) { } - - // Called when a tooltip should be shown at the current cursor position. - virtual void setToolTipText(const WebString&, WebTextDirection hint) { } - - // Shows a context menu with commands relevant to a specific element on - // the given frame. Additional context data is supplied. - virtual void showContextMenu(WebFrame*, const WebContextMenuData&) { } - - // Called when a drag-n-drop operation should begin. - virtual void startDragging( - const WebPoint& from, const WebDragData&, WebDragOperationsMask) { } - - // Called to determine if drag-n-drop operations may initiate a page - // navigation. - virtual bool acceptsLoadDrops() { return true; } - - // Take focus away from the WebView by focusing an adjacent UI element - // in the containing window. - virtual void focusNext() { } - virtual void focusPrevious() { } - - - // Session history ----------------------------------------------------- - - // Tells the embedder to navigate back or forward in session history by - // the given offset (relative to the current position in session - // history). - virtual void navigateBackForwardSoon(int offset) { } - - // Returns the number of history items before/after the current - // history item. - virtual int historyBackListCount() { return 0; } - virtual int historyForwardListCount() { return 0; } - - // Called to notify the embedder when a new history item is added. - virtual void didAddHistoryItem() { } - - - // Accessibility ------------------------------------------------------- - - // Notifies embedder that the focus has changed to the given - // accessibility object. - virtual void focusAccessibilityObject(const WebAccessibilityObject&) { } - - - // Developer tools ----------------------------------------------------- - - // Called to notify the client that the inspector's settings were - // changed and should be saved. See WebView::inspectorSettings. - virtual void didUpdateInspectorSettings() { } - - - // Autofill ------------------------------------------------------------ - - // Queries the browser for suggestions to be shown for the form text - // field named |name|. |value| is the text entered by the user so - // far and the WebNode corresponds to the input field. - virtual void queryAutofillSuggestions(const WebNode&, - const WebString& name, - const WebString& value) { } - - // Instructs the browser to remove the autofill entry specified from - // its DB. - virtual void removeAutofillSuggestions(const WebString& name, - const WebString& value) { } - -protected: - ~WebViewClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebWidget.h b/webkit/api/public/WebWidget.h deleted file mode 100644 index 9dfeefc..0000000 --- a/webkit/api/public/WebWidget.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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. - */ - -#ifndef WebWidget_h -#define WebWidget_h - -#include "WebCanvas.h" -#include "WebCommon.h" -#include "WebCompositionCommand.h" -#include "WebTextDirection.h" - -namespace WebKit { - -class WebInputEvent; -class WebString; -struct WebRect; -struct WebSize; - -class WebWidget { -public: - // This method closes and deletes the WebWidget. - virtual void close() = 0; - - // Returns the current size of the WebWidget. - virtual WebSize size() = 0; - - // Called to resize the WebWidget. - virtual void resize(const WebSize&) = 0; - - // Called to layout the WebWidget. This MUST be called before Paint, - // and it may result in calls to WebWidgetClient::didInvalidateRect. - virtual void layout() = 0; - - // Called to paint the specified region of the WebWidget onto the given - // canvas. You MUST call Layout before calling this method. It is - // okay to call paint multiple times once layout has been called, - // assuming no other changes are made to the WebWidget (e.g., once - // events are processed, it should be assumed that another call to - // layout is warranted before painting again). - virtual void paint(WebCanvas*, const WebRect&) = 0; - - // Called to inform the WebWidget of an input event. Returns true if - // the event has been processed, false otherwise. - virtual bool handleInputEvent(const WebInputEvent&) = 0; - - // Called to inform the WebWidget that mouse capture was lost. - virtual void mouseCaptureLost() = 0; - - // Called to inform the WebWidget that it has gained or lost keyboard focus. - virtual void setFocus(bool) = 0; - - // Called to inform the WebWidget of a composition event. - virtual bool handleCompositionEvent(WebCompositionCommand command, - int cursorPosition, - int targetStart, - int targetEnd, - const WebString& text) = 0; - - // Retrieve the status of this WebWidget required by IME APIs. Upon - // success enabled and caretBounds are set. - virtual bool queryCompositionStatus(bool* enabled, WebRect* caretBounds) = 0; - - // Changes the text direction of the selected input node. - virtual void setTextDirection(WebTextDirection) = 0; - -protected: - ~WebWidget() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebWidgetClient.h b/webkit/api/public/WebWidgetClient.h deleted file mode 100644 index 06d9eba..0000000 --- a/webkit/api/public/WebWidgetClient.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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. - */ - -#ifndef WebWidgetClient_h -#define WebWidgetClient_h - -#include "WebCommon.h" -#include "WebNavigationPolicy.h" -#include "WebRect.h" -#include "WebScreenInfo.h" - -namespace WebKit { - -class WebWidget; -struct WebCursorInfo; - -class WebWidgetClient { -public: - // Called when a region of the WebWidget needs to be re-painted. - virtual void didInvalidateRect(const WebRect&) { } - - // Called when a region of the WebWidget, given by clipRect, should be - // scrolled by the specified dx and dy amounts. - virtual void didScrollRect(int dx, int dy, const WebRect& clipRect) { } - - // Called when the widget acquires or loses focus, respectively. - virtual void didFocus() { } - virtual void didBlur() { } - - // Called when the cursor for the widget changes. - virtual void didChangeCursor(const WebCursorInfo&) { } - - // Called when the widget should be closed. WebWidget::close() should - // be called asynchronously as a result of this notification. - virtual void closeWidgetSoon() { } - - // Called to show the widget according to the given policy. - virtual void show(WebNavigationPolicy) { } - - // Called to block execution of the current thread until the widget is - // closed. - virtual void runModal() { } - - // Called to get/set the position of the widget in screen coordinates. - virtual WebRect windowRect() { return WebRect(); } - virtual void setWindowRect(const WebRect&) { } - - // Called to get the position of the resizer rect in window coordinates. - virtual WebRect windowResizerRect() { return WebRect(); } - - // Called to get the position of the root window containing the widget - // in screen coordinates. - virtual WebRect rootWindowRect() { return WebRect(); } - - // Called to query information about the screen where this widget is - // displayed. - virtual WebScreenInfo screenInfo() { return WebScreenInfo(); } - -protected: - ~WebWidgetClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebWorker.h b/webkit/api/public/WebWorker.h deleted file mode 100644 index 9397bcd..0000000 --- a/webkit/api/public/WebWorker.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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. - */ - -#ifndef WebWorker_h -#define WebWorker_h - -#include "WebMessagePortChannel.h" - -namespace WebKit { - -class WebString; -class WebURL; -class WebWorkerClient; - -// Provides an interface to the script execution context for a worker. -class WebWorker { -public: - // Instantiates a built-in WebWorker. - WEBKIT_API static WebWorker* create(WebWorkerClient*); - - virtual ~WebWorker() { } - virtual void startWorkerContext(const WebURL& scriptURL, - const WebString& userAgent, - const WebString& sourceCode) = 0; - virtual void terminateWorkerContext() = 0; - virtual void postMessageToWorkerContext( - const WebString&, - const WebMessagePortChannelArray&) = 0; - virtual void workerObjectDestroyed() = 0; - virtual void clientDestroyed() = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/WebWorkerClient.h b/webkit/api/public/WebWorkerClient.h deleted file mode 100644 index eb2e63e..0000000 --- a/webkit/api/public/WebWorkerClient.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef WebWorkerClient_h -#define WebWorkerClient_h - -#include "WebCommonWorkerClient.h" -#include "WebMessagePortChannel.h" - -namespace WebKit { - -class WebNotificationPresenter; -class WebString; -class WebWorker; - -// Provides an interface back to the in-page script object for a worker. -// All functions are expected to be called back on the thread that created -// the Worker object, unless noted. -class WebWorkerClient : public WebCommonWorkerClient { -public: - virtual void postMessageToWorkerObject( - const WebString&, - const WebMessagePortChannelArray&) = 0; - - virtual void confirmMessageFromWorkerObject(bool hasPendingActivity) = 0; - virtual void reportPendingActivity(bool hasPendingActivity) = 0; - -protected: - ~WebWorkerClient() { } -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/gtk/WebFontInfo.h b/webkit/api/public/gtk/WebFontInfo.h deleted file mode 100644 index ad37680..0000000 --- a/webkit/api/public/gtk/WebFontInfo.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFontInfo_h -#define WebFontInfo_h - -#include "../WebCString.h" - -#include <string.h> -#include <unistd.h> - -namespace WebKit { - -class WebFontInfo { -public: - // Return a font family which provides glyphs for the Unicode code points - // specified by |utf16| - // characters: a native-endian UTF16 string - // numCharacters: the number of 16-bit words in |utf16| - // - // Returns: the font family or an empty string if the request could not be - // satisfied. - WEBKIT_API static WebCString familyForChars(const WebUChar* characters, size_t numCharacters); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/gtk/WebInputEventFactory.h b/webkit/api/public/gtk/WebInputEventFactory.h deleted file mode 100644 index 463bd28..0000000 --- a/webkit/api/public/gtk/WebInputEventFactory.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - */ - -#ifndef WebInputEventFactory_h -#define WebInputEventFactory_h - -#include "../WebCommon.h" - -typedef struct _GdkEventButton GdkEventButton; -typedef struct _GdkEventMotion GdkEventMotion; -typedef struct _GdkEventCrossing GdkEventCrossing; -typedef struct _GdkEventScroll GdkEventScroll; -typedef struct _GdkEventKey GdkEventKey; - -namespace WebKit { - -class WebKeyboardEvent; -class WebMouseEvent; -class WebMouseWheelEvent; - -class WebInputEventFactory { -public: - WEBKIT_API static WebKeyboardEvent keyboardEvent(const GdkEventKey*); - WEBKIT_API static WebKeyboardEvent keyboardEvent(wchar_t character, int state, double timeStampSeconds); - WEBKIT_API static WebMouseEvent mouseEvent(const GdkEventButton*); - WEBKIT_API static WebMouseEvent mouseEvent(const GdkEventMotion*); - WEBKIT_API static WebMouseEvent mouseEvent(const GdkEventCrossing*); - WEBKIT_API static WebMouseWheelEvent mouseWheelEvent(const GdkEventScroll*); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/gtk/WebScreenInfoFactory.h b/webkit/api/public/gtk/WebScreenInfoFactory.h deleted file mode 100644 index c964741..0000000 --- a/webkit/api/public/gtk/WebScreenInfoFactory.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - */ - -#ifndef WebScreenInfoFactory_h -#define WebScreenInfoFactory_h - -#include "../WebCommon.h" - -typedef struct _GtkWidget GtkWidget; - -namespace WebKit { - -struct WebScreenInfo; - -class WebScreenInfoFactory { -public: - WEBKIT_API static WebScreenInfo screenInfo(GtkWidget*); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/linux/WebFontRendering.h b/webkit/api/public/linux/WebFontRendering.h deleted file mode 100644 index 9b61bdc..0000000 --- a/webkit/api/public/linux/WebFontRendering.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFontRendering_h -#define WebFontRendering_h - -#include "../WebCommon.h" -#include <SkFontHost.h> -#include <SkPaint.h> - -namespace WebKit { - -class WebFontRendering { -public: - // Set global font renderering preferences. - - WEBKIT_API static void setHinting(SkPaint::Hinting); - WEBKIT_API static void setAntiAlias(bool on); - WEBKIT_API static void setSubpixelGlyphs(bool on); - WEBKIT_API static void setLCDOrder(SkFontHost::LCDOrder); - WEBKIT_API static void setLCDOrientation(SkFontHost::LCDOrientation); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/linux/WebSandboxSupport.h b/webkit/api/public/linux/WebSandboxSupport.h deleted file mode 100644 index 1612626..0000000 --- a/webkit/api/public/linux/WebSandboxSupport.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSandboxSupport_h -#define WebSandboxSupport_h - -#include "webkit/api/public/WebCommon.h" -#include "webkit/api/public/WebString.h" - -namespace WebKit { - -// Put methods here that are required due to sandbox restrictions. -class WebSandboxSupport { -public: - // Fonts --------------------------------------------------------------- - - // Get a font family which contains glyphs for the given Unicode - // code-points. - // characters: a UTF-16 encoded string - // numCharacters: the number of 16-bit words in |characters| - // - // Returns a string with the font family on an empty string if the - // request cannot be satisfied. - virtual WebString getFontFamilyForCharacters(const WebUChar* characters, size_t numCharacters) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/mac/WebInputEventFactory.h b/webkit/api/public/mac/WebInputEventFactory.h deleted file mode 100644 index cbf213c..0000000 --- a/webkit/api/public/mac/WebInputEventFactory.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - */ - -#ifndef WebInputEventFactory_h -#define WebInputEventFactory_h - -#include "../WebCommon.h" - -#ifdef __OBJC__ -@class NSEvent; -@class NSView; -#else -class NSEvent; -class NSView; -#endif - -namespace WebKit { - -class WebKeyboardEvent; -class WebMouseEvent; -class WebMouseWheelEvent; - -class WebInputEventFactory { -public: - WEBKIT_API static WebKeyboardEvent keyboardEvent(NSEvent*); - WEBKIT_API static WebKeyboardEvent keyboardEvent(wchar_t character, int modifiers, double timeStampSeconds); - WEBKIT_API static WebMouseEvent mouseEvent(NSEvent*, NSView*); - WEBKIT_API static WebMouseWheelEvent mouseWheelEvent(NSEvent*, NSView*); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/mac/WebScreenInfoFactory.h b/webkit/api/public/mac/WebScreenInfoFactory.h deleted file mode 100644 index 485e77f..0000000 --- a/webkit/api/public/mac/WebScreenInfoFactory.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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. - */ - -#ifndef WebScreenInfoFactory_h -#define WebScreenInfoFactory_h - -#include "../WebCommon.h" - -#ifdef __OBJC__ -@class NSView; -#else -class NSView; -#endif - -namespace WebKit { - -struct WebScreenInfo; - -class WebScreenInfoFactory { -public: - WEBKIT_API static WebScreenInfo screenInfo(NSView*); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/win/WebInputEventFactory.h b/webkit/api/public/win/WebInputEventFactory.h deleted file mode 100644 index ae02464..0000000 --- a/webkit/api/public/win/WebInputEventFactory.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef WebInputEventFactory_h -#define WebInputEventFactory_h - -#include "../WebCommon.h" - -#include <windows.h> - -namespace WebKit { - -class WebKeyboardEvent; -class WebMouseEvent; -class WebMouseWheelEvent; - -class WebInputEventFactory { -public: - WEBKIT_API static WebKeyboardEvent keyboardEvent(HWND, UINT, WPARAM, LPARAM); - WEBKIT_API static WebMouseEvent mouseEvent(HWND, UINT, WPARAM, LPARAM); - WEBKIT_API static WebMouseWheelEvent mouseWheelEvent(HWND, UINT, WPARAM, LPARAM); - - // Windows only provides information on whether a click was a single or - // double click, while we need to know the click count past two. The - // WebInputEventFactory keeps internal state to allow it to synthesize - // that information. In some cases, like fast-running tests, that - // information is known to be stale and needs to be reset; that is the - // function of resetLastClickState(). - WEBKIT_API static void resetLastClickState(); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/win/WebSandboxSupport.h b/webkit/api/public/win/WebSandboxSupport.h deleted file mode 100644 index 88d5362..0000000 --- a/webkit/api/public/win/WebSandboxSupport.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSandboxSupport_h -#define WebSandboxSupport_h - -typedef struct HFONT__* HFONT; - -namespace WebKit { - -// Put methods here that are required due to sandbox restrictions. -class WebSandboxSupport { -public: - // Sometimes a Win32 API call will fail because a font is not loaded, - // and due to sandbox restrictions, the current process may be unable - // to access the filesystem to load the font. So, this call serves as - // a failover to ask the embedder to try some other way to load the - // font (usually by delegating to an empowered process to have it load - // the font). Returns true if the font was successfully loaded. - virtual bool ensureFontLoaded(HFONT) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/win/WebScreenInfoFactory.h b/webkit/api/public/win/WebScreenInfoFactory.h deleted file mode 100644 index a7040ea..0000000 --- a/webkit/api/public/win/WebScreenInfoFactory.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - */ - -#ifndef WebScreenInfoFactory_h -#define WebScreenInfoFactory_h - -#include "../WebCommon.h" - -typedef struct HWND__* HWND; - -namespace WebKit { - -struct WebScreenInfo; - -class WebScreenInfoFactory { -public: - WEBKIT_API static WebScreenInfo screenInfo(HWND); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/win/WebThemeEngine.h b/webkit/api/public/win/WebThemeEngine.h deleted file mode 100644 index b563608..0000000 --- a/webkit/api/public/win/WebThemeEngine.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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. - */ - -#ifndef WebThemeEngine_h -#define WebThemeEngine_h - -#include "../WebCanvas.h" -#include "../WebColor.h" - -namespace WebKit { - -struct WebRect; - -// The part and state parameters correspond to values defined by the -// Windows Theme API (see -// http://msdn.microsoft.com/en-us/library/bb773187(VS.85).aspx ). -// The classicState parameter corresponds to the uState -// parameter of the Windows DrawFrameControl() function. -// See the definitions in <vsstyle.h> and <winuser.h>. -class WebThemeEngine { -public: - virtual void paintButton( - WebCanvas*, int part, int state, int classicState, - const WebRect&) = 0; - - virtual void paintMenuList( - WebCanvas*, int part, int state, int classicState, - const WebRect&) = 0; - - virtual void paintScrollbarArrow( - WebCanvas*, int state, int classicState, - const WebRect&) = 0; - - virtual void paintScrollbarThumb( - WebCanvas*, int part, int state, int classicState, - const WebRect&) = 0; - - virtual void paintScrollbarTrack( - WebCanvas*, int part, int state, int classicState, - const WebRect&, const WebRect& alignRect) = 0; - - virtual void paintTextField( - WebCanvas*, int part, int state, int classicState, - const WebRect&, WebColor, bool fillContentArea, bool drawEdges) = 0; - - virtual void paintTrackbar( - WebCanvas*, int part, int state, int classicState, - const WebRect&) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/public/x11/WebScreenInfoFactory.h b/webkit/api/public/x11/WebScreenInfoFactory.h deleted file mode 100644 index 5e30da8..0000000 --- a/webkit/api/public/x11/WebScreenInfoFactory.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - */ - -#ifndef WebScreenInfoFactory_h -#define WebScreenInfoFactory_h - -#include "../WebCommon.h" - -typedef struct _XDisplay Display; - -namespace WebKit { - -struct WebScreenInfo; - -class WebScreenInfoFactory { -public: - WEBKIT_API static WebScreenInfo screenInfo(Display*, int screenNumber); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/ApplicationCacheHost.cpp b/webkit/api/src/ApplicationCacheHost.cpp deleted file mode 100644 index ef8f860..0000000 --- a/webkit/api/src/ApplicationCacheHost.cpp +++ /dev/null @@ -1,256 +0,0 @@ -/* - * 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 "ApplicationCacheHost.h" - -#if ENABLE(OFFLINE_WEB_APPLICATIONS) - -#include "DocumentLoader.h" -#include "DOMApplicationCache.h" -#include "Frame.h" -#include "Settings.h" -#include "WebApplicationCacheHost.h" -#include "WebApplicationCacheHostClient.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebURL.h" -#include "WebURLError.h" -#include "WebURLResponse.h" -#include "WrappedResourceRequest.h" -#include "WrappedResourceResponse.h" - -using namespace WebKit; - -namespace WebCore { - -// ApplicationCacheHostInternal ----------------------------------------------- - -class ApplicationCacheHostInternal : public WebApplicationCacheHostClient { -public: - ApplicationCacheHostInternal(ApplicationCacheHost* host) - : m_innerHost(host) - { - m_outerHost.set(WebKit::webKitClient()->createApplicationCacheHost(this)); - } - - virtual void notifyEventListener(WebApplicationCacheHost::EventID eventID) - { - m_innerHost->notifyDOMApplicationCache( - static_cast<ApplicationCacheHost::EventID>(eventID)); - } - - ApplicationCacheHost* m_innerHost; - OwnPtr<WebApplicationCacheHost> m_outerHost; -}; - -// ApplicationCacheHost ------------------------------------------------------- -// We provide a custom implementation of this class that calls out to the -// embedding application instead of using WebCore's built in appcache system. -// This file replaces webcore/appcache/ApplicationCacheHost.cpp in our build. - -ApplicationCacheHost::ApplicationCacheHost(DocumentLoader* documentLoader) - : m_domApplicationCache(0) - , m_documentLoader(documentLoader) -{ - ASSERT(m_documentLoader); -} - -ApplicationCacheHost::~ApplicationCacheHost() -{ -} - -void ApplicationCacheHost::maybeLoadMainResource(ResourceRequest& request, SubstituteData&) -{ - // We defer creating the outer host object to avoid spurious creation/destruction - // around creating empty documents. At this point, we're initiating a main resource - // load for the document, so its for real. - - if (!isApplicationCacheEnabled()) - return; - - m_internal.set(new ApplicationCacheHostInternal(this)); - if (m_internal->m_outerHost) { - WrappedResourceRequest wrapped(request); - m_internal->m_outerHost->willStartMainResourceRequest(wrapped); - } else - m_internal.clear(); - - // NOTE: The semantics of this method, and others in this interface, are subtly different - // than the method names would suggest. For example, in this method never returns an appcached - // response in the SubstituteData out argument, instead we return the appcached response thru - // the usual resource loading pipeline. -} - -void ApplicationCacheHost::selectCacheWithoutManifest() -{ - if (m_internal) - m_internal->m_outerHost->selectCacheWithoutManifest(); -} - -void ApplicationCacheHost::selectCacheWithManifest(const KURL& manifestURL) -{ - if (m_internal) { - if (!m_internal->m_outerHost->selectCacheWithManifest(manifestURL)) { - // It's a foreign entry, restart the current navigation from the top - // of the navigation algorithm. The navigation will not result in the - // same resource being loaded, because "foreign" entries are never picked - // during navigation. - // see WebCore::ApplicationCacheGroup::selectCache() - const KURL& docURL = m_documentLoader->frame()->document()->url(); - String referrer = m_documentLoader->frameLoader()->referrer(); - m_documentLoader->frame()->redirectScheduler()->scheduleLocationChange(docURL, referrer); - } - } -} - -bool ApplicationCacheHost::maybeLoadFallbackForMainResponse(const ResourceRequest&, const ResourceResponse& response) -{ - if (m_internal) { - WrappedResourceResponse wrapped(response); - m_internal->m_outerHost->didReceiveResponseForMainResource(wrapped); - } - return false; -} - -bool ApplicationCacheHost::maybeLoadFallbackForMainError(const ResourceRequest&, const ResourceError& error) -{ - // N/A to the chromium port - return false; -} - -void ApplicationCacheHost::mainResourceDataReceived(const char* data, int length, long long, bool) -{ - if (m_internal) - m_internal->m_outerHost->didReceiveDataForMainResource(data, length); -} - -void ApplicationCacheHost::failedLoadingMainResource() -{ - if (m_internal) - m_internal->m_outerHost->didFinishLoadingMainResource(false); -} - -void ApplicationCacheHost::finishedLoadingMainResource() -{ - if (m_internal) - m_internal->m_outerHost->didFinishLoadingMainResource(true); -} - -bool ApplicationCacheHost::maybeLoadResource(ResourceLoader*, ResourceRequest& request, const KURL&) -{ - // FIXME: look into the purpose of the unused KURL& originalURL parameter - if (m_internal) { - WrappedResourceRequest wrapped(request); - m_internal->m_outerHost->willStartSubResourceRequest(wrapped); - } - return false; -} - -bool ApplicationCacheHost::maybeLoadFallbackForRedirect(ResourceLoader*, ResourceRequest&, const ResourceResponse&) -{ - // N/A to the chromium port - return false; -} - -bool ApplicationCacheHost::maybeLoadFallbackForResponse(ResourceLoader*, const ResourceResponse&) -{ - // N/A to the chromium port - return false; -} - -bool ApplicationCacheHost::maybeLoadFallbackForError(ResourceLoader*, const ResourceError&) -{ - // N/A to the chromium port - return false; -} - -bool ApplicationCacheHost::maybeLoadSynchronously(ResourceRequest& request, ResourceError&, ResourceResponse&, Vector<char>&) -{ - if (m_internal) { - WrappedResourceRequest wrapped(request); - m_internal->m_outerHost->willStartSubResourceRequest(wrapped); - } - return false; -} - -void ApplicationCacheHost::maybeLoadFallbackSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, Vector<char>&) -{ - // N/A to the chromium port -} - -bool ApplicationCacheHost::canCacheInPageCache() const -{ - // N/A to the chromium port which doesn't use the page cache. - return false; -} - -void ApplicationCacheHost::setDOMApplicationCache(DOMApplicationCache* domApplicationCache) -{ - ASSERT(!m_domApplicationCache || !domApplicationCache); - m_domApplicationCache = domApplicationCache; -} - -void ApplicationCacheHost::notifyDOMApplicationCache(EventID id) -{ - if (m_domApplicationCache) { - ExceptionCode ec = 0; - m_domApplicationCache->dispatchEvent( - Event::create(DOMApplicationCache::toEventType(id), false, false), - ec); - ASSERT(!ec); - } -} - -ApplicationCacheHost::Status ApplicationCacheHost::status() const -{ - return m_internal ? static_cast<Status>(m_internal->m_outerHost->status()) : UNCACHED; -} - -bool ApplicationCacheHost::update() -{ - return m_internal ? m_internal->m_outerHost->startUpdate() : false; -} - -bool ApplicationCacheHost::swapCache() -{ - return m_internal ? m_internal->m_outerHost->swapCache() : false; -} - -bool ApplicationCacheHost::isApplicationCacheEnabled() -{ - ASSERT(m_documentLoader->frame()); - return m_documentLoader->frame()->settings() - && m_documentLoader->frame()->settings()->offlineWebApplicationCacheEnabled(); -} - -} // namespace WebCore - -#endif // ENABLE(OFFLINE_WEB_APPLICATIONS) diff --git a/webkit/api/src/AssertMatchingEnums.cpp b/webkit/api/src/AssertMatchingEnums.cpp deleted file mode 100644 index 408bd56..0000000 --- a/webkit/api/src/AssertMatchingEnums.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/* - * 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. - */ - -// Use this file to assert that various WebKit API enum values continue -// matching WebCore defined enum values. - -#include "config.h" - -#include "AccessibilityObject.h" -#include "ApplicationCacheHost.h" -#include "EditorInsertAction.h" -#include "MediaPlayer.h" -#include "NotificationPresenter.h" -#include "PasteboardPrivate.h" -#include "PlatformCursor.h" -#include "TextAffinity.h" -#include "WebAccessibilityObject.h" -#include "WebApplicationCacheHost.h" -#include "WebClipboard.h" -#include "WebCursorInfo.h" -#include "WebEditingAction.h" -#include "WebMediaPlayer.h" -#include "WebNotificationPresenter.h" -#include "WebTextAffinity.h" -#include <wtf/Assertions.h> - -#define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, webcore_name) \ - COMPILE_ASSERT(int(WebKit::webkit_name) == int(WebCore::webcore_name), mismatching_enums) - -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleUnknown, UnknownRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleButton, ButtonRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleRadioButton, RadioButtonRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleCheckBox, CheckBoxRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSlider, SliderRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTabGroup, TabGroupRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTextField, TextFieldRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleStaticText, StaticTextRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTextArea, TextAreaRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleScrollArea, ScrollAreaRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRolePopUpButton, PopUpButtonRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleMenuButton, MenuButtonRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTable, TableRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleApplication, ApplicationRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleGroup, GroupRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleRadioGroup, RadioGroupRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleList, ListRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleScrollBar, ScrollBarRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleValueIndicator, ValueIndicatorRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleImage, ImageRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleMenuBar, MenuBarRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleMenu, MenuRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleMenuItem, MenuItemRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleColumn, ColumnRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleRow, RowRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleToolbar, ToolbarRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleBusyIndicator, BusyIndicatorRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleProgressIndicator, ProgressIndicatorRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleWindow, WindowRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDrawer, DrawerRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSystemWide, SystemWideRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleOutline, OutlineRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleIncrementor, IncrementorRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleBrowser, BrowserRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleComboBox, ComboBoxRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSplitGroup, SplitGroupRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSplitter, SplitterRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleColorWell, ColorWellRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleGrowArea, GrowAreaRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSheet, SheetRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleHelpTag, HelpTagRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleMatte, MatteRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleRuler, RulerRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleRulerMarker, RulerMarkerRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLink, LinkRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDisclosureTriangle, DisclosureTriangleRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleGrid, GridRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleCell, CellRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleColumnHeader, ColumnHeaderRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleRowHeader, RowHeaderRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleWebCoreLink, WebCoreLinkRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleImageMapLink, ImageMapLinkRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleImageMap, ImageMapRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleListMarker, ListMarkerRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleWebArea, WebAreaRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleHeading, HeadingRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleListBox, ListBoxRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleListBoxOption, ListBoxOptionRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTableHeaderContainer, TableHeaderContainerRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDefinitionListTerm, DefinitionListTermRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDefinitionListDefinition, DefinitionListDefinitionRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleAnnotation, AnnotationRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSliderThumb, SliderThumbRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleIgnored, IgnoredRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTab, TabRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTabList, TabListRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTabPanel, TabPanelRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLandmarkApplication, LandmarkApplicationRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLandmarkBanner, LandmarkBannerRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLandmarkComplementary, LandmarkComplementaryRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLandmarkContentInfo, LandmarkContentInfoRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLandmarkMain, LandmarkMainRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLandmarkNavigation, LandmarkNavigationRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLandmarkSearch, LandmarkSearchRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleApplicationLog, ApplicationLogRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleApplicationMarquee, ApplicationMarqueeRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleApplicationStatus, ApplicationStatusRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleApplicationTimer, ApplicationTimerRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDocument, DocumentRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDocumentArticle, DocumentArticleRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDocumentNote, DocumentNoteRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDocumentRegion, DocumentRegionRole); -COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleUserInterfaceTooltip, UserInterfaceTooltipRole); - -#if ENABLE(OFFLINE_WEB_APPLICATIONS) -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::Uncached, ApplicationCacheHost::UNCACHED); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::Idle, ApplicationCacheHost::IDLE); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::Checking, ApplicationCacheHost::CHECKING); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::Downloading, ApplicationCacheHost::DOWNLOADING); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::UpdateReady, ApplicationCacheHost::UPDATEREADY); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::Obsolete, ApplicationCacheHost::OBSOLETE); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::CheckingEvent, ApplicationCacheHost::CHECKING_EVENT); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::ErrorEvent, ApplicationCacheHost::ERROR_EVENT); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::NoUpdateEvent, ApplicationCacheHost::NOUPDATE_EVENT); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::DownloadingEvent, ApplicationCacheHost::DOWNLOADING_EVENT); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::ProgressEvent, ApplicationCacheHost::PROGRESS_EVENT); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::UpdateReadyEvent, ApplicationCacheHost::UPDATEREADY_EVENT); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::CachedEvent, ApplicationCacheHost::CACHED_EVENT); -COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::ObsoleteEvent, ApplicationCacheHost::OBSOLETE_EVENT); -#endif - -COMPILE_ASSERT_MATCHING_ENUM(WebClipboard::FormatHTML, PasteboardPrivate::HTMLFormat); -COMPILE_ASSERT_MATCHING_ENUM(WebClipboard::FormatBookmark, PasteboardPrivate::BookmarkFormat); -COMPILE_ASSERT_MATCHING_ENUM(WebClipboard::FormatSmartPaste, PasteboardPrivate::WebSmartPasteFormat); - -COMPILE_ASSERT_MATCHING_ENUM(WebClipboard::BufferStandard, PasteboardPrivate::StandardBuffer); -COMPILE_ASSERT_MATCHING_ENUM(WebClipboard::BufferSelection, PasteboardPrivate::SelectionBuffer); - -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypePointer, PlatformCursor::TypePointer); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeCross, PlatformCursor::TypeCross); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeHand, PlatformCursor::TypeHand); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeIBeam, PlatformCursor::TypeIBeam); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeWait, PlatformCursor::TypeWait); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeHelp, PlatformCursor::TypeHelp); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeEastResize, PlatformCursor::TypeEastResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthResize, PlatformCursor::TypeNorthResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthEastResize, PlatformCursor::TypeNorthEastResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthWestResize, PlatformCursor::TypeNorthWestResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeSouthResize, PlatformCursor::TypeSouthResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeSouthEastResize, PlatformCursor::TypeSouthEastResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeSouthWestResize, PlatformCursor::TypeSouthWestResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeWestResize, PlatformCursor::TypeWestResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthSouthResize, PlatformCursor::TypeNorthSouthResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeEastWestResize, PlatformCursor::TypeEastWestResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthEastSouthWestResize, PlatformCursor::TypeNorthEastSouthWestResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthWestSouthEastResize, PlatformCursor::TypeNorthWestSouthEastResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeColumnResize, PlatformCursor::TypeColumnResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeRowResize, PlatformCursor::TypeRowResize); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeMiddlePanning, PlatformCursor::TypeMiddlePanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeEastPanning, PlatformCursor::TypeEastPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthPanning, PlatformCursor::TypeNorthPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthEastPanning, PlatformCursor::TypeNorthEastPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNorthWestPanning, PlatformCursor::TypeNorthWestPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeSouthPanning, PlatformCursor::TypeSouthPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeSouthEastPanning, PlatformCursor::TypeSouthEastPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeSouthWestPanning, PlatformCursor::TypeSouthWestPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeWestPanning, PlatformCursor::TypeWestPanning); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeMove, PlatformCursor::TypeMove); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeVerticalText, PlatformCursor::TypeVerticalText); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeCell, PlatformCursor::TypeCell); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeContextMenu, PlatformCursor::TypeContextMenu); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeAlias, PlatformCursor::TypeAlias); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeProgress, PlatformCursor::TypeProgress); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNoDrop, PlatformCursor::TypeNoDrop); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeCopy, PlatformCursor::TypeCopy); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNone, PlatformCursor::TypeNone); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeNotAllowed, PlatformCursor::TypeNotAllowed); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeZoomIn, PlatformCursor::TypeZoomIn); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeZoomOut, PlatformCursor::TypeZoomOut); -COMPILE_ASSERT_MATCHING_ENUM(WebCursorInfo::TypeCustom, PlatformCursor::TypeCustom); - -COMPILE_ASSERT_MATCHING_ENUM(WebEditingActionTyped, EditorInsertActionTyped); -COMPILE_ASSERT_MATCHING_ENUM(WebEditingActionPasted, EditorInsertActionPasted); -COMPILE_ASSERT_MATCHING_ENUM(WebEditingActionDropped, EditorInsertActionDropped); - -#if ENABLE(VIDEO) -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Empty, MediaPlayer::Empty); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Idle, MediaPlayer::Idle); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Loading, MediaPlayer::Loading); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Loaded, MediaPlayer::Loaded); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::FormatError, MediaPlayer::FormatError); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::NetworkError, MediaPlayer::NetworkError); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::DecodeError, MediaPlayer::DecodeError); - -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::HaveNothing, MediaPlayer::HaveNothing); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::HaveMetadata, MediaPlayer::HaveMetadata); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::HaveCurrentData, MediaPlayer::HaveCurrentData); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::HaveFutureData, MediaPlayer::HaveFutureData); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::HaveEnoughData, MediaPlayer::HaveEnoughData); - -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Unknown, MediaPlayer::Unknown); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Download, MediaPlayer::Download); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::StoredStream, MediaPlayer::StoredStream); -COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::LiveStream, MediaPlayer::LiveStream); -#endif - -#if ENABLE(NOTIFICATIONS) -COMPILE_ASSERT_MATCHING_ENUM(WebNotificationPresenter::PermissionAllowed, NotificationPresenter::PermissionAllowed); -COMPILE_ASSERT_MATCHING_ENUM(WebNotificationPresenter::PermissionNotAllowed, NotificationPresenter::PermissionNotAllowed); -COMPILE_ASSERT_MATCHING_ENUM(WebNotificationPresenter::PermissionDenied, NotificationPresenter::PermissionDenied); -#endif - -COMPILE_ASSERT_MATCHING_ENUM(WebTextAffinityUpstream, UPSTREAM); -COMPILE_ASSERT_MATCHING_ENUM(WebTextAffinityDownstream, DOWNSTREAM); diff --git a/webkit/api/src/AutocompletePopupMenuClient.cpp b/webkit/api/src/AutocompletePopupMenuClient.cpp deleted file mode 100644 index 62d4dff..0000000 --- a/webkit/api/src/AutocompletePopupMenuClient.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - * 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 "AutocompletePopupMenuClient.h" - -#include "CSSStyleSelector.h" -#include "CSSValueKeywords.h" -#include "FrameView.h" -#include "HTMLInputElement.h" -#include "RenderTheme.h" -#include "WebVector.h" -#include "WebViewImpl.h" - -using namespace WebCore; - -namespace WebKit { - -AutocompletePopupMenuClient::AutocompletePopupMenuClient(WebViewImpl* webView) - : m_textField(0) - , m_selectedIndex(0) - , m_webView(webView) -{ -} - -AutocompletePopupMenuClient::~AutocompletePopupMenuClient() -{ -} - -void AutocompletePopupMenuClient::initialize( - HTMLInputElement* textField, - const WebVector<WebString>& suggestions, - int defaultSuggestionIndex) -{ - ASSERT(defaultSuggestionIndex < static_cast<int>(suggestions.size())); - m_textField = textField; - m_selectedIndex = defaultSuggestionIndex; - setSuggestions(suggestions); - - FontDescription fontDescription; - m_webView->theme()->systemFont(CSSValueWebkitControl, fontDescription); - // Use a smaller font size to match IE/Firefox. - // FIXME: http://crbug.com/7376 use the system size instead of a - // fixed font size value. - fontDescription.setComputedSize(12.0); - Font font(fontDescription, 0, 0); - font.update(textField->document()->styleSelector()->fontSelector()); - // The direction of text in popup menu is set the same as the direction of - // the input element: textField. - m_style.set(new PopupMenuStyle(Color::black, Color::white, font, true, - Length(WebCore::Fixed), - textField->renderer()->style()->direction())); -} - -void AutocompletePopupMenuClient::valueChanged(unsigned listIndex, bool fireEvents) -{ - m_textField->setValue(m_suggestions[listIndex]); - EditorClientImpl* editor = - static_cast<EditorClientImpl*>(m_webView->page()->editorClient()); - ASSERT(editor); - editor->onAutofillSuggestionAccepted( - static_cast<HTMLInputElement*>(m_textField.get())); -} - -String AutocompletePopupMenuClient::itemText(unsigned listIndex) const -{ - return m_suggestions[listIndex]; -} - -PopupMenuStyle AutocompletePopupMenuClient::itemStyle(unsigned listIndex) const -{ - return *m_style; -} - -PopupMenuStyle AutocompletePopupMenuClient::menuStyle() const -{ - return *m_style; -} - -int AutocompletePopupMenuClient::clientPaddingLeft() const -{ - // Bug http://crbug.com/7708 seems to indicate the style can be 0. - RenderStyle* style = textFieldStyle(); - return style ? m_webView->theme()->popupInternalPaddingLeft(style) : 0; -} - -int AutocompletePopupMenuClient::clientPaddingRight() const -{ - // Bug http://crbug.com/7708 seems to indicate the style can be 0. - RenderStyle* style = textFieldStyle(); - return style ? m_webView->theme()->popupInternalPaddingRight(style) : 0; -} - -void AutocompletePopupMenuClient::popupDidHide() -{ - m_webView->autoCompletePopupDidHide(); -} - -void AutocompletePopupMenuClient::setTextFromItem(unsigned listIndex) -{ - m_textField->setValue(m_suggestions[listIndex]); -} - -FontSelector* AutocompletePopupMenuClient::fontSelector() const -{ - return m_textField->document()->styleSelector()->fontSelector(); -} - -HostWindow* AutocompletePopupMenuClient::hostWindow() const -{ - return m_textField->document()->view()->hostWindow(); -} - -PassRefPtr<Scrollbar> AutocompletePopupMenuClient::createScrollbar( - ScrollbarClient* client, - ScrollbarOrientation orientation, - ScrollbarControlSize size) -{ - return Scrollbar::createNativeScrollbar(client, orientation, size); -} - -void AutocompletePopupMenuClient::setSuggestions(const WebVector<WebString>& suggestions) -{ - m_suggestions.clear(); - for (size_t i = 0; i < suggestions.size(); ++i) - m_suggestions.append(suggestions[i]); - // Try to preserve selection if possible. - if (m_selectedIndex >= static_cast<int>(suggestions.size())) - m_selectedIndex = -1; -} - -void AutocompletePopupMenuClient::removeItemAtIndex(int index) -{ - ASSERT(index >= 0 && index < static_cast<int>(m_suggestions.size())); - m_suggestions.remove(index); -} - -RenderStyle* AutocompletePopupMenuClient::textFieldStyle() const -{ - RenderStyle* style = m_textField->computedStyle(); - if (!style) { - // It seems we can only have a 0 style in a TextField if the - // node is detached, in which case we the popup shoud not be - // showing. Please report this in http://crbug.com/7708 and - // include the page you were visiting. - ASSERT_NOT_REACHED(); - } - return style; -} - -} // namespace WebKit diff --git a/webkit/api/src/AutocompletePopupMenuClient.h b/webkit/api/src/AutocompletePopupMenuClient.h deleted file mode 100644 index ad24e54..0000000 --- a/webkit/api/src/AutocompletePopupMenuClient.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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 "PopupMenuClient.h" - -namespace WebCore { -class HTMLInputElement; -class PopupMenuStyle; -class RenderStyle; -} - -namespace WebKit { -class WebString; -class WebViewImpl; -template <typename T> class WebVector; - -// AutocompletePopupMenuClient -class AutocompletePopupMenuClient : public WebCore::PopupMenuClient { -public: - AutocompletePopupMenuClient(WebViewImpl* webview); - ~AutocompletePopupMenuClient(); - - void initialize(WebCore::HTMLInputElement*, - const WebVector<WebString>& suggestions, - int defaultSuggestionIndex); - - WebCore::HTMLInputElement* textField() const { return m_textField.get(); } - - void setSuggestions(const WebVector<WebString>&); - void removeItemAtIndex(int index); - - // WebCore::PopupMenuClient methods: - virtual void valueChanged(unsigned listIndex, bool fireEvents = true); - virtual WebCore::String itemText(unsigned listIndex) const; - virtual WebCore::String itemToolTip(unsigned lastIndex) const { return WebCore::String(); } - virtual bool itemIsEnabled(unsigned listIndex) const { return true; } - virtual WebCore::PopupMenuStyle itemStyle(unsigned listIndex) const; - virtual WebCore::PopupMenuStyle menuStyle() const; - virtual int clientInsetLeft() const { return 0; } - virtual int clientInsetRight() const { return 0; } - virtual int clientPaddingLeft() const; - virtual int clientPaddingRight() const; - virtual int listSize() const { return m_suggestions.size(); } - virtual int selectedIndex() const { return m_selectedIndex; } - virtual void popupDidHide(); - virtual bool itemIsSeparator(unsigned listIndex) const { return false; } - virtual bool itemIsLabel(unsigned listIndex) const { return false; } - virtual bool itemIsSelected(unsigned listIndex) const { return false; } - virtual bool shouldPopOver() const { return false; } - virtual bool valueShouldChangeOnHotTrack() const { return false; } - virtual void setTextFromItem(unsigned listIndex); - virtual WebCore::FontSelector* fontSelector() const; - virtual WebCore::HostWindow* hostWindow() const; - virtual PassRefPtr<WebCore::Scrollbar> createScrollbar( - WebCore::ScrollbarClient* client, - WebCore::ScrollbarOrientation orientation, - WebCore::ScrollbarControlSize size); - -private: - WebCore::RenderStyle* textFieldStyle() const; - - RefPtr<WebCore::HTMLInputElement> m_textField; - Vector<WebCore::String> m_suggestions; - int m_selectedIndex; - WebViewImpl* m_webView; - OwnPtr<WebCore::PopupMenuStyle> m_style; -}; - -} // namespace WebKit diff --git a/webkit/api/src/BackForwardListClientImpl.cpp b/webkit/api/src/BackForwardListClientImpl.cpp deleted file mode 100644 index 8feae32..0000000 --- a/webkit/api/src/BackForwardListClientImpl.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 "BackForwardListClientImpl.h" - -#include "HistoryItem.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" - -using namespace WebCore; - -namespace WebKit { - -const char backForwardNavigationScheme[] = "chrome-back-forward"; - -BackForwardListClientImpl::BackForwardListClientImpl(WebViewImpl* webView) - : m_webView(webView) -{ -} - -BackForwardListClientImpl::~BackForwardListClientImpl() -{ -} - -void BackForwardListClientImpl::setCurrentHistoryItem(HistoryItem* item) -{ - m_previousItem = m_currentItem; - m_currentItem = item; -} - -HistoryItem* BackForwardListClientImpl::previousHistoryItem() const -{ - return m_previousItem.get(); -} - -void BackForwardListClientImpl::addItem(PassRefPtr<HistoryItem> item) -{ - m_previousItem = m_currentItem; - m_currentItem = item; - - // If WebCore adds a new HistoryItem, it means this is a new navigation (ie, - // not a reload or back/forward). - m_webView->observeNewNavigation(); - - if (m_webView->client()) - m_webView->client()->didAddHistoryItem(); -} - -void BackForwardListClientImpl::goToItem(HistoryItem* item) -{ - m_previousItem = m_currentItem; - m_currentItem = item; - - if (m_pendingHistoryItem == item) - m_pendingHistoryItem = 0; -} - -HistoryItem* BackForwardListClientImpl::currentItem() -{ - return m_currentItem.get(); -} - -HistoryItem* BackForwardListClientImpl::itemAtIndex(int index) -{ - if (!m_webView->client()) - return 0; - - // Since we don't keep the entire back/forward list, we have no way to - // properly implement this method. We return a dummy entry instead that we - // intercept in our FrameLoaderClient implementation in case WebCore asks - // to navigate to this HistoryItem. - - // FIXME: We should change WebCore to handle history.{back,forward,go} - // differently. It should perhaps just ask the FrameLoaderClient to - // perform those navigations. - - String url_string = String::format( - "%s://go/%d", backForwardNavigationScheme, index); - - m_pendingHistoryItem = - HistoryItem::create(url_string, String(), 0.0); - return m_pendingHistoryItem.get(); -} - -int BackForwardListClientImpl::backListCount() -{ - if (!m_webView->client()) - return 0; - - return m_webView->client()->historyBackListCount(); -} - -int BackForwardListClientImpl::forwardListCount() -{ - if (!m_webView->client()) - return 0; - - return m_webView->client()->historyForwardListCount(); -} - -void BackForwardListClientImpl::close() -{ - m_currentItem = 0; - m_previousItem = 0; - m_pendingHistoryItem = 0; -} - -} // namespace WebKit diff --git a/webkit/api/src/BackForwardListClientImpl.h b/webkit/api/src/BackForwardListClientImpl.h deleted file mode 100644 index 1d8beb0..0000000 --- a/webkit/api/src/BackForwardListClientImpl.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ - -#ifndef BackForwardListClientImpl_h -#define BackForwardListClientImpl_h - -#include "BackForwardList.h" - -namespace WebKit { -class WebViewImpl; - -extern const char backForwardNavigationScheme[]; - -class BackForwardListClientImpl : public WebCore::BackForwardListClient { -public: - BackForwardListClientImpl(WebViewImpl* webview); - ~BackForwardListClientImpl(); - - void setCurrentHistoryItem(WebCore::HistoryItem* item); - WebCore::HistoryItem* previousHistoryItem() const; - -private: - // WebCore::BackForwardListClient methods: - virtual void addItem(PassRefPtr<WebCore::HistoryItem>); - virtual void goToItem(WebCore::HistoryItem*); - virtual WebCore::HistoryItem* currentItem(); - virtual WebCore::HistoryItem* itemAtIndex(int index); - virtual int backListCount(); - virtual int forwardListCount(); - virtual void close(); - - WebViewImpl* m_webView; - - RefPtr<WebCore::HistoryItem> m_previousItem; - RefPtr<WebCore::HistoryItem> m_currentItem; - - // The last history item that was accessed via itemAtIndex(). We keep track - // of this until goToItem() is called, so we can track the navigation. - RefPtr<WebCore::HistoryItem> m_pendingHistoryItem; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/ChromeClientImpl.cpp b/webkit/api/src/ChromeClientImpl.cpp deleted file mode 100644 index f816315..0000000 --- a/webkit/api/src/ChromeClientImpl.cpp +++ /dev/null @@ -1,674 +0,0 @@ -/* - * 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 "ChromeClientImpl.h" - -#include "AccessibilityObject.h" -#include "AXObjectCache.h" -#include "CharacterNames.h" -#include "Console.h" -#include "Cursor.h" -#include "DatabaseTracker.h" -#include "Document.h" -#include "DocumentLoader.h" -#include "FileChooser.h" -#include "FloatRect.h" -#include "FrameLoadRequest.h" -#include "FrameView.h" -#include "HitTestResult.h" -#include "IntRect.h" -#include "Node.h" -#include "NotificationPresenterImpl.h" -#include "Page.h" -#include "PopupMenuChromium.h" -#include "ScriptController.h" -#if USE(V8) -#include "V8Proxy.h" -#endif -#include "WebAccessibilityObject.h" -#include "WebConsoleMessage.h" -#include "WebCursorInfo.h" -#include "WebFileChooserCompletionImpl.h" -#include "WebFrameClient.h" -#include "WebFrameImpl.h" -#include "WebInputEvent.h" -#include "WebKit.h" -#include "WebPopupMenuImpl.h" -#include "WebPopupMenuInfo.h" -#include "WebRect.h" -#include "WebTextDirection.h" -#include "WebURLRequest.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" -#include "WindowFeatures.h" -#include "WrappedResourceRequest.h" - -using namespace WebCore; - -namespace WebKit { - -ChromeClientImpl::ChromeClientImpl(WebViewImpl* webView) - : m_webView(webView) - , m_toolbarsVisible(true) - , m_statusbarVisible(true) - , m_scrollbarsVisible(true) - , m_menubarVisible(true) - , m_resizable(true) - , m_ignoreNextSetCursor(false) -{ -} - -ChromeClientImpl::~ChromeClientImpl() -{ -} - -void ChromeClientImpl::chromeDestroyed() -{ - // Our lifetime is bound to the WebViewImpl. -} - -void ChromeClientImpl::setWindowRect(const FloatRect& r) -{ - if (m_webView->client()) - m_webView->client()->setWindowRect(IntRect(r)); -} - -FloatRect ChromeClientImpl::windowRect() -{ - WebRect rect; - if (m_webView->client()) - rect = m_webView->client()->rootWindowRect(); - else { - // These numbers will be fairly wrong. The window's x/y coordinates will - // be the top left corner of the screen and the size will be the content - // size instead of the window size. - rect.width = m_webView->size().width; - rect.height = m_webView->size().height; - } - return FloatRect(rect); -} - -FloatRect ChromeClientImpl::pageRect() -{ - // We hide the details of the window's border thickness from the web page by - // simple re-using the window position here. So, from the point-of-view of - // the web page, the window has no border. - return windowRect(); -} - -float ChromeClientImpl::scaleFactor() -{ - // This is supposed to return the scale factor of the web page. It looks like - // the implementor of the graphics layer is responsible for doing most of the - // operations associated with scaling. However, this value is used ins some - // cases by WebCore. For example, this is used as a scaling factor in canvas - // so that things drawn in it are scaled just like the web page is. - // - // We don't currently implement scaling, so just return 1.0 (no scaling). - return 1.0; -} - -void ChromeClientImpl::focus() -{ - if (!m_webView->client()) - return; - - m_webView->client()->didFocus(); - - // If accessibility is enabled, we should notify assistive technology that - // the active AccessibilityObject changed. - const Frame* frame = m_webView->focusedWebCoreFrame(); - if (!frame) - return; - - Document* doc = frame->document(); - - if (doc && doc->axObjectCache()->accessibilityEnabled()) { - Node* focusedNode = m_webView->focusedWebCoreNode(); - - if (!focusedNode) { - // Could not retrieve focused Node. - return; - } - - // Retrieve the focused AccessibilityObject. - AccessibilityObject* focusedAccObj = - doc->axObjectCache()->getOrCreate(focusedNode->renderer()); - - // Alert assistive technology that focus changed. - if (focusedAccObj) - m_webView->client()->focusAccessibilityObject(WebAccessibilityObject(focusedAccObj)); - } -} - -void ChromeClientImpl::unfocus() -{ - if (m_webView->client()) - m_webView->client()->didBlur(); -} - -bool ChromeClientImpl::canTakeFocus(FocusDirection) -{ - // For now the browser can always take focus if we're not running layout - // tests. - return !layoutTestMode(); -} - -void ChromeClientImpl::takeFocus(FocusDirection direction) -{ - if (!m_webView->client()) - return; - if (direction == FocusDirectionBackward) - m_webView->client()->focusPrevious(); - else - m_webView->client()->focusNext(); -} - -void ChromeClientImpl::focusedNodeChanged(Node* node) -{ - WebURL focus_url; - if (node && node->isLink()) { - // This HitTestResult hack is the easiest way to get a link URL out of a - // WebCore::Node. - HitTestResult hit_test(IntPoint(0, 0)); - // This cast must be valid because of the isLink() check. - hit_test.setURLElement(reinterpret_cast<Element*>(node)); - if (hit_test.isLiveLink()) - focus_url = hit_test.absoluteLinkURL(); - } - m_webView->client()->setKeyboardFocusURL(focus_url); -} - -Page* ChromeClientImpl::createWindow( - Frame* frame, const FrameLoadRequest& r, const WindowFeatures& features) -{ - if (!m_webView->client()) - return 0; - - WebViewImpl* newView = static_cast<WebViewImpl*>( - m_webView->client()->createView(WebFrameImpl::fromFrame(frame))); - if (!newView) - return 0; - - // The request is empty when we are just being asked to open a blank window. - // This corresponds to window.open(""), for example. - if (!r.resourceRequest().isEmpty()) { - WrappedResourceRequest request(r.resourceRequest()); - newView->mainFrame()->loadRequest(request); - } - - return newView->page(); -} - -static inline bool currentEventShouldCauseBackgroundTab(const WebInputEvent* inputEvent) -{ - if (!inputEvent) - return false; - - if (inputEvent->type != WebInputEvent::MouseUp) - return false; - - const WebMouseEvent* mouseEvent = static_cast<const WebMouseEvent*>(inputEvent); - - WebNavigationPolicy policy; - unsigned short buttonNumber; - switch (mouseEvent->button) { - case WebMouseEvent::ButtonLeft: - buttonNumber = 0; - break; - case WebMouseEvent::ButtonMiddle: - buttonNumber = 1; - break; - case WebMouseEvent::ButtonRight: - buttonNumber = 2; - break; - default: - return false; - } - bool ctrl = mouseEvent->modifiers & WebMouseEvent::ControlKey; - bool shift = mouseEvent->modifiers & WebMouseEvent::ShiftKey; - bool alt = mouseEvent->modifiers & WebMouseEvent::AltKey; - bool meta = mouseEvent->modifiers & WebMouseEvent::MetaKey; - - if (!WebViewImpl::navigationPolicyFromMouseEvent(buttonNumber, ctrl, shift, alt, meta, &policy)) - return false; - - return policy == WebNavigationPolicyNewBackgroundTab; -} - -void ChromeClientImpl::show() -{ - if (!m_webView->client()) - return; - - // If our default configuration was modified by a script or wasn't - // created by a user gesture, then show as a popup. Else, let this - // new window be opened as a toplevel window. - bool asPopup = !m_toolbarsVisible - || !m_statusbarVisible - || !m_scrollbarsVisible - || !m_menubarVisible - || !m_resizable; - - WebNavigationPolicy policy = WebNavigationPolicyNewForegroundTab; - if (asPopup) - policy = WebNavigationPolicyNewPopup; - if (currentEventShouldCauseBackgroundTab(WebViewImpl::currentInputEvent())) - policy = WebNavigationPolicyNewBackgroundTab; - - m_webView->client()->show(policy); -} - -bool ChromeClientImpl::canRunModal() -{ - return !!m_webView->client(); -} - -void ChromeClientImpl::runModal() -{ - if (m_webView->client()) - m_webView->client()->runModal(); -} - -void ChromeClientImpl::setToolbarsVisible(bool value) -{ - m_toolbarsVisible = value; -} - -bool ChromeClientImpl::toolbarsVisible() -{ - return m_toolbarsVisible; -} - -void ChromeClientImpl::setStatusbarVisible(bool value) -{ - m_statusbarVisible = value; -} - -bool ChromeClientImpl::statusbarVisible() -{ - return m_statusbarVisible; -} - -void ChromeClientImpl::setScrollbarsVisible(bool value) -{ - m_scrollbarsVisible = value; - WebFrameImpl* web_frame = static_cast<WebFrameImpl*>(m_webView->mainFrame()); - if (web_frame) - web_frame->setAllowsScrolling(value); -} - -bool ChromeClientImpl::scrollbarsVisible() -{ - return m_scrollbarsVisible; -} - -void ChromeClientImpl::setMenubarVisible(bool value) -{ - m_menubarVisible = value; -} - -bool ChromeClientImpl::menubarVisible() -{ - return m_menubarVisible; -} - -void ChromeClientImpl::setResizable(bool value) -{ - m_resizable = value; -} - -void ChromeClientImpl::addMessageToConsole(MessageSource source, - MessageType type, - MessageLevel level, - const String& message, - unsigned lineNumber, - const String& sourceID) -{ - if (m_webView->client()) { - m_webView->client()->didAddMessageToConsole( - WebConsoleMessage(static_cast<WebConsoleMessage::Level>(level), message), - sourceID, - lineNumber); - } -} - -bool ChromeClientImpl::canRunBeforeUnloadConfirmPanel() -{ - return !!m_webView->client(); -} - -bool ChromeClientImpl::runBeforeUnloadConfirmPanel(const String& message, Frame* frame) -{ - if (m_webView->client()) { - return m_webView->client()->runModalBeforeUnloadDialog( - WebFrameImpl::fromFrame(frame), message); - } - return false; -} - -void ChromeClientImpl::closeWindowSoon() -{ - // Make sure this Page can no longer be found by JS. - m_webView->page()->setGroupName(String()); - - // Make sure that all loading is stopped. Ensures that JS stops executing! - m_webView->mainFrame()->stopLoading(); - - if (m_webView->client()) - m_webView->client()->closeWidgetSoon(); -} - -// Although a Frame is passed in, we don't actually use it, since we -// already know our own m_webView. -void ChromeClientImpl::runJavaScriptAlert(Frame* frame, const String& message) -{ - if (m_webView->client()) { -#if USE(V8) - // Before showing the JavaScript dialog, we give the proxy implementation - // a chance to process any pending console messages. - V8Proxy::processConsoleMessages(); -#endif - m_webView->client()->runModalAlertDialog( - WebFrameImpl::fromFrame(frame), message); - } -} - -// See comments for runJavaScriptAlert(). -bool ChromeClientImpl::runJavaScriptConfirm(Frame* frame, const String& message) -{ - if (m_webView->client()) { - return m_webView->client()->runModalConfirmDialog( - WebFrameImpl::fromFrame(frame), message); - } - return false; -} - -// See comments for runJavaScriptAlert(). -bool ChromeClientImpl::runJavaScriptPrompt(Frame* frame, - const String& message, - const String& defaultValue, - String& result) -{ - if (m_webView->client()) { - WebString actualValue; - bool ok = m_webView->client()->runModalPromptDialog( - WebFrameImpl::fromFrame(frame), - message, - defaultValue, - &actualValue); - if (ok) - result = actualValue; - return ok; - } - return false; -} - -void ChromeClientImpl::setStatusbarText(const String& message) -{ - if (m_webView->client()) - m_webView->client()->setStatusText(message); -} - -bool ChromeClientImpl::shouldInterruptJavaScript() -{ - // FIXME: implement me - return false; -} - -bool ChromeClientImpl::tabsToLinks() const -{ - // Returns true if anchors should accept keyboard focus with the tab key. - // This method is used in a convoluted fashion by EventHandler::tabsToLinks. - // It's a twisted path (self-evident, but more complicated than seems - // necessary), but the net result is that returning true from here, on a - // platform other than MAC or QT, lets anchors get keyboard focus. - return m_webView->tabsToLinks(); -} - -IntRect ChromeClientImpl::windowResizerRect() const -{ - IntRect result; - if (m_webView->client()) - result = m_webView->client()->windowResizerRect(); - return result; -} - -void ChromeClientImpl::repaint( - const IntRect& paintRect, bool contentChanged, bool immediate, - bool repaintContentOnly) -{ - // Ignore spurious calls. - if (!contentChanged || paintRect.isEmpty()) - return; - if (m_webView->client()) - m_webView->client()->didInvalidateRect(paintRect); -} - -void ChromeClientImpl::scroll( - const IntSize& scrollDelta, const IntRect& scrollRect, - const IntRect& clipRect) -{ - if (m_webView->client()) { - int dx = scrollDelta.width(); - int dy = scrollDelta.height(); - m_webView->client()->didScrollRect(dx, dy, clipRect); - } -} - -IntPoint ChromeClientImpl::screenToWindow(const IntPoint&) const -{ - notImplemented(); - return IntPoint(); -} - -IntRect ChromeClientImpl::windowToScreen(const IntRect& rect) const -{ - IntRect screenRect(rect); - - if (m_webView->client()) { - WebRect windowRect = m_webView->client()->windowRect(); - screenRect.move(windowRect.x, windowRect.y); - } - - return screenRect; -} - -void ChromeClientImpl::contentsSizeChanged(Frame* frame, const IntSize& size) const -{ - WebFrameImpl* webframe = WebFrameImpl::fromFrame(frame); - if (webframe->client()) - webframe->client()->didChangeContentsSize(webframe, size); -} - -void ChromeClientImpl::scrollbarsModeDidChange() const -{ -} - -void ChromeClientImpl::mouseDidMoveOverElement( - const HitTestResult& result, unsigned modifierFlags) -{ - if (!m_webView->client()) - return; - // Find out if the mouse is over a link, and if so, let our UI know... - if (result.isLiveLink() && !result.absoluteLinkURL().string().isEmpty()) - m_webView->client()->setMouseOverURL(result.absoluteLinkURL()); - else - m_webView->client()->setMouseOverURL(WebURL()); -} - -void ChromeClientImpl::setToolTip(const String& tooltipText, TextDirection dir) -{ - if (!m_webView->client()) - return; - WebTextDirection textDirection = (dir == RTL) ? - WebTextDirectionRightToLeft : - WebTextDirectionLeftToRight; - m_webView->client()->setToolTipText( - tooltipText, textDirection); -} - -void ChromeClientImpl::print(Frame* frame) -{ - if (m_webView->client()) - m_webView->client()->printPage(WebFrameImpl::fromFrame(frame)); -} - -void ChromeClientImpl::exceededDatabaseQuota(Frame* frame, const String& databaseName) -{ - // set a reasonable quota for now -- 5Mb should be enough for anybody - // TODO(dglazkov): this should be configurable - SecurityOrigin* origin = frame->document()->securityOrigin(); - DatabaseTracker::tracker().setQuota(origin, 1024 * 1024 * 5); -} - -#if ENABLE(OFFLINE_WEB_APPLICATIONS) -void ChromeClientImpl::reachedMaxAppCacheSize(int64_t spaceNeeded) -{ - ASSERT_NOT_REACHED(); -} -#endif - -void ChromeClientImpl::runOpenPanel(Frame* frame, PassRefPtr<FileChooser> fileChooser) -{ - WebViewClient* client = m_webView->client(); - if (!client) - return; - - bool multipleFiles = fileChooser->allowsMultipleFiles(); - - WebString suggestion; - if (fileChooser->filenames().size() > 0) - suggestion = fileChooser->filenames()[0]; - - WebFileChooserCompletionImpl* chooserCompletion = - new WebFileChooserCompletionImpl(fileChooser); - bool ok = client->runFileChooser(multipleFiles, - WebString(), - suggestion, - chooserCompletion); - if (!ok) { - // Choosing failed, so do callback with an empty list. - chooserCompletion->didChooseFile(WebVector<WebString>()); - } -} - -void ChromeClientImpl::popupOpened(PopupContainer* popupContainer, - const IntRect& bounds, - bool activatable, - bool handleExternally) -{ - if (!m_webView->client()) - return; - - WebWidget* webwidget; - if (handleExternally) { - WebPopupMenuInfo popupInfo; - getPopupMenuInfo(popupContainer, &popupInfo); - webwidget = m_webView->client()->createPopupMenu(popupInfo); - } else - webwidget = m_webView->client()->createPopupMenu(activatable); - - static_cast<WebPopupMenuImpl*>(webwidget)->Init(popupContainer, bounds); -} - -void ChromeClientImpl::setCursor(const WebCursorInfo& cursor) -{ - if (m_ignoreNextSetCursor) { - m_ignoreNextSetCursor = false; - return; - } - - if (m_webView->client()) - m_webView->client()->didChangeCursor(cursor); -} - -void ChromeClientImpl::setCursorForPlugin(const WebCursorInfo& cursor) -{ - setCursor(cursor); - - // Currently, Widget::setCursor is always called after this function in - // EventHandler.cpp and since we don't want that we set a flag indicating - // that the next SetCursor call is to be ignored. - m_ignoreNextSetCursor = true; -} - -void ChromeClientImpl::formStateDidChange(const Node* node) -{ - // The current history item is not updated yet. That happens lazily when - // WebFrame::currentHistoryItem is requested. - WebFrameImpl* webframe = WebFrameImpl::fromFrame(node->document()->frame()); - if (webframe->client()) - webframe->client()->didUpdateCurrentHistoryItem(webframe); -} - -void ChromeClientImpl::getPopupMenuInfo(PopupContainer* popupContainer, - WebPopupMenuInfo* info) -{ - const Vector<PopupItem*>& inputItems = popupContainer->popupData(); - - WebVector<WebPopupMenuInfo::Item> outputItems(inputItems.size()); - - for (size_t i = 0; i < inputItems.size(); ++i) { - const PopupItem& inputItem = *inputItems[i]; - WebPopupMenuInfo::Item& outputItem = outputItems[i]; - - outputItem.label = inputItem.label; - outputItem.enabled = inputItem.enabled; - - switch (inputItem.type) { - case PopupItem::TypeOption: - outputItem.type = WebPopupMenuInfo::Item::Option; - break; - case PopupItem::TypeGroup: - outputItem.type = WebPopupMenuInfo::Item::Group; - break; - case PopupItem::TypeSeparator: - outputItem.type = WebPopupMenuInfo::Item::Separator; - break; - default: - ASSERT_NOT_REACHED(); - } - } - - info->itemHeight = popupContainer->menuItemHeight(); - info->selectedIndex = popupContainer->selectedIndex(); - info->items.swap(outputItems); -} - -#if ENABLE(NOTIFICATIONS) -NotificationPresenter* ChromeClientImpl::notificationPresenter() const -{ - return m_webView->notificationPresenterImpl(); -} -#endif - -} // namespace WebKit diff --git a/webkit/api/src/ChromeClientImpl.h b/webkit/api/src/ChromeClientImpl.h deleted file mode 100644 index 5a1e9cc..0000000 --- a/webkit/api/src/ChromeClientImpl.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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. - */ - -#ifndef ChromeClientImpl_h -#define ChromeClientImpl_h - -#include "ChromeClientChromium.h" - -namespace WebCore { -class HTMLParserQuirks; -class PopupContainer; -class SecurityOrigin; -struct WindowFeatures; -} - -namespace WebKit { -class WebViewImpl; -struct WebCursorInfo; -struct WebPopupMenuInfo; - -// Handles window-level notifications from WebCore on behalf of a WebView. -class ChromeClientImpl : public WebCore::ChromeClientChromium { -public: - explicit ChromeClientImpl(WebViewImpl* webView); - virtual ~ChromeClientImpl(); - - WebViewImpl* webView() const { return m_webView; } - - // ChromeClient methods: - virtual void chromeDestroyed(); - virtual void setWindowRect(const WebCore::FloatRect&); - virtual WebCore::FloatRect windowRect(); - virtual WebCore::FloatRect pageRect(); - virtual float scaleFactor(); - virtual void focus(); - virtual void unfocus(); - virtual bool canTakeFocus(WebCore::FocusDirection); - virtual void takeFocus(WebCore::FocusDirection); - virtual void focusedNodeChanged(WebCore::Node*); - virtual WebCore::Page* createWindow( - WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&); - virtual void show(); - virtual bool canRunModal(); - virtual void runModal(); - virtual void setToolbarsVisible(bool); - virtual bool toolbarsVisible(); - virtual void setStatusbarVisible(bool); - virtual bool statusbarVisible(); - virtual void setScrollbarsVisible(bool); - virtual bool scrollbarsVisible(); - virtual void setMenubarVisible(bool); - virtual bool menubarVisible(); - virtual void setResizable(bool); - virtual void addMessageToConsole( - WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, - const WebCore::String& message, unsigned lineNumber, - const WebCore::String& sourceID); - virtual bool canRunBeforeUnloadConfirmPanel(); - virtual bool runBeforeUnloadConfirmPanel( - const WebCore::String& message, WebCore::Frame*); - virtual void closeWindowSoon(); - virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&); - virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&); - virtual bool runJavaScriptPrompt( - WebCore::Frame*, const WebCore::String& message, - const WebCore::String& defaultValue, WebCore::String& result); - virtual void setStatusbarText(const WebCore::String& message); - virtual bool shouldInterruptJavaScript(); - virtual bool tabsToLinks() const; - virtual WebCore::IntRect windowResizerRect() const; - virtual void repaint( - const WebCore::IntRect&, bool contentChanged, bool immediate = false, - bool repaintContentOnly = false); - virtual void scroll( - const WebCore::IntSize& scrollDelta, const WebCore::IntRect& rectToScroll, - const WebCore::IntRect& clipRect); - virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const; - virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const; - virtual PlatformPageClient platformPageClient() const { return 0; } - virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const; - virtual void scrollRectIntoView( - const WebCore::IntRect&, const WebCore::ScrollView*) const { } - virtual void scrollbarsModeDidChange() const; - virtual void mouseDidMoveOverElement( - const WebCore::HitTestResult& result, unsigned modifierFlags); - virtual void setToolTip(const WebCore::String& tooltipText, WebCore::TextDirection); - virtual void print(WebCore::Frame*); - virtual void exceededDatabaseQuota( - WebCore::Frame*, const WebCore::String& databaseName); -#if ENABLE(OFFLINE_WEB_APPLICATIONS) - virtual void reachedMaxAppCacheSize(int64_t spaceNeeded); -#endif -#if ENABLE(NOTIFICATIONS) - virtual WebCore::NotificationPresenter* notificationPresenter() const; -#endif - virtual void requestGeolocationPermissionForFrame( - WebCore::Frame*, WebCore::Geolocation*) { } - virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>); - virtual bool setCursor(WebCore::PlatformCursorHandle) { return false; } - virtual void formStateDidChange(const WebCore::Node*); - virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; } - - // ChromeClientChromium methods: - virtual void popupOpened(WebCore::PopupContainer* popupContainer, - const WebCore::IntRect& bounds, - bool activatable, - bool handleExternally); - - // ChromeClientImpl: - void setCursor(const WebCursorInfo& cursor); - void setCursorForPlugin(const WebCursorInfo& cursor); - -private: - void getPopupMenuInfo(WebCore::PopupContainer*, WebPopupMenuInfo*); - - WebViewImpl* m_webView; // weak pointer - bool m_toolbarsVisible; - bool m_statusbarVisible; - bool m_scrollbarsVisible; - bool m_menubarVisible; - bool m_resizable; - // Set to true if the next SetCursor is to be ignored. - bool m_ignoreNextSetCursor; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/ChromiumBridge.cpp b/webkit/api/src/ChromiumBridge.cpp deleted file mode 100644 index 8d63c5f..0000000 --- a/webkit/api/src/ChromiumBridge.cpp +++ /dev/null @@ -1,689 +0,0 @@ -/* - * 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 "ChromiumBridge.h" - -#include <googleurl/src/url_util.h> - -#include "ChromeClientImpl.h" -#include "WebClipboard.h" -#include "WebCookie.h" -#include "WebCursorInfo.h" -#include "WebData.h" -#include "WebFrameClient.h" -#include "WebFrameImpl.h" -#include "WebImage.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebMimeRegistry.h" -#include "WebPluginContainerImpl.h" -#include "WebPluginListBuilderImpl.h" -#include "WebScreenInfo.h" -#include "WebString.h" -#include "WebURL.h" -#include "WebVector.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" -#include "WebWorkerClientImpl.h" - -#if PLATFORM(WIN_OS) -#include "WebRect.h" -#include "WebSandboxSupport.h" -#include "WebThemeEngine.h" -#endif - -#if PLATFORM(LINUX) -#include "WebSandboxSupport.h" -#include "WebFontInfo.h" -#endif - -#if WEBKIT_USING_SKIA -#include "NativeImageSkia.h" -#endif - -#include "BitmapImage.h" -#include "Cookie.h" -#include "FrameView.h" -#include "GraphicsContext.h" -#include "KURL.h" -#include "NotImplemented.h" -#include "PlatformContextSkia.h" -#include "PluginData.h" -#include "Worker.h" -#include "WorkerContextProxy.h" -#include <wtf/Assertions.h> - -// We are part of the WebKit implementation. -using namespace WebKit; - -namespace WebCore { - -static ChromeClientImpl* toChromeClientImpl(Widget* widget) -{ - FrameView* view; - if (widget->isFrameView()) - view = static_cast<FrameView*>(widget); - else if (widget->parent() && widget->parent()->isFrameView()) - view = static_cast<FrameView*>(widget->parent()); - else - return 0; - - Page* page = view->frame() ? view->frame()->page() : 0; - if (!page) - return 0; - - return static_cast<ChromeClientImpl*>(page->chrome()->client()); -} - -static WebWidgetClient* toWebWidgetClient(Widget* widget) -{ - ChromeClientImpl* chromeClientImpl = toChromeClientImpl(widget); - if (!chromeClientImpl || !chromeClientImpl->webView()) - return 0; - return chromeClientImpl->webView()->client(); -} - -// Clipboard ------------------------------------------------------------------ - -bool ChromiumBridge::clipboardIsFormatAvailable( - PasteboardPrivate::ClipboardFormat format, - PasteboardPrivate::ClipboardBuffer buffer) -{ - return webKitClient()->clipboard()->isFormatAvailable( - static_cast<WebClipboard::Format>(format), - static_cast<WebClipboard::Buffer>(buffer)); -} - -String ChromiumBridge::clipboardReadPlainText( - PasteboardPrivate::ClipboardBuffer buffer) -{ - return webKitClient()->clipboard()->readPlainText( - static_cast<WebClipboard::Buffer>(buffer)); -} - -void ChromiumBridge::clipboardReadHTML( - PasteboardPrivate::ClipboardBuffer buffer, - String* htmlText, KURL* sourceURL) -{ - WebURL url; - *htmlText = webKitClient()->clipboard()->readHTML( - static_cast<WebClipboard::Buffer>(buffer), &url); - *sourceURL = url; -} - -void ChromiumBridge::clipboardWriteSelection(const String& htmlText, - const KURL& sourceURL, - const String& plainText, - bool writeSmartPaste) -{ - webKitClient()->clipboard()->writeHTML( - htmlText, sourceURL, plainText, writeSmartPaste); -} - -void ChromiumBridge::clipboardWritePlainText(const String& plainText) -{ - webKitClient()->clipboard()->writePlainText(plainText); -} - -void ChromiumBridge::clipboardWriteURL(const KURL& url, const String& title) -{ - webKitClient()->clipboard()->writeURL(url, title); -} - -void ChromiumBridge::clipboardWriteImage(NativeImagePtr image, - const KURL& sourceURL, - const String& title) -{ -#if WEBKIT_USING_SKIA - WebImage webImage(*image); -#else - WebImage webImage(image); -#endif - webKitClient()->clipboard()->writeImage(webImage, sourceURL, title); -} - -// Cookies -------------------------------------------------------------------- - -void ChromiumBridge::setCookies(const KURL& url, - const KURL& firstPartyForCookies, - const String& cookie) -{ - webKitClient()->setCookies(url, firstPartyForCookies, cookie); -} - -String ChromiumBridge::cookies(const KURL& url, - const KURL& firstPartyForCookies) -{ - return webKitClient()->cookies(url, firstPartyForCookies); -} - -bool ChromiumBridge::rawCookies(const KURL& url, const KURL& firstPartyForCookies, Vector<Cookie>* rawCookies) -{ - rawCookies->clear(); - WebVector<WebCookie> webCookies; - if (!webKitClient()->rawCookies(url, firstPartyForCookies, &webCookies)) - return false; - - for (unsigned i = 0; i < webCookies.size(); ++i) { - const WebCookie& webCookie = webCookies[i]; - Cookie cookie(webCookie.name, - webCookie.value, - webCookie.domain, - webCookie.path, - webCookie.expires, - webCookie.httpOnly, - webCookie.secure, - webCookie.session); - rawCookies->append(cookie); - } - return true; -} - -void ChromiumBridge::deleteCookie(const KURL& url, const String& cookieName) -{ - webKitClient()->deleteCookie(url, cookieName); -} - -// DNS ------------------------------------------------------------------------ - -void ChromiumBridge::prefetchDNS(const String& hostname) -{ - webKitClient()->prefetchHostName(hostname); -} - -// File ------------------------------------------------------------------------ - -bool ChromiumBridge::fileExists(const String& path) -{ - return webKitClient()->fileExists(path); -} - -bool ChromiumBridge::deleteFile(const String& path) -{ - return webKitClient()->deleteFile(path); -} - -bool ChromiumBridge::deleteEmptyDirectory(const String& path) -{ - return webKitClient()->deleteEmptyDirectory(path); -} - -bool ChromiumBridge::getFileSize(const String& path, long long& result) -{ - return webKitClient()->getFileSize(path, result); -} - -bool ChromiumBridge::getFileModificationTime(const String& path, time_t& result) -{ - return webKitClient()->getFileModificationTime(path, result); -} - -String ChromiumBridge::directoryName(const String& path) -{ - return webKitClient()->directoryName(path); -} - -String ChromiumBridge::pathByAppendingComponent(const String& path, const String& component) -{ - return webKitClient()->pathByAppendingComponent(path, component); -} - -bool ChromiumBridge::makeAllDirectories(const String& path) -{ - return webKitClient()->makeAllDirectories(path); -} - -String ChromiumBridge::getAbsolutePath(const String& path) -{ - return webKitClient()->getAbsolutePath(path); -} - -bool ChromiumBridge::isDirectory(const String& path) -{ - return webKitClient()->isDirectory(path); -} - -KURL ChromiumBridge::filePathToURL(const String& path) -{ - return webKitClient()->filePathToURL(path); -} - -// Font ----------------------------------------------------------------------- - -#if PLATFORM(WIN_OS) -bool ChromiumBridge::ensureFontLoaded(HFONT font) -{ - WebSandboxSupport* ss = webKitClient()->sandboxSupport(); - - // if there is no sandbox, then we can assume the font - // was able to be loaded successfully already - return ss ? ss->ensureFontLoaded(font) : true; -} -#endif - -#if PLATFORM(LINUX) -String ChromiumBridge::getFontFamilyForCharacters(const UChar* characters, size_t numCharacters) -{ - if (webKitClient()->sandboxSupport()) - return webKitClient()->sandboxSupport()->getFontFamilyForCharacters(characters, numCharacters); - - WebCString family = WebFontInfo::familyForChars(characters, numCharacters); - if (family.data()) - return WebString::fromUTF8(family.data()); - - return WebString(); -} -#endif - -// HTML5 DB ------------------------------------------------------------------- - -#if ENABLE(DATABASE) -PlatformFileHandle ChromiumBridge::databaseOpenFile(const String& fileName, int desiredFlags, PlatformFileHandle* dirHandle) -{ - return webKitClient()->databaseOpenFile(WebString(fileName), desiredFlags, dirHandle); -} - -int ChromiumBridge::databaseDeleteFile(const String& fileName, bool syncDir) -{ - return webKitClient()->databaseDeleteFile(WebString(fileName), syncDir); -} - -long ChromiumBridge::databaseGetFileAttributes(const String& fileName) -{ - return webKitClient()->databaseGetFileAttributes(WebString(fileName)); -} - -long long ChromiumBridge::databaseGetFileSize(const String& fileName) -{ - return webKitClient()->databaseGetFileSize(WebString(fileName)); -} -#endif - -// Keygen --------------------------------------------------------------------- - -String ChromiumBridge::signedPublicKeyAndChallengeString( - unsigned keySizeIndex, const String& challenge, const KURL& url) -{ - return webKitClient()->signedPublicKeyAndChallengeString(keySizeIndex, - WebString(challenge), - WebURL(url)); -} - -// Language ------------------------------------------------------------------- - -String ChromiumBridge::computedDefaultLanguage() -{ - return webKitClient()->defaultLocale(); -} - -// LayoutTestMode ------------------------------------------------------------- - -bool ChromiumBridge::layoutTestMode() -{ - return WebKit::layoutTestMode(); -} - -// MimeType ------------------------------------------------------------------- - -bool ChromiumBridge::isSupportedImageMIMEType(const String& mimeType) -{ - return webKitClient()->mimeRegistry()->supportsImageMIMEType(mimeType) - != WebMimeRegistry::IsNotSupported; -} - -bool ChromiumBridge::isSupportedJavaScriptMIMEType(const String& mimeType) -{ - return webKitClient()->mimeRegistry()->supportsJavaScriptMIMEType(mimeType) - != WebMimeRegistry::IsNotSupported; -} - -bool ChromiumBridge::isSupportedNonImageMIMEType(const String& mimeType) -{ - return webKitClient()->mimeRegistry()->supportsNonImageMIMEType(mimeType) - != WebMimeRegistry::IsNotSupported; -} - -String ChromiumBridge::mimeTypeForExtension(const String& extension) -{ - return webKitClient()->mimeRegistry()->mimeTypeForExtension(extension); -} - -String ChromiumBridge::mimeTypeFromFile(const String& path) -{ - return webKitClient()->mimeRegistry()->mimeTypeFromFile(path); -} - -String ChromiumBridge::preferredExtensionForMIMEType(const String& mimeType) -{ - return webKitClient()->mimeRegistry()->preferredExtensionForMIMEType(mimeType); -} - -// Plugin --------------------------------------------------------------------- - -bool ChromiumBridge::plugins(bool refresh, Vector<PluginInfo*>* results) -{ - WebPluginListBuilderImpl builder(results); - webKitClient()->getPluginList(refresh, &builder); - return true; // FIXME: There is no need for this function to return a value. -} - -NPObject* ChromiumBridge::pluginScriptableObject(Widget* widget) -{ - if (!widget) - return 0; - - ASSERT(!widget->isFrameView()); - - // NOTE: We have to trust that the widget passed to us here is a - // WebPluginContainerImpl. There isn't a way to dynamically verify it, - // since the derived class (Widget) has no identifier. - return static_cast<WebPluginContainerImpl*>(widget)->scriptableObject(); -} - -// Resources ------------------------------------------------------------------ - -PassRefPtr<Image> ChromiumBridge::loadPlatformImageResource(const char* name) -{ - const WebData& resource = webKitClient()->loadResource(name); - if (resource.isEmpty()) - return Image::nullImage(); - - RefPtr<Image> image = BitmapImage::create(); - image->setData(resource, true); - return image; -} - -// Sandbox -------------------------------------------------------------------- - -bool ChromiumBridge::sandboxEnabled() -{ - return webKitClient()->sandboxEnabled(); -} - -// SharedTimers --------------------------------------------------------------- - -void ChromiumBridge::setSharedTimerFiredFunction(void (*func)()) -{ - webKitClient()->setSharedTimerFiredFunction(func); -} - -void ChromiumBridge::setSharedTimerFireTime(double fireTime) -{ - webKitClient()->setSharedTimerFireTime(fireTime); -} - -void ChromiumBridge::stopSharedTimer() -{ - webKitClient()->stopSharedTimer(); -} - -// StatsCounters -------------------------------------------------------------- - -void ChromiumBridge::decrementStatsCounter(const char* name) -{ - webKitClient()->decrementStatsCounter(name); -} - -void ChromiumBridge::incrementStatsCounter(const char* name) -{ - webKitClient()->incrementStatsCounter(name); -} - -// Sudden Termination --------------------------------------------------------- - -void ChromiumBridge::suddenTerminationChanged(bool enabled) -{ - webKitClient()->suddenTerminationChanged(enabled); -} - -// SystemTime ----------------------------------------------------------------- - -double ChromiumBridge::currentTime() -{ - return webKitClient()->currentTime(); -} - -// Theming -------------------------------------------------------------------- - -#if PLATFORM(WIN_OS) - -void ChromiumBridge::paintButton( - GraphicsContext* gc, int part, int state, int classicState, - const IntRect& rect) -{ - webKitClient()->themeEngine()->paintButton( - gc->platformContext()->canvas(), part, state, classicState, rect); -} - -void ChromiumBridge::paintMenuList( - GraphicsContext* gc, int part, int state, int classicState, - const IntRect& rect) -{ - webKitClient()->themeEngine()->paintMenuList( - gc->platformContext()->canvas(), part, state, classicState, rect); -} - -void ChromiumBridge::paintScrollbarArrow( - GraphicsContext* gc, int state, int classicState, - const IntRect& rect) -{ - webKitClient()->themeEngine()->paintScrollbarArrow( - gc->platformContext()->canvas(), state, classicState, rect); -} - -void ChromiumBridge::paintScrollbarThumb( - GraphicsContext* gc, int part, int state, int classicState, - const IntRect& rect) -{ - webKitClient()->themeEngine()->paintScrollbarThumb( - gc->platformContext()->canvas(), part, state, classicState, rect); -} - -void ChromiumBridge::paintScrollbarTrack( - GraphicsContext* gc, int part, int state, int classicState, - const IntRect& rect, const IntRect& alignRect) -{ - webKitClient()->themeEngine()->paintScrollbarTrack( - gc->platformContext()->canvas(), part, state, classicState, rect, - alignRect); -} - -void ChromiumBridge::paintTextField( - GraphicsContext* gc, int part, int state, int classicState, - const IntRect& rect, const Color& color, bool fillContentArea, - bool drawEdges) -{ - // Fallback to white when |color| is invalid. - RGBA32 backgroundColor = color.isValid() ? color.rgb() : Color::white; - - webKitClient()->themeEngine()->paintTextField( - gc->platformContext()->canvas(), part, state, classicState, rect, - backgroundColor, fillContentArea, drawEdges); -} - -void ChromiumBridge::paintTrackbar( - GraphicsContext* gc, int part, int state, int classicState, - const IntRect& rect) -{ - webKitClient()->themeEngine()->paintTrackbar( - gc->platformContext()->canvas(), part, state, classicState, rect); -} - -#endif - -// Trace Event ---------------------------------------------------------------- - -void ChromiumBridge::traceEventBegin(const char* name, void* id, const char* extra) -{ - webKitClient()->traceEventBegin(name, id, extra); -} - -void ChromiumBridge::traceEventEnd(const char* name, void* id, const char* extra) -{ - webKitClient()->traceEventEnd(name, id, extra); -} - -// Visited Links -------------------------------------------------------------- - -LinkHash ChromiumBridge::visitedLinkHash(const UChar* url, unsigned length) -{ - url_canon::RawCanonOutput<2048> buffer; - url_parse::Parsed parsed; - if (!url_util::Canonicalize(url, length, 0, &buffer, &parsed)) - return 0; // Invalid URLs are unvisited. - return webKitClient()->visitedLinkHash(buffer.data(), buffer.length()); -} - -LinkHash ChromiumBridge::visitedLinkHash(const KURL& base, - const AtomicString& attributeURL) -{ - // Resolve the relative URL using googleurl and pass the absolute URL up to - // the embedder. We could create a GURL object from the base and resolve - // the relative URL that way, but calling the lower-level functions - // directly saves us the string allocation in most cases. - url_canon::RawCanonOutput<2048> buffer; - url_parse::Parsed parsed; - -#if USE(GOOGLEURL) - const CString& cstr = base.utf8String(); - const char* data = cstr.data(); - int length = cstr.length(); - const url_parse::Parsed& srcParsed = base.parsed(); -#else - // When we're not using GoogleURL, first canonicalize it so we can resolve it - // below. - url_canon::RawCanonOutput<2048> srcCanon; - url_parse::Parsed srcParsed; - String str = base.string(); - if (!url_util::Canonicalize(str.characters(), str.length(), 0, &srcCanon, &srcParsed)) - return 0; - const char* data = srcCanon.data(); - int length = srcCanon.length(); -#endif - - if (!url_util::ResolveRelative(data, length, srcParsed, attributeURL.characters(), - attributeURL.length(), 0, &buffer, &parsed)) - return 0; // Invalid resolved URL. - - return webKitClient()->visitedLinkHash(buffer.data(), buffer.length()); -} - -bool ChromiumBridge::isLinkVisited(LinkHash visitedLinkHash) -{ - return webKitClient()->isLinkVisited(visitedLinkHash); -} - -// These are temporary methods that the WebKit layer can use to call to the -// Glue layer. Once the Glue layer moves entirely into the WebKit layer, these -// methods will be deleted. - -void ChromiumBridge::notifyJSOutOfMemory(Frame* frame) -{ - if (!frame) - return; - - WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame); - if (!webFrame->client()) - return; - webFrame->client()->didExhaustMemoryAvailableForScript(webFrame); -} - -int ChromiumBridge::memoryUsageMB() -{ - return static_cast<int>(webKitClient()->memoryUsageMB()); -} - -int ChromiumBridge::screenDepth(Widget* widget) -{ - WebWidgetClient* client = toWebWidgetClient(widget); - if (!client) - return 0; - return client->screenInfo().depth; -} - -int ChromiumBridge::screenDepthPerComponent(Widget* widget) -{ - WebWidgetClient* client = toWebWidgetClient(widget); - if (!client) - return 0; - return client->screenInfo().depthPerComponent; -} - -bool ChromiumBridge::screenIsMonochrome(Widget* widget) -{ - WebWidgetClient* client = toWebWidgetClient(widget); - if (!client) - return 0; - return client->screenInfo().isMonochrome; -} - -IntRect ChromiumBridge::screenRect(Widget* widget) -{ - WebWidgetClient* client = toWebWidgetClient(widget); - if (!client) - return IntRect(); - return client->screenInfo().rect; -} - -IntRect ChromiumBridge::screenAvailableRect(Widget* widget) -{ - WebWidgetClient* client = toWebWidgetClient(widget); - if (!client) - return IntRect(); - return client->screenInfo().availableRect; -} - -bool ChromiumBridge::popupsAllowed(NPP npp) -{ - // FIXME: Give the embedder a way to control this. - return false; -} - -void ChromiumBridge::widgetSetCursor(Widget* widget, const Cursor& cursor) -{ - ChromeClientImpl* client = toChromeClientImpl(widget); - if (client) - client->setCursor(WebCursorInfo(cursor)); -} - -void ChromiumBridge::widgetSetFocus(Widget* widget) -{ - ChromeClientImpl* client = toChromeClientImpl(widget); - if (client) - client->focus(); -} - -WorkerContextProxy* WorkerContextProxy::create(Worker* worker) -{ - return WebWorkerClientImpl::createWorkerContextProxy(worker); -} - -} // namespace WebCore diff --git a/webkit/api/src/ChromiumCurrentTime.cpp b/webkit/api/src/ChromiumCurrentTime.cpp deleted file mode 100644 index 1eccc41..0000000 --- a/webkit/api/src/ChromiumCurrentTime.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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 <wtf/CurrentTime.h> - -#include "WebKit.h" -#include "WebKitClient.h" - -namespace WTF { - -double currentTime() -{ - return WebKit::webKitClient()->currentTime(); -} - -} // namespace WTF diff --git a/webkit/api/src/ChromiumThreading.cpp b/webkit/api/src/ChromiumThreading.cpp deleted file mode 100644 index 902a433..0000000 --- a/webkit/api/src/ChromiumThreading.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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 <wtf/chromium/ChromiumThreading.h> - -#include "WebKit.h" -#include "WebKitClient.h" - -#include <wtf/MainThread.h> - -namespace WTF { - -void ChromiumThreading::initializeMainThread() -{ -} - -void ChromiumThreading::scheduleDispatchFunctionsOnMainThread() -{ - WebKit::webKitClient()->callOnMainThread(&WTF::dispatchFunctionsFromMainThread); -} - -} // namespace WTF diff --git a/webkit/api/src/ContextMenuClientImpl.cpp b/webkit/api/src/ContextMenuClientImpl.cpp deleted file mode 100644 index f32c72f..0000000 --- a/webkit/api/src/ContextMenuClientImpl.cpp +++ /dev/null @@ -1,238 +0,0 @@ -/* - * 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 "ContextMenuClientImpl.h" - -#include "ContextMenu.h" -#include "Document.h" -#include "DocumentLoader.h" -#include "Editor.h" -#include "EventHandler.h" -#include "FrameLoader.h" -#include "FrameView.h" -#include "HitTestResult.h" -#include "HTMLMediaElement.h" -#include "HTMLNames.h" -#include "KURL.h" -#include "MediaError.h" -#include "PlatformString.h" -#include "TextBreakIterator.h" -#include "Widget.h" - -#include "WebContextMenuData.h" -#include "WebDataSourceImpl.h" -#include "WebFrameImpl.h" -#include "WebPoint.h" -#include "WebString.h" -#include "WebURL.h" -#include "WebURLResponse.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" - -using namespace WebCore; - -namespace WebKit { - -// Figure out the URL of a page or subframe. Returns |page_type| as the type, -// which indicates page or subframe, or ContextNodeType::NONE if the URL could not -// be determined for some reason. -static WebURL urlFromFrame(Frame* frame) -{ - if (frame) { - DocumentLoader* dl = frame->loader()->documentLoader(); - if (dl) { - WebDataSource* ds = WebDataSourceImpl::fromDocumentLoader(dl); - if (ds) - return ds->hasUnreachableURL() ? ds->unreachableURL() : ds->request().url(); - } - } - return WebURL(); -} - -// Helper function to determine whether text is a single word or a sentence. -static bool isASingleWord(const String& text) -{ - TextBreakIterator* it = characterBreakIterator(text.characters(), text.length()); - return it && textBreakNext(it) == TextBreakDone; -} - -// Helper function to get misspelled word on which context menu -// is to be evolked. This function also sets the word on which context menu -// has been evoked to be the selected word, as required. This function changes -// the selection only when there were no selected characters. -static String selectMisspelledWord(const ContextMenu* defaultMenu, Frame* selectedFrame) -{ - // First select from selectedText to check for multiple word selection. - String misspelledWord = selectedFrame->selectedText().stripWhiteSpace(); - - // If some texts were already selected, we don't change the selection. - if (!misspelledWord.isEmpty()) { - // Don't provide suggestions for multiple words. - if (!isASingleWord(misspelledWord)) - return String(); - return misspelledWord; - } - - // Selection is empty, so change the selection to the word under the cursor. - HitTestResult hitTestResult = selectedFrame->eventHandler()-> - hitTestResultAtPoint(defaultMenu->hitTestResult().point(), true); - Node* innerNode = hitTestResult.innerNode(); - VisiblePosition pos(innerNode->renderer()->positionForPoint( - hitTestResult.localPoint())); - - VisibleSelection selection; - if (pos.isNotNull()) { - selection = VisibleSelection(pos); - selection.expandUsingGranularity(WordGranularity); - } - - if (selection.isRange()) - selectedFrame->setSelectionGranularity(WordGranularity); - - if (selectedFrame->shouldChangeSelection(selection)) - selectedFrame->selection()->setSelection(selection); - - misspelledWord = selectedFrame->selectedText().stripWhiteSpace(); - - // If misspelled word is still empty, then that portion should not be - // selected. Set the selection to that position only, and do not expand. - if (misspelledWord.isEmpty()) { - selection = VisibleSelection(pos); - selectedFrame->selection()->setSelection(selection); - } - - return misspelledWord; -} - -PlatformMenuDescription ContextMenuClientImpl::getCustomMenuFromDefaultItems( - ContextMenu* defaultMenu) -{ - // Displaying the context menu in this function is a big hack as we don't - // have context, i.e. whether this is being invoked via a script or in - // response to user input (Mouse event WM_RBUTTONDOWN, - // Keyboard events KeyVK_APPS, Shift+F10). Check if this is being invoked - // in response to the above input events before popping up the context menu. - if (!m_webView->contextMenuAllowed()) - return 0; - - HitTestResult r = defaultMenu->hitTestResult(); - Frame* selectedFrame = r.innerNonSharedNode()->document()->frame(); - - WebContextMenuData data; - data.mousePosition = selectedFrame->view()->contentsToWindow(r.point()); - - // Links, Images, Media tags, and Image/Media-Links take preference over - // all else. - data.linkURL = r.absoluteLinkURL(); - - data.mediaType = WebContextMenuData::MediaTypeNone; - data.mediaFlags = WebContextMenuData::MediaNone; - - if (!r.absoluteImageURL().isEmpty()) { - data.srcURL = r.absoluteImageURL(); - data.mediaType = WebContextMenuData::MediaTypeImage; - } else if (!r.absoluteMediaURL().isEmpty()) { - data.srcURL = r.absoluteMediaURL(); - - // We know that if absoluteMediaURL() is not empty, then this - // is a media element. - HTMLMediaElement* mediaElement = - static_cast<HTMLMediaElement*>(r.innerNonSharedNode()); - if (mediaElement->hasTagName(HTMLNames::videoTag)) - data.mediaType = WebContextMenuData::MediaTypeVideo; - else if (mediaElement->hasTagName(HTMLNames::audioTag)) - data.mediaType = WebContextMenuData::MediaTypeAudio; - - if (mediaElement->error()) - data.mediaFlags |= WebContextMenuData::MediaInError; - if (mediaElement->paused()) - data.mediaFlags |= WebContextMenuData::MediaPaused; - if (mediaElement->muted()) - data.mediaFlags |= WebContextMenuData::MediaMuted; - if (mediaElement->loop()) - data.mediaFlags |= WebContextMenuData::MediaLoop; - if (mediaElement->supportsSave()) - data.mediaFlags |= WebContextMenuData::MediaCanSave; - if (mediaElement->hasAudio()) - data.mediaFlags |= WebContextMenuData::MediaHasAudio; - } - // If it's not a link, an image, a media element, or an image/media link, - // show a selection menu or a more generic page menu. - data.frameEncoding = selectedFrame->loader()->encoding(); - - // Send the frame and page URLs in any case. - data.pageURL = urlFromFrame(m_webView->mainFrameImpl()->frame()); - if (selectedFrame != m_webView->mainFrameImpl()->frame()) - data.frameURL = urlFromFrame(selectedFrame); - - if (r.isSelected()) - data.selectedText = selectedFrame->selectedText().stripWhiteSpace(); - - data.isEditable = false; - if (r.isContentEditable()) { - data.isEditable = true; - if (m_webView->focusedWebCoreFrame()->editor()->isContinuousSpellCheckingEnabled()) { - data.isSpellCheckingEnabled = true; - data.misspelledWord = selectMisspelledWord(defaultMenu, selectedFrame); - } - } - - // Now retrieve the security info. - DocumentLoader* dl = selectedFrame->loader()->documentLoader(); - WebDataSource* ds = WebDataSourceImpl::fromDocumentLoader(dl); - if (ds) - data.securityInfo = ds->response().securityInfo(); - - // Compute edit flags. - data.editFlags = WebContextMenuData::CanDoNone; - if (m_webView->focusedWebCoreFrame()->editor()->canUndo()) - data.editFlags |= WebContextMenuData::CanUndo; - if (m_webView->focusedWebCoreFrame()->editor()->canRedo()) - data.editFlags |= WebContextMenuData::CanRedo; - if (m_webView->focusedWebCoreFrame()->editor()->canCut()) - data.editFlags |= WebContextMenuData::CanCut; - if (m_webView->focusedWebCoreFrame()->editor()->canCopy()) - data.editFlags |= WebContextMenuData::CanCopy; - if (m_webView->focusedWebCoreFrame()->editor()->canPaste()) - data.editFlags |= WebContextMenuData::CanPaste; - if (m_webView->focusedWebCoreFrame()->editor()->canDelete()) - data.editFlags |= WebContextMenuData::CanDelete; - // We can always select all... - data.editFlags |= WebContextMenuData::CanSelectAll; - - WebFrame* selected_web_frame = WebFrameImpl::fromFrame(selectedFrame); - if (m_webView->client()) - m_webView->client()->showContextMenu(selected_web_frame, data); - - return 0; -} - -} // namespace WebKit diff --git a/webkit/api/src/ContextMenuClientImpl.h b/webkit/api/src/ContextMenuClientImpl.h deleted file mode 100644 index 8b5bab6..0000000 --- a/webkit/api/src/ContextMenuClientImpl.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef ContextMenuClientImpl_h -#define ContextMenuClientImpl_h - -#include "ContextMenuClient.h" - -namespace WebKit { - -class WebViewImpl; - -class ContextMenuClientImpl : public WebCore::ContextMenuClient { -public: - ContextMenuClientImpl(WebViewImpl* webView) : m_webView(webView) {} - virtual ~ContextMenuClientImpl() {} - virtual void copyImageToClipboard(const WebCore::HitTestResult&) {} - virtual void contextMenuDestroyed() {} - virtual void contextMenuItemSelected(WebCore::ContextMenuItem*, const WebCore::ContextMenu*) {} - virtual void downloadURL(const WebCore::KURL&) {} - virtual WebCore::PlatformMenuDescription getCustomMenuFromDefaultItems(WebCore::ContextMenu*); - virtual bool isSpeaking() { return false; } - virtual void lookUpInDictionary(WebCore::Frame*) {} - virtual void searchWithGoogle(const WebCore::Frame*) {} - virtual bool shouldIncludeInspectElementItem() { return false; } - virtual void speak(const WebCore::String&) {} - virtual void stopSpeaking() {} -private: - WebViewImpl* m_webView; -}; - -} // namespace WebKit - -#endif // ContextMenuClientImpl_h diff --git a/webkit/api/src/DOMUtilitiesPrivate.cpp b/webkit/api/src/DOMUtilitiesPrivate.cpp deleted file mode 100644 index e84d4fb..0000000 --- a/webkit/api/src/DOMUtilitiesPrivate.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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 "DOMUtilitiesPrivate.h" - -#include "Element.h" -#include "HTMLInputElement.h" -#include "HTMLLinkElement.h" -#include "HTMLMetaElement.h" -#include "HTMLNames.h" -#include "HTMLOptionElement.h" -#include "Node.h" - -using namespace WebCore; - -namespace { - -template <class HTMLNodeType> -HTMLNodeType* toHTMLElement(Node* node, const QualifiedName& name) -{ - if (node->isHTMLElement() - && static_cast<HTMLElement*>(node)->hasTagName(name)) { - return static_cast<HTMLNodeType*>(node); - } - return 0; -} - -} // namespace - -namespace WebKit { - -HTMLInputElement* toHTMLInputElement(Node* node) -{ - return toHTMLElement<HTMLInputElement>(node, HTMLNames::inputTag); -} - -HTMLLinkElement* toHTMLLinkElement(Node* node) -{ - return toHTMLElement<HTMLLinkElement>(node, HTMLNames::linkTag); -} - -HTMLMetaElement* toHTMLMetaElement(Node* node) -{ - return toHTMLElement<HTMLMetaElement>(node, HTMLNames::metaTag); -} - -HTMLOptionElement* toHTMLOptionElement(Node* node) -{ - return toHTMLElement<HTMLOptionElement>(node, HTMLNames::optionTag); -} - -String nameOfInputElement(HTMLInputElement* element) -{ - String name = element->name(); - String trimmedName = name.stripWhiteSpace(); - if (!trimmedName.isEmpty()) - return trimmedName; - - name = element->getAttribute(HTMLNames::idAttr); - trimmedName = name.stripWhiteSpace(); - if (!trimmedName.isEmpty()) - return trimmedName; - - return String(); -} - -} // namespace WebKit diff --git a/webkit/api/src/DOMUtilitiesPrivate.h b/webkit/api/src/DOMUtilitiesPrivate.h deleted file mode 100644 index c701d0a..0000000 --- a/webkit/api/src/DOMUtilitiesPrivate.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - */ - -#ifndef DOMUtilitiesPrivate_h -#define DOMUtilitiesPrivate_h - -namespace WebCore { -class HTMLInputElement; -class HTMLLinkElement; -class HTMLMetaElement; -class HTMLOptionElement; -class Node; -class String; -} - -// This file is an aggregate of useful WebCore operations. -namespace WebKit { - -// If node is an HTML node with a tag name of name it is casted and returned. -// If node is not an HTML node or the tag name is not name, 0 is returned. -WebCore::HTMLInputElement* toHTMLInputElement(WebCore::Node*); -WebCore::HTMLLinkElement* toHTMLLinkElement(WebCore::Node*); -WebCore::HTMLMetaElement* toHTMLMetaElement(WebCore::Node*); -WebCore::HTMLOptionElement* toHTMLOptionElement(WebCore::Node*); - -// Returns the name that should be used for the specified |element| when -// storing autofill data. This is either the field name or its id, an empty -// string if it has no name and no id. -WebCore::String nameOfInputElement(WebCore::HTMLInputElement*); - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/DragClientImpl.cpp b/webkit/api/src/DragClientImpl.cpp deleted file mode 100644 index 5d8a9c3..0000000 --- a/webkit/api/src/DragClientImpl.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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 "DragClientImpl.h" - -#include "ChromiumDataObject.h" -#include "ClipboardChromium.h" -#include "Frame.h" -#include "WebDragData.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" - -using namespace WebCore; - -namespace WebKit { - -void DragClientImpl::willPerformDragDestinationAction(DragDestinationAction, DragData*) -{ - // FIXME -} - -void DragClientImpl::willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) -{ - // FIXME -} - -DragDestinationAction DragClientImpl::actionMaskForDrag(DragData*) -{ - if (m_webView->client() && m_webView->client()->acceptsLoadDrops()) - return DragDestinationActionAny; - - return static_cast<DragDestinationAction>( - DragDestinationActionDHTML | DragDestinationActionEdit); -} - -DragSourceAction DragClientImpl::dragSourceActionMaskForPoint(const IntPoint& windowPoint) -{ - // We want to handle drag operations for all source types. - return DragSourceActionAny; -} - -void DragClientImpl::startDrag(DragImageRef dragImage, - const IntPoint& dragImageOrigin, - const IntPoint& eventPos, - Clipboard* clipboard, - Frame* frame, - bool isLinkDrag) -{ - // Add a ref to the frame just in case a load occurs mid-drag. - RefPtr<Frame> frameProtector = frame; - - WebDragData dragData = static_cast<ClipboardChromium*>(clipboard)->dataObject(); - - DragOperation dragOperationMask; - if (!clipboard->sourceOperation(dragOperationMask)) - dragOperationMask = DragOperationEvery; - - m_webView->startDragging( - eventPos, dragData, static_cast<WebDragOperationsMask>(dragOperationMask)); -} - -DragImageRef DragClientImpl::createDragImageForLink(KURL&, const String& label, Frame*) -{ - // FIXME - return 0; -} - -void DragClientImpl::dragControllerDestroyed() -{ - // Our lifetime is bound to the WebViewImpl. -} - -} // namespace WebKit diff --git a/webkit/api/src/DragClientImpl.h b/webkit/api/src/DragClientImpl.h deleted file mode 100644 index fc4c608..0000000 --- a/webkit/api/src/DragClientImpl.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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. - */ - -#ifndef DragClientImpl_h -#define DragClientImpl_h - -#include "DragActions.h" -#include "DragClient.h" - -namespace WebCore { -class ClipBoard; -class DragData; -class IntPoint; -class KURL; -} - -namespace WebKit { -class WebViewImpl; - -class DragClientImpl : public WebCore::DragClient { -public: - DragClientImpl(WebViewImpl* webView) : m_webView(webView) { } - - virtual void willPerformDragDestinationAction( - WebCore::DragDestinationAction, WebCore::DragData*); - virtual void willPerformDragSourceAction( - WebCore::DragSourceAction, const WebCore::IntPoint&, WebCore::Clipboard*); - virtual WebCore::DragDestinationAction actionMaskForDrag(WebCore::DragData*); - virtual WebCore::DragSourceAction dragSourceActionMaskForPoint( - const WebCore::IntPoint& windowPoint); - virtual void startDrag( - WebCore::DragImageRef dragImage, - const WebCore::IntPoint& dragImageOrigin, - const WebCore::IntPoint& eventPos, - WebCore::Clipboard* clipboard, - WebCore::Frame* frame, - bool isLinkDrag = false); - virtual WebCore::DragImageRef createDragImageForLink( - WebCore::KURL&, const WebCore::String& label, WebCore::Frame*); - virtual void dragControllerDestroyed(); - -private: - WebViewImpl* m_webView; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/EditorClientImpl.cpp b/webkit/api/src/EditorClientImpl.cpp deleted file mode 100644 index d84ce12..0000000 --- a/webkit/api/src/EditorClientImpl.cpp +++ /dev/null @@ -1,921 +0,0 @@ -/* - * Copyright (C) 2006, 2007 Apple, Inc. All rights reserved. - * 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: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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 "EditorClientImpl.h" - -#include "Document.h" -#include "EditCommand.h" -#include "Editor.h" -#include "EventHandler.h" -#include "EventNames.h" -#include "Frame.h" -#include "HTMLInputElement.h" -#include "HTMLNames.h" -#include "KeyboardCodes.h" -#include "KeyboardEvent.h" -#include "PlatformKeyboardEvent.h" -#include "PlatformString.h" -#include "RenderObject.h" - -#include "DOMUtilitiesPrivate.h" -#include "WebEditingAction.h" -#include "WebFrameImpl.h" -#include "WebKit.h" -#include "WebNode.h" -#include "WebPasswordAutocompleteListener.h" -#include "WebRange.h" -#include "WebTextAffinity.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" - -using namespace WebCore; - -namespace WebKit { - -// Arbitrary depth limit for the undo stack, to keep it from using -// unbounded memory. This is the maximum number of distinct undoable -// actions -- unbroken stretches of typed characters are coalesced -// into a single action. -static const size_t maximumUndoStackDepth = 1000; - -// The size above which we stop triggering autofill for an input text field -// (so to avoid sending long strings through IPC). -static const size_t maximumTextSizeForAutofill = 1000; - -EditorClientImpl::EditorClientImpl(WebViewImpl* webview) - : m_webView(webview) - , m_inRedo(false) - , m_backspaceOrDeletePressed(false) - , m_spellCheckThisFieldStatus(SpellCheckAutomatic) - , m_autofillTimer(this, &EditorClientImpl::doAutofill) -{ -} - -EditorClientImpl::~EditorClientImpl() -{ -} - -void EditorClientImpl::pageDestroyed() -{ - // Our lifetime is bound to the WebViewImpl. -} - -bool EditorClientImpl::shouldShowDeleteInterface(HTMLElement* elem) -{ - // Normally, we don't care to show WebCore's deletion UI, so we only enable - // it if in testing mode and the test specifically requests it by using this - // magic class name. - return WebKit::layoutTestMode() - && elem->getAttribute(HTMLNames::classAttr) == "needsDeletionUI"; -} - -bool EditorClientImpl::smartInsertDeleteEnabled() -{ - if (m_webView->client()) - return m_webView->client()->isSmartInsertDeleteEnabled(); - return true; -} - -bool EditorClientImpl::isSelectTrailingWhitespaceEnabled() -{ - if (m_webView->client()) - return m_webView->client()->isSelectTrailingWhitespaceEnabled(); -#if PLATFORM(WIN_OS) - return true; -#else - return false; -#endif -} - -bool EditorClientImpl::shouldSpellcheckByDefault() -{ - // Spellcheck should be enabled for all editable areas (such as textareas, - // contentEditable regions, and designMode docs), except text inputs. - const Frame* frame = m_webView->focusedWebCoreFrame(); - if (!frame) - return false; - const Editor* editor = frame->editor(); - if (!editor) - return false; - if (editor->spellCheckingEnabledInFocusedNode()) - return true; - const Document* document = frame->document(); - if (!document) - return false; - const Node* node = document->focusedNode(); - // If |node| is null, we default to allowing spellchecking. This is done in - // order to mitigate the issue when the user clicks outside the textbox, as a - // result of which |node| becomes null, resulting in all the spell check - // markers being deleted. Also, the Frame will decide not to do spellchecking - // if the user can't edit - so returning true here will not cause any problems - // to the Frame's behavior. - if (!node) - return true; - const RenderObject* renderer = node->renderer(); - if (!renderer) - return false; - - return !renderer->isTextField(); -} - -bool EditorClientImpl::isContinuousSpellCheckingEnabled() -{ - if (m_spellCheckThisFieldStatus == SpellCheckForcedOff) - return false; - if (m_spellCheckThisFieldStatus == SpellCheckForcedOn) - return true; - return shouldSpellcheckByDefault(); -} - -void EditorClientImpl::toggleContinuousSpellChecking() -{ - if (isContinuousSpellCheckingEnabled()) - m_spellCheckThisFieldStatus = SpellCheckForcedOff; - else - m_spellCheckThisFieldStatus = SpellCheckForcedOn; -} - -bool EditorClientImpl::isGrammarCheckingEnabled() -{ - return false; -} - -void EditorClientImpl::toggleGrammarChecking() -{ - notImplemented(); -} - -int EditorClientImpl::spellCheckerDocumentTag() -{ - ASSERT_NOT_REACHED(); - return 0; -} - -bool EditorClientImpl::isEditable() -{ - return false; -} - -bool EditorClientImpl::shouldBeginEditing(Range* range) -{ - if (m_webView->client()) - return m_webView->client()->shouldBeginEditing(WebRange(range)); - return true; -} - -bool EditorClientImpl::shouldEndEditing(Range* range) -{ - if (m_webView->client()) - return m_webView->client()->shouldEndEditing(WebRange(range)); - return true; -} - -bool EditorClientImpl::shouldInsertNode(Node* node, - Range* range, - EditorInsertAction action) -{ - if (m_webView->client()) { - return m_webView->client()->shouldInsertNode(WebNode(node), - WebRange(range), - static_cast<WebEditingAction>(action)); - } - return true; -} - -bool EditorClientImpl::shouldInsertText(const String& text, - Range* range, - EditorInsertAction action) -{ - if (m_webView->client()) { - return m_webView->client()->shouldInsertText(WebString(text), - WebRange(range), - static_cast<WebEditingAction>(action)); - } - return true; -} - - -bool EditorClientImpl::shouldDeleteRange(Range* range) -{ - if (m_webView->client()) - return m_webView->client()->shouldDeleteRange(WebRange(range)); - return true; -} - -bool EditorClientImpl::shouldChangeSelectedRange(Range* fromRange, - Range* toRange, - EAffinity affinity, - bool stillSelecting) -{ - if (m_webView->client()) { - return m_webView->client()->shouldChangeSelectedRange(WebRange(fromRange), - WebRange(toRange), - static_cast<WebTextAffinity>(affinity), - stillSelecting); - } - return true; -} - -bool EditorClientImpl::shouldApplyStyle(CSSStyleDeclaration* style, - Range* range) -{ - if (m_webView->client()) { - // FIXME: Pass a reference to the CSSStyleDeclaration somehow. - return m_webView->client()->shouldApplyStyle(WebString(), - WebRange(range)); - } - return true; -} - -bool EditorClientImpl::shouldMoveRangeAfterDelete(Range* range, - Range* rangeToBeReplaced) -{ - return true; -} - -void EditorClientImpl::didBeginEditing() -{ - if (m_webView->client()) - m_webView->client()->didBeginEditing(); -} - -void EditorClientImpl::respondToChangedSelection() -{ - if (m_webView->client()) { - Frame* frame = m_webView->focusedWebCoreFrame(); - if (frame) - m_webView->client()->didChangeSelection(!frame->selection()->isRange()); - } -} - -void EditorClientImpl::respondToChangedContents() -{ - if (m_webView->client()) - m_webView->client()->didChangeContents(); -} - -void EditorClientImpl::didEndEditing() -{ - if (m_webView->client()) - m_webView->client()->didEndEditing(); -} - -void EditorClientImpl::didWriteSelectionToPasteboard() -{ -} - -void EditorClientImpl::didSetSelectionTypesForPasteboard() -{ -} - -void EditorClientImpl::registerCommandForUndo(PassRefPtr<EditCommand> command) -{ - if (m_undoStack.size() == maximumUndoStackDepth) - m_undoStack.removeFirst(); // drop oldest item off the far end - if (!m_inRedo) - m_redoStack.clear(); - m_undoStack.append(command); -} - -void EditorClientImpl::registerCommandForRedo(PassRefPtr<EditCommand> command) -{ - m_redoStack.append(command); -} - -void EditorClientImpl::clearUndoRedoOperations() -{ - m_undoStack.clear(); - m_redoStack.clear(); -} - -bool EditorClientImpl::canUndo() const -{ - return !m_undoStack.isEmpty(); -} - -bool EditorClientImpl::canRedo() const -{ - return !m_redoStack.isEmpty(); -} - -void EditorClientImpl::undo() -{ - if (canUndo()) { - EditCommandStack::iterator back = --m_undoStack.end(); - RefPtr<EditCommand> command(*back); - m_undoStack.remove(back); - command->unapply(); - // unapply will call us back to push this command onto the redo stack. - } -} - -void EditorClientImpl::redo() -{ - if (canRedo()) { - EditCommandStack::iterator back = --m_redoStack.end(); - RefPtr<EditCommand> command(*back); - m_redoStack.remove(back); - - ASSERT(!m_inRedo); - m_inRedo = true; - command->reapply(); - // reapply will call us back to push this command onto the undo stack. - m_inRedo = false; - } -} - -// -// The below code was adapted from the WebKit file webview.cpp -// - -static const unsigned CtrlKey = 1 << 0; -static const unsigned AltKey = 1 << 1; -static const unsigned ShiftKey = 1 << 2; -static const unsigned MetaKey = 1 << 3; -#if PLATFORM(DARWIN) -// Aliases for the generic key defintions to make kbd shortcuts definitions more -// readable on OS X. -static const unsigned OptionKey = AltKey; - -// Do not use this constant for anything but cursor movement commands. Keys -// with cmd set have their |isSystemKey| bit set, so chances are the shortcut -// will not be executed. Another, less important, reason is that shortcuts -// defined in the renderer do not blink the menu item that they triggered. See -// http://crbug.com/25856 and the bugs linked from there for details. -static const unsigned CommandKey = MetaKey; -#endif - -// Keys with special meaning. These will be delegated to the editor using -// the execCommand() method -struct KeyDownEntry { - unsigned virtualKey; - unsigned modifiers; - const char* name; -}; - -struct KeyPressEntry { - unsigned charCode; - unsigned modifiers; - const char* name; -}; - -static const KeyDownEntry keyDownEntries[] = { - { VKEY_LEFT, 0, "MoveLeft" }, - { VKEY_LEFT, ShiftKey, "MoveLeftAndModifySelection" }, -#if PLATFORM(DARWIN) - { VKEY_LEFT, OptionKey, "MoveWordLeft" }, - { VKEY_LEFT, OptionKey | ShiftKey, - "MoveWordLeftAndModifySelection" }, -#else - { VKEY_LEFT, CtrlKey, "MoveWordLeft" }, - { VKEY_LEFT, CtrlKey | ShiftKey, - "MoveWordLeftAndModifySelection" }, -#endif - { VKEY_RIGHT, 0, "MoveRight" }, - { VKEY_RIGHT, ShiftKey, "MoveRightAndModifySelection" }, -#if PLATFORM(DARWIN) - { VKEY_RIGHT, OptionKey, "MoveWordRight" }, - { VKEY_RIGHT, OptionKey | ShiftKey, - "MoveWordRightAndModifySelection" }, -#else - { VKEY_RIGHT, CtrlKey, "MoveWordRight" }, - { VKEY_RIGHT, CtrlKey | ShiftKey, - "MoveWordRightAndModifySelection" }, -#endif - { VKEY_UP, 0, "MoveUp" }, - { VKEY_UP, ShiftKey, "MoveUpAndModifySelection" }, - { VKEY_PRIOR, ShiftKey, "MovePageUpAndModifySelection" }, - { VKEY_DOWN, 0, "MoveDown" }, - { VKEY_DOWN, ShiftKey, "MoveDownAndModifySelection" }, - { VKEY_NEXT, ShiftKey, "MovePageDownAndModifySelection" }, - { VKEY_PRIOR, 0, "MovePageUp" }, - { VKEY_NEXT, 0, "MovePageDown" }, - { VKEY_HOME, 0, "MoveToBeginningOfLine" }, - { VKEY_HOME, ShiftKey, - "MoveToBeginningOfLineAndModifySelection" }, -#if PLATFORM(DARWIN) - { VKEY_LEFT, CommandKey, "MoveToBeginningOfLine" }, - { VKEY_LEFT, CommandKey | ShiftKey, - "MoveToBeginningOfLineAndModifySelection" }, -#endif -#if PLATFORM(DARWIN) - { VKEY_UP, CommandKey, "MoveToBeginningOfDocument" }, - { VKEY_UP, CommandKey | ShiftKey, - "MoveToBeginningOfDocumentAndModifySelection" }, -#else - { VKEY_HOME, CtrlKey, "MoveToBeginningOfDocument" }, - { VKEY_HOME, CtrlKey | ShiftKey, - "MoveToBeginningOfDocumentAndModifySelection" }, -#endif - { VKEY_END, 0, "MoveToEndOfLine" }, - { VKEY_END, ShiftKey, "MoveToEndOfLineAndModifySelection" }, -#if PLATFORM(DARWIN) - { VKEY_DOWN, CommandKey, "MoveToEndOfDocument" }, - { VKEY_DOWN, CommandKey | ShiftKey, - "MoveToEndOfDocumentAndModifySelection" }, -#else - { VKEY_END, CtrlKey, "MoveToEndOfDocument" }, - { VKEY_END, CtrlKey | ShiftKey, - "MoveToEndOfDocumentAndModifySelection" }, -#endif -#if PLATFORM(DARWIN) - { VKEY_RIGHT, CommandKey, "MoveToEndOfLine" }, - { VKEY_RIGHT, CommandKey | ShiftKey, - "MoveToEndOfLineAndModifySelection" }, -#endif - { VKEY_BACK, 0, "DeleteBackward" }, - { VKEY_BACK, ShiftKey, "DeleteBackward" }, - { VKEY_DELETE, 0, "DeleteForward" }, -#if PLATFORM(DARWIN) - { VKEY_BACK, OptionKey, "DeleteWordBackward" }, - { VKEY_DELETE, OptionKey, "DeleteWordForward" }, -#else - { VKEY_BACK, CtrlKey, "DeleteWordBackward" }, - { VKEY_DELETE, CtrlKey, "DeleteWordForward" }, -#endif - { 'B', CtrlKey, "ToggleBold" }, - { 'I', CtrlKey, "ToggleItalic" }, - { 'U', CtrlKey, "ToggleUnderline" }, - { VKEY_ESCAPE, 0, "Cancel" }, - { VKEY_OEM_PERIOD, CtrlKey, "Cancel" }, - { VKEY_TAB, 0, "InsertTab" }, - { VKEY_TAB, ShiftKey, "InsertBacktab" }, - { VKEY_RETURN, 0, "InsertNewline" }, - { VKEY_RETURN, CtrlKey, "InsertNewline" }, - { VKEY_RETURN, AltKey, "InsertNewline" }, - { VKEY_RETURN, AltKey | ShiftKey, "InsertNewline" }, - { VKEY_RETURN, ShiftKey, "InsertLineBreak" }, - { VKEY_INSERT, CtrlKey, "Copy" }, - { VKEY_INSERT, ShiftKey, "Paste" }, - { VKEY_DELETE, ShiftKey, "Cut" }, -#if !PLATFORM(DARWIN) - // On OS X, we pipe these back to the browser, so that it can do menu item - // blinking. - { 'C', CtrlKey, "Copy" }, - { 'V', CtrlKey, "Paste" }, - { 'V', CtrlKey | ShiftKey, "PasteAndMatchStyle" }, - { 'X', CtrlKey, "Cut" }, - { 'A', CtrlKey, "SelectAll" }, - { 'Z', CtrlKey, "Undo" }, - { 'Z', CtrlKey | ShiftKey, "Redo" }, - { 'Y', CtrlKey, "Redo" }, -#endif -}; - -static const KeyPressEntry keyPressEntries[] = { - { '\t', 0, "InsertTab" }, - { '\t', ShiftKey, "InsertBacktab" }, - { '\r', 0, "InsertNewline" }, - { '\r', CtrlKey, "InsertNewline" }, - { '\r', ShiftKey, "InsertLineBreak" }, - { '\r', AltKey, "InsertNewline" }, - { '\r', AltKey | ShiftKey, "InsertNewline" }, -}; - -const char* EditorClientImpl::interpretKeyEvent(const KeyboardEvent* evt) -{ - const PlatformKeyboardEvent* keyEvent = evt->keyEvent(); - if (!keyEvent) - return ""; - - static HashMap<int, const char*>* keyDownCommandsMap = 0; - static HashMap<int, const char*>* keyPressCommandsMap = 0; - - if (!keyDownCommandsMap) { - keyDownCommandsMap = new HashMap<int, const char*>; - keyPressCommandsMap = new HashMap<int, const char*>; - - for (unsigned i = 0; i < arraysize(keyDownEntries); i++) { - keyDownCommandsMap->set(keyDownEntries[i].modifiers << 16 | keyDownEntries[i].virtualKey, - keyDownEntries[i].name); - } - - for (unsigned i = 0; i < arraysize(keyPressEntries); i++) { - keyPressCommandsMap->set(keyPressEntries[i].modifiers << 16 | keyPressEntries[i].charCode, - keyPressEntries[i].name); - } - } - - unsigned modifiers = 0; - if (keyEvent->shiftKey()) - modifiers |= ShiftKey; - if (keyEvent->altKey()) - modifiers |= AltKey; - if (keyEvent->ctrlKey()) - modifiers |= CtrlKey; - if (keyEvent->metaKey()) - modifiers |= MetaKey; - - if (keyEvent->type() == PlatformKeyboardEvent::RawKeyDown) { - int mapKey = modifiers << 16 | evt->keyCode(); - return mapKey ? keyDownCommandsMap->get(mapKey) : 0; - } - - int mapKey = modifiers << 16 | evt->charCode(); - return mapKey ? keyPressCommandsMap->get(mapKey) : 0; -} - -bool EditorClientImpl::handleEditingKeyboardEvent(KeyboardEvent* evt) -{ - const PlatformKeyboardEvent* keyEvent = evt->keyEvent(); - // do not treat this as text input if it's a system key event - if (!keyEvent || keyEvent->isSystemKey()) - return false; - - Frame* frame = evt->target()->toNode()->document()->frame(); - if (!frame) - return false; - - String commandName = interpretKeyEvent(evt); - Editor::Command command = frame->editor()->command(commandName); - - if (keyEvent->type() == PlatformKeyboardEvent::RawKeyDown) { - // WebKit doesn't have enough information about mode to decide how - // commands that just insert text if executed via Editor should be treated, - // so we leave it upon WebCore to either handle them immediately - // (e.g. Tab that changes focus) or let a keypress event be generated - // (e.g. Tab that inserts a Tab character, or Enter). - if (command.isTextInsertion() || commandName.isEmpty()) - return false; - if (command.execute(evt)) { - if (m_webView->client()) - m_webView->client()->didExecuteCommand(WebString(commandName)); - return true; - } - return false; - } - - if (command.execute(evt)) { - if (m_webView->client()) - m_webView->client()->didExecuteCommand(WebString(commandName)); - return true; - } - - // Here we need to filter key events. - // On Gtk/Linux, it emits key events with ASCII text and ctrl on for ctrl-<x>. - // In Webkit, EditorClient::handleKeyboardEvent in - // WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp drop such events. - // On Mac, it emits key events with ASCII text and meta on for Command-<x>. - // These key events should not emit text insert event. - // Alt key would be used to insert alternative character, so we should let - // through. Also note that Ctrl-Alt combination equals to AltGr key which is - // also used to insert alternative character. - // http://code.google.com/p/chromium/issues/detail?id=10846 - // Windows sets both alt and meta are on when "Alt" key pressed. - // http://code.google.com/p/chromium/issues/detail?id=2215 - // Also, we should not rely on an assumption that keyboards don't - // send ASCII characters when pressing a control key on Windows, - // which may be configured to do it so by user. - // See also http://en.wikipedia.org/wiki/Keyboard_Layout - // FIXME(ukai): investigate more detail for various keyboard layout. - if (evt->keyEvent()->text().length() == 1) { - UChar ch = evt->keyEvent()->text()[0U]; - - // Don't insert null or control characters as they can result in - // unexpected behaviour - if (ch < ' ') - return false; -#if !PLATFORM(WIN_OS) - // Don't insert ASCII character if ctrl w/o alt or meta is on. - // On Mac, we should ignore events when meta is on (Command-<x>). - if (ch < 0x80) { - if (evt->keyEvent()->ctrlKey() && !evt->keyEvent()->altKey()) - return false; -#if PLATFORM(DARWIN) - if (evt->keyEvent()->metaKey()) - return false; -#endif - } -#endif - } - - if (!frame->editor()->canEdit()) - return false; - - return frame->editor()->insertText(evt->keyEvent()->text(), evt); -} - -void EditorClientImpl::handleKeyboardEvent(KeyboardEvent* evt) -{ - if (evt->keyCode() == VKEY_DOWN - || evt->keyCode() == VKEY_UP) { - ASSERT(evt->target()->toNode()); - showFormAutofillForNode(evt->target()->toNode()); - } - - // Give the embedder a chance to handle the keyboard event. - if ((m_webView->client() - && m_webView->client()->handleCurrentKeyboardEvent()) - || handleEditingKeyboardEvent(evt)) - evt->setDefaultHandled(); -} - -void EditorClientImpl::handleInputMethodKeydown(KeyboardEvent* keyEvent) -{ - // We handle IME within chrome. -} - -void EditorClientImpl::textFieldDidBeginEditing(Element*) -{ -} - -void EditorClientImpl::textFieldDidEndEditing(Element* element) -{ - // Notification that focus was lost. Be careful with this, it's also sent - // when the page is being closed. - - // Cancel any pending DoAutofill call. - m_autofillArgs.clear(); - m_autofillTimer.stop(); - - // Hide any showing popup. - m_webView->hideAutoCompletePopup(); - - if (!m_webView->client()) - return; // The page is getting closed, don't fill the password. - - // Notify any password-listener of the focus change. - HTMLInputElement* inputElement = WebKit::toHTMLInputElement(element); - if (!inputElement) - return; - - WebFrameImpl* webframe = WebFrameImpl::fromFrame(inputElement->document()->frame()); - if (!webframe) - return; - - WebPasswordAutocompleteListener* listener = webframe->getPasswordListener(inputElement); - if (!listener) - return; - - listener->didBlurInputElement(inputElement->value()); -} - -void EditorClientImpl::textDidChangeInTextField(Element* element) -{ - ASSERT(element->hasLocalName(HTMLNames::inputTag)); - // Note that we only show the autofill popup in this case if the caret is at - // the end. This matches FireFox and Safari but not IE. - autofill(static_cast<HTMLInputElement*>(element), false, false, - true); -} - -bool EditorClientImpl::showFormAutofillForNode(Node* node) -{ - HTMLInputElement* inputElement = WebKit::toHTMLInputElement(node); - if (inputElement) - return autofill(inputElement, true, true, false); - return false; -} - -bool EditorClientImpl::autofill(HTMLInputElement* inputElement, - bool autofillFormOnly, - bool autofillOnEmptyValue, - bool requireCaretAtEnd) -{ - // Cancel any pending DoAutofill call. - m_autofillArgs.clear(); - m_autofillTimer.stop(); - - // Let's try to trigger autofill for that field, if applicable. - if (!inputElement->isEnabledFormControl() || !inputElement->isTextField() - || inputElement->isPasswordField() - || !inputElement->autoComplete()) - return false; - - WebString name = WebKit::nameOfInputElement(inputElement); - if (name.isEmpty()) // If the field has no name, then we won't have values. - return false; - - // Don't attempt to autofill with values that are too large. - if (inputElement->value().length() > maximumTextSizeForAutofill) - return false; - - m_autofillArgs = new AutofillArgs(); - m_autofillArgs->inputElement = inputElement; - m_autofillArgs->autofillFormOnly = autofillFormOnly; - m_autofillArgs->autofillOnEmptyValue = autofillOnEmptyValue; - m_autofillArgs->requireCaretAtEnd = requireCaretAtEnd; - m_autofillArgs->backspaceOrDeletePressed = m_backspaceOrDeletePressed; - - if (!requireCaretAtEnd) - doAutofill(0); - else { - // We post a task for doing the autofill as the caret position is not set - // properly at this point (http://bugs.webkit.org/show_bug.cgi?id=16976) - // and we need it to determine whether or not to trigger autofill. - m_autofillTimer.startOneShot(0.0); - } - return true; -} - -void EditorClientImpl::doAutofill(Timer<EditorClientImpl>* timer) -{ - OwnPtr<AutofillArgs> args(m_autofillArgs.release()); - HTMLInputElement* inputElement = args->inputElement.get(); - - const String& value = inputElement->value(); - - // Enforce autofill_on_empty_value and caret_at_end. - - bool isCaretAtEnd = true; - if (args->requireCaretAtEnd) - isCaretAtEnd = inputElement->selectionStart() == inputElement->selectionEnd() - && inputElement->selectionEnd() == static_cast<int>(value.length()); - - if ((!args->autofillOnEmptyValue && value.isEmpty()) || !isCaretAtEnd) { - m_webView->hideAutoCompletePopup(); - return; - } - - // First let's see if there is a password listener for that element. - // We won't trigger form autofill in that case, as having both behavior on - // a node would be confusing. - WebFrameImpl* webframe = WebFrameImpl::fromFrame(inputElement->document()->frame()); - if (!webframe) - return; - WebPasswordAutocompleteListener* listener = webframe->getPasswordListener(inputElement); - if (listener) { - if (args->autofillFormOnly) - return; - - listener->performInlineAutocomplete(value, - args->backspaceOrDeletePressed, - true); - return; - } - - // Then trigger form autofill. - WebString name = WebKit::nameOfInputElement(inputElement); - ASSERT(static_cast<int>(name.length()) > 0); - - if (m_webView->client()) - m_webView->client()->queryAutofillSuggestions(WebNode(inputElement), - name, WebString(value)); -} - -void EditorClientImpl::cancelPendingAutofill() -{ - m_autofillArgs.clear(); - m_autofillTimer.stop(); -} - -void EditorClientImpl::onAutofillSuggestionAccepted(HTMLInputElement* textField) -{ - WebFrameImpl* webframe = WebFrameImpl::fromFrame(textField->document()->frame()); - if (!webframe) - return; - - WebPasswordAutocompleteListener* listener = webframe->getPasswordListener(textField); - // Password listeners need to autocomplete other fields that depend on the - // input element with autofill suggestions. - if (listener) - listener->performInlineAutocomplete(textField->value(), false, false); -} - -bool EditorClientImpl::doTextFieldCommandFromEvent(Element* element, - KeyboardEvent* event) -{ - // Remember if backspace was pressed for the autofill. It is not clear how to - // find if backspace was pressed from textFieldDidBeginEditing and - // textDidChangeInTextField as when these methods are called the value of the - // input element already contains the type character. - m_backspaceOrDeletePressed = event->keyCode() == VKEY_BACK || event->keyCode() == VKEY_DELETE; - - // The Mac code appears to use this method as a hook to implement special - // keyboard commands specific to Safari's auto-fill implementation. We - // just return false to allow the default action. - return false; -} - -void EditorClientImpl::textWillBeDeletedInTextField(Element*) -{ -} - -void EditorClientImpl::textDidChangeInTextArea(Element*) -{ -} - -void EditorClientImpl::ignoreWordInSpellDocument(const String&) -{ - notImplemented(); -} - -void EditorClientImpl::learnWord(const String&) -{ - notImplemented(); -} - -void EditorClientImpl::checkSpellingOfString(const UChar* text, int length, - int* misspellingLocation, - int* misspellingLength) -{ - // SpellCheckWord will write (0, 0) into the output vars, which is what our - // caller expects if the word is spelled correctly. - int spellLocation = -1; - int spellLength = 0; - - // Check to see if the provided text is spelled correctly. - if (isContinuousSpellCheckingEnabled() && m_webView->client()) - m_webView->client()->spellCheck(WebString(text, length), spellLocation, spellLength); - else { - spellLocation = 0; - spellLength = 0; - } - - // Note: the Mac code checks if the pointers are null before writing to them, - // so we do too. - if (misspellingLocation) - *misspellingLocation = spellLocation; - if (misspellingLength) - *misspellingLength = spellLength; -} - -String EditorClientImpl::getAutoCorrectSuggestionForMisspelledWord(const String& misspelledWord) -{ - if (!(isContinuousSpellCheckingEnabled() && m_webView->client())) - return String(); - - // Do not autocorrect words with capital letters in it except the - // first letter. This will remove cases changing "IMB" to "IBM". - for (size_t i = 1; i < misspelledWord.length(); i++) { - if (u_isupper(static_cast<UChar32>(misspelledWord[i]))) - return String(); - } - - return m_webView->client()->autoCorrectWord(WebString(misspelledWord)); -} - -void EditorClientImpl::checkGrammarOfString(const UChar*, int length, - WTF::Vector<GrammarDetail>&, - int* badGrammarLocation, - int* badGrammarLength) -{ - notImplemented(); - if (badGrammarLocation) - *badGrammarLocation = 0; - if (badGrammarLength) - *badGrammarLength = 0; -} - -void EditorClientImpl::updateSpellingUIWithGrammarString(const String&, - const GrammarDetail& detail) -{ - notImplemented(); -} - -void EditorClientImpl::updateSpellingUIWithMisspelledWord(const String& misspelledWord) -{ - if (m_webView->client()) - m_webView->client()->updateSpellingUIWithMisspelledWord(WebString(misspelledWord)); -} - -void EditorClientImpl::showSpellingUI(bool show) -{ - if (m_webView->client()) - m_webView->client()->showSpellingUI(show); -} - -bool EditorClientImpl::spellingUIIsShowing() -{ - if (m_webView->client()) - return m_webView->client()->isShowingSpellingUI(); - return false; -} - -void EditorClientImpl::getGuessesForWord(const String&, - WTF::Vector<String>& guesses) -{ - notImplemented(); -} - -void EditorClientImpl::setInputMethodState(bool enabled) -{ - if (m_webView->client()) - m_webView->client()->setInputMethodEnabled(enabled); -} - -} // namesace WebKit diff --git a/webkit/api/src/EditorClientImpl.h b/webkit/api/src/EditorClientImpl.h deleted file mode 100644 index fd08b4d..0000000 --- a/webkit/api/src/EditorClientImpl.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - * 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. - */ - -#ifndef EditorClientImpl_h -#define EditorClientImpl_h - -#include "EditorClient.h" -#include "Timer.h" -#include <wtf/Deque.h> - -namespace WebCore { -class HTMLInputElement; -} - -namespace WebKit { -class WebViewImpl; - -class EditorClientImpl : public WebCore::EditorClient { -public: - EditorClientImpl(WebViewImpl* webView); - - virtual ~EditorClientImpl(); - virtual void pageDestroyed(); - - virtual bool shouldShowDeleteInterface(WebCore::HTMLElement*); - virtual bool smartInsertDeleteEnabled(); - virtual bool isSelectTrailingWhitespaceEnabled(); - virtual bool isContinuousSpellCheckingEnabled(); - virtual void toggleContinuousSpellChecking(); - virtual bool isGrammarCheckingEnabled(); - virtual void toggleGrammarChecking(); - virtual int spellCheckerDocumentTag(); - virtual bool isEditable(); - virtual bool shouldBeginEditing(WebCore::Range*); - virtual bool shouldEndEditing(WebCore::Range*); - virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction); - virtual bool shouldInsertText(const WebCore::String&, WebCore::Range*, WebCore::EditorInsertAction); - virtual bool shouldDeleteRange(WebCore::Range*); - virtual bool shouldChangeSelectedRange(WebCore::Range* fromRange, - WebCore::Range* toRange, - WebCore::EAffinity, - bool stillSelecting); - virtual bool shouldApplyStyle(WebCore::CSSStyleDeclaration*, WebCore::Range*); - virtual bool shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*); - virtual void didBeginEditing(); - virtual void respondToChangedContents(); - virtual void respondToChangedSelection(); - virtual void didEndEditing(); - virtual void didWriteSelectionToPasteboard(); - virtual void didSetSelectionTypesForPasteboard(); - virtual void registerCommandForUndo(PassRefPtr<WebCore::EditCommand>); - virtual void registerCommandForRedo(PassRefPtr<WebCore::EditCommand>); - virtual void clearUndoRedoOperations(); - virtual bool canUndo() const; - virtual bool canRedo() const; - virtual void undo(); - virtual void redo(); - virtual const char* interpretKeyEvent(const WebCore::KeyboardEvent*); - virtual bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*); - virtual void handleKeyboardEvent(WebCore::KeyboardEvent*); - virtual void handleInputMethodKeydown(WebCore::KeyboardEvent*); - virtual void textFieldDidBeginEditing(WebCore::Element*); - virtual void textFieldDidEndEditing(WebCore::Element*); - virtual void textDidChangeInTextField(WebCore::Element*); - virtual bool doTextFieldCommandFromEvent(WebCore::Element*, WebCore::KeyboardEvent*); - virtual void textWillBeDeletedInTextField(WebCore::Element*); - virtual void textDidChangeInTextArea(WebCore::Element*); - virtual void ignoreWordInSpellDocument(const WebCore::String&); - virtual void learnWord(const WebCore::String&); - virtual void checkSpellingOfString(const UChar*, int length, - int* misspellingLocation, - int* misspellingLength); - virtual void checkGrammarOfString(const UChar*, int length, - WTF::Vector<WebCore::GrammarDetail>&, - int* badGrammarLocation, - int* badGrammarLength); - virtual WebCore::String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&); - virtual void updateSpellingUIWithGrammarString(const WebCore::String&, const WebCore::GrammarDetail&); - virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&); - virtual void showSpellingUI(bool show); - virtual bool spellingUIIsShowing(); - virtual void getGuessesForWord(const WebCore::String& word, - WTF::Vector<WebCore::String>& guesses); - virtual void setInputMethodState(bool enabled); - - // Shows the form autofill popup for |node| if it is an HTMLInputElement and - // it is empty. This is called when you press the up or down arrow in a - // text-field or when clicking an already focused text-field. - // Returns true if the autofill popup has been scheduled to be shown, false - // otherwise. - virtual bool showFormAutofillForNode(WebCore::Node*); - - // Notification that the text changed due to acceptance of a suggestion - // provided by an autofill popup. Having a separate callback in this case - // is a simple way to break the cycle that would otherwise occur if - // textDidChangeInTextField was called. - virtual void onAutofillSuggestionAccepted(WebCore::HTMLInputElement*); - -private: - void modifySelection(WebCore::Frame*, WebCore::KeyboardEvent*); - - // Triggers autofill for an input element if applicable. This can be form - // autofill (via a popup-menu) or password autofill depending on the - // input element. If |formAutofillOnly| is true, password autofill is not - // triggered. - // |autofillOnEmptyValue| indicates whether the autofill should be shown - // when the text-field is empty. - // If |requiresCaretAtEnd| is true, the autofill popup is only shown if the - // caret is located at the end of the entered text. - // Returns true if the autofill popup has been scheduled to be shown, false - // otherwise. - bool autofill(WebCore::HTMLInputElement*, - bool formAutofillOnly, bool autofillOnEmptyValue, - bool requiresCaretAtEnd); - - // Called to process the autofill described by m_autofillArgs. - // This method is invoked asynchronously if the caret position is not - // reflecting the last text change yet, and we need it to decide whether or - // not to show the autofill popup. - void doAutofill(WebCore::Timer<EditorClientImpl>*); - - void cancelPendingAutofill(); - - // Returns whether or not the focused control needs spell-checking. - // Currently, this function just retrieves the focused node and determines - // whether or not it is a <textarea> element or an element whose - // contenteditable attribute is true. - // FIXME: Bug 740540: This code just implements the default behavior - // proposed in this issue. We should also retrieve "spellcheck" attributes - // for text fields and create a flag to over-write the default behavior. - bool shouldSpellcheckByDefault(); - - WebViewImpl* m_webView; - bool m_inRedo; - - typedef Deque<RefPtr<WebCore::EditCommand> > EditCommandStack; - EditCommandStack m_undoStack; - EditCommandStack m_redoStack; - - // Whether the last entered key was a backspace. - bool m_backspaceOrDeletePressed; - - // This flag is set to false if spell check for this editor is manually - // turned off. The default setting is SpellCheckAutomatic. - enum { - SpellCheckAutomatic, - SpellCheckForcedOn, - SpellCheckForcedOff - }; - int m_spellCheckThisFieldStatus; - - // Used to delay autofill processing. - WebCore::Timer<EditorClientImpl> m_autofillTimer; - - struct AutofillArgs { - RefPtr<WebCore::HTMLInputElement> inputElement; - bool autofillFormOnly; - bool autofillOnEmptyValue; - bool requireCaretAtEnd; - bool backspaceOrDeletePressed; - }; - OwnPtr<AutofillArgs> m_autofillArgs; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/FrameLoaderClientImpl.cpp b/webkit/api/src/FrameLoaderClientImpl.cpp deleted file mode 100644 index 2b4b1bc..0000000 --- a/webkit/api/src/FrameLoaderClientImpl.cpp +++ /dev/null @@ -1,1412 +0,0 @@ -/* - * 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 "FrameLoaderClientImpl.h" - -#include "Chrome.h" -#include "CString.h" -#include "Document.h" -#include "DocumentLoader.h" -#include "FormState.h" -#include "FrameLoader.h" -#include "FrameLoadRequest.h" -#include "HitTestResult.h" -#include "HTMLAppletElement.h" -#include "HTMLFormElement.h" // needed by FormState.h -#include "HTMLNames.h" -#include "MIMETypeRegistry.h" -#include "MouseEvent.h" -#include "Page.h" -#include "PlatformString.h" -#include "PluginData.h" -#include "StringExtras.h" -#include "WebDataSourceImpl.h" -#include "WebDevToolsAgentPrivate.h" -#include "WebFormElement.h" -#include "WebFrameClient.h" -#include "WebFrameImpl.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebMimeRegistry.h" -#include "WebNode.h" -#include "WebPlugin.h" -#include "WebPluginContainerImpl.h" -#include "WebPluginLoadObserver.h" -#include "WebPluginParams.h" -#include "WebSecurityOrigin.h" -#include "WebURL.h" -#include "WebURLError.h" -#include "WebVector.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" -#include "WindowFeatures.h" -#include "WrappedResourceRequest.h" -#include "WrappedResourceResponse.h" - -using namespace WebCore; - -namespace WebKit { - -// Domain for internal error codes. -static const char internalErrorDomain[] = "WebKit"; - -// An internal error code. Used to note a policy change error resulting from -// dispatchDecidePolicyForMIMEType not passing the PolicyUse option. -enum { - PolicyChangeError = -10000, -}; - -FrameLoaderClientImpl::FrameLoaderClientImpl(WebFrameImpl* frame) - : m_webFrame(frame) - , m_hasRepresentation(false) - , m_sentInitialResponseToPlugin(false) - , m_nextNavigationPolicy(WebNavigationPolicyIgnore) -{ -} - -FrameLoaderClientImpl::~FrameLoaderClientImpl() -{ -} - -void FrameLoaderClientImpl::frameLoaderDestroyed() -{ - // When the WebFrame was created, it had an extra reference given to it on - // behalf of the Frame. Since the WebFrame owns us, this extra ref also - // serves to keep us alive until the FrameLoader is done with us. The - // FrameLoader calls this method when it's going away. Therefore, we balance - // out that extra reference, which may cause 'this' to be deleted. - m_webFrame->closing(); - m_webFrame->deref(); -} - -void FrameLoaderClientImpl::windowObjectCleared() -{ - if (m_webFrame->client()) - m_webFrame->client()->didClearWindowObject(m_webFrame); - - WebViewImpl* webview = m_webFrame->viewImpl(); - if (webview->devToolsAgentPrivate()) - webview->devToolsAgentPrivate()->didClearWindowObject(m_webFrame); -} - -void FrameLoaderClientImpl::documentElementAvailable() -{ - if (m_webFrame->client()) - m_webFrame->client()->didCreateDocumentElement(m_webFrame); -} - -void FrameLoaderClientImpl::didCreateScriptContextForFrame() -{ - if (m_webFrame->client()) - m_webFrame->client()->didCreateScriptContext(m_webFrame); -} - -void FrameLoaderClientImpl::didDestroyScriptContextForFrame() -{ - if (m_webFrame->client()) - m_webFrame->client()->didDestroyScriptContext(m_webFrame); -} - -void FrameLoaderClientImpl::didCreateIsolatedScriptContext() -{ - if (m_webFrame->client()) - m_webFrame->client()->didCreateIsolatedScriptContext(m_webFrame); -} - -void FrameLoaderClientImpl::didPerformFirstNavigation() const -{ -} - -void FrameLoaderClientImpl::registerForIconNotification(bool) -{ -} - -void FrameLoaderClientImpl::didChangeScrollOffset() -{ - if (m_webFrame->client()) - m_webFrame->client()->didChangeScrollOffset(m_webFrame); -} - -bool FrameLoaderClientImpl::allowJavaScript(bool enabledPerSettings) -{ - if (m_webFrame->client()) - return m_webFrame->client()->allowScript(m_webFrame, enabledPerSettings); - - return enabledPerSettings; -} - -bool FrameLoaderClientImpl::hasWebView() const -{ - return m_webFrame->viewImpl(); -} - -bool FrameLoaderClientImpl::hasFrameView() const -{ - // The Mac port has this notion of a WebFrameView, which seems to be - // some wrapper around an NSView. Since our equivalent is HWND, I guess - // we have a "frameview" whenever we have the toplevel HWND. - return m_webFrame->viewImpl(); -} - -void FrameLoaderClientImpl::makeDocumentView() -{ - m_webFrame->createFrameView(); -} - -void FrameLoaderClientImpl::makeRepresentation(DocumentLoader*) -{ - m_hasRepresentation = true; -} - -void FrameLoaderClientImpl::forceLayout() -{ - // FIXME -} - -void FrameLoaderClientImpl::forceLayoutForNonHTML() -{ - // FIXME -} - -void FrameLoaderClientImpl::setCopiesOnScroll() -{ - // FIXME -} - -void FrameLoaderClientImpl::detachedFromParent2() -{ - // Nothing to do here. -} - -void FrameLoaderClientImpl::detachedFromParent3() -{ - // Close down the proxy. The purpose of this change is to make the - // call to ScriptController::clearWindowShell a no-op when called from - // Frame::pageDestroyed. Without this change, this call to clearWindowShell - // will cause a crash. If you remove/modify this, just ensure that you can - // go to a page and then navigate to a new page without getting any asserts - // or crashes. - m_webFrame->frame()->script()->proxy()->clearForClose(); -} - -// This function is responsible for associating the |identifier| with a given -// subresource load. The following functions that accept an |identifier| are -// called for each subresource, so they should not be dispatched to the -// WebFrame. -void FrameLoaderClientImpl::assignIdentifierToInitialRequest( - unsigned long identifier, DocumentLoader* loader, - const ResourceRequest& request) -{ - if (m_webFrame->client()) { - WrappedResourceRequest webreq(request); - m_webFrame->client()->assignIdentifierToRequest( - m_webFrame, identifier, webreq); - } -} - -// Determines whether the request being loaded by |loader| is a frame or a -// subresource. A subresource in this context is anything other than a frame -- -// this includes images and xmlhttp requests. It is important to note that a -// subresource is NOT limited to stuff loaded through the frame's subresource -// loader. Synchronous xmlhttp requests for example, do not go through the -// subresource loader, but we still label them as TargetIsSubResource. -// -// The important edge cases to consider when modifying this function are -// how synchronous resource loads are treated during load/unload threshold. -static ResourceRequest::TargetType determineTargetTypeFromLoader(DocumentLoader* loader) -{ - if (loader == loader->frameLoader()->provisionalDocumentLoader()) { - if (loader->frameLoader()->isLoadingMainFrame()) - return ResourceRequest::TargetIsMainFrame; - return ResourceRequest::TargetIsSubFrame; - } - return ResourceRequest::TargetIsSubResource; -} - -void FrameLoaderClientImpl::dispatchWillSendRequest( - DocumentLoader* loader, unsigned long identifier, ResourceRequest& request, - const ResourceResponse& redirectResponse) -{ - if (loader) { - // We want to distinguish between a request for a document to be loaded into - // the main frame, a sub-frame, or the sub-objects in that document. - request.setTargetType(determineTargetTypeFromLoader(loader)); - } - - // FrameLoader::loadEmptyDocumentSynchronously() creates an empty document - // with no URL. We don't like that, so we'll rename it to about:blank. - if (request.url().isEmpty()) - request.setURL(KURL(ParsedURLString, "about:blank")); - if (request.firstPartyForCookies().isEmpty()) - request.setFirstPartyForCookies(KURL(ParsedURLString, "about:blank")); - - // Give the WebFrameClient a crack at the request. - if (m_webFrame->client()) { - WrappedResourceRequest webreq(request); - WrappedResourceResponse webresp(redirectResponse); - m_webFrame->client()->willSendRequest( - m_webFrame, identifier, webreq, webresp); - } -} - -bool FrameLoaderClientImpl::shouldUseCredentialStorage( - DocumentLoader*, unsigned long identifier) -{ - // FIXME - // Intended to pass through to a method on the resource load delegate. - // If implemented, that method controls whether the browser should ask the - // networking layer for a stored default credential for the page (say from - // the Mac OS keychain). If the method returns false, the user should be - // presented with an authentication challenge whether or not the networking - // layer has a credential stored. - // This returns true for backward compatibility: the ability to override the - // system credential store is new. (Actually, not yet fully implemented in - // WebKit, as of this writing.) - return true; -} - -void FrameLoaderClientImpl::dispatchDidReceiveAuthenticationChallenge( - DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) -{ - // FIXME -} - -void FrameLoaderClientImpl::dispatchDidCancelAuthenticationChallenge( - DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) -{ - // FIXME -} - -void FrameLoaderClientImpl::dispatchDidReceiveResponse(DocumentLoader* loader, - unsigned long identifier, - const ResourceResponse& response) -{ - if (m_webFrame->client()) { - WrappedResourceResponse webresp(response); - m_webFrame->client()->didReceiveResponse(m_webFrame, identifier, webresp); - } -} - -void FrameLoaderClientImpl::dispatchDidReceiveContentLength( - DocumentLoader* loader, - unsigned long identifier, - int lengthReceived) -{ -} - -// Called when a particular resource load completes -void FrameLoaderClientImpl::dispatchDidFinishLoading(DocumentLoader* loader, - unsigned long identifier) -{ - if (m_webFrame->client()) - m_webFrame->client()->didFinishResourceLoad(m_webFrame, identifier); -} - -void FrameLoaderClientImpl::dispatchDidFailLoading(DocumentLoader* loader, - unsigned long identifier, - const ResourceError& error) -{ - if (m_webFrame->client()) - m_webFrame->client()->didFailResourceLoad(m_webFrame, identifier, error); -} - -void FrameLoaderClientImpl::dispatchDidFinishDocumentLoad() -{ - // A frame may be reused. This call ensures we don't hold on to our password - // listeners and their associated HTMLInputElements. - m_webFrame->clearPasswordListeners(); - - if (m_webFrame->client()) - m_webFrame->client()->didFinishDocumentLoad(m_webFrame); -} - -bool FrameLoaderClientImpl::dispatchDidLoadResourceFromMemoryCache( - DocumentLoader* loader, - const ResourceRequest& request, - const ResourceResponse& response, - int length) -{ - if (m_webFrame->client()) { - WrappedResourceRequest webreq(request); - WrappedResourceResponse webresp(response); - m_webFrame->client()->didLoadResourceFromMemoryCache( - m_webFrame, webreq, webresp); - } - return false; // Do not suppress remaining notifications -} - -void FrameLoaderClientImpl::dispatchDidLoadResourceByXMLHttpRequest( - unsigned long identifier, - const ScriptString& source) -{ -} - -void FrameLoaderClientImpl::dispatchDidHandleOnloadEvents() -{ - if (m_webFrame->client()) - m_webFrame->client()->didHandleOnloadEvents(m_webFrame); -} - -// Redirect Tracking -// ================= -// We want to keep track of the chain of redirects that occur during page -// loading. There are two types of redirects, server redirects which are HTTP -// response codes, and client redirects which are document.location= and meta -// refreshes. -// -// This outlines the callbacks that we get in different redirect situations, -// and how each call modifies the redirect chain. -// -// Normal page load -// ---------------- -// dispatchDidStartProvisionalLoad() -> adds URL to the redirect list -// dispatchDidCommitLoad() -> DISPATCHES & clears list -// -// Server redirect (success) -// ------------------------- -// dispatchDidStartProvisionalLoad() -> adds source URL -// dispatchDidReceiveServerRedirectForProvisionalLoad() -> adds dest URL -// dispatchDidCommitLoad() -> DISPATCHES -// -// Client redirect (success) -// ------------------------- -// (on page) -// dispatchWillPerformClientRedirect() -> saves expected redirect -// dispatchDidStartProvisionalLoad() -> appends redirect source (since -// it matches the expected redirect) -// and the current page as the dest) -// dispatchDidCancelClientRedirect() -> clears expected redirect -// dispatchDidCommitLoad() -> DISPATCHES -// -// Client redirect (cancelled) -// (e.g meta-refresh trumped by manual doc.location change, or just cancelled -// because a link was clicked that requires the meta refresh to be rescheduled -// (the SOURCE URL may have changed). -// --------------------------- -// dispatchDidCancelClientRedirect() -> clears expected redirect -// dispatchDidStartProvisionalLoad() -> adds only URL to redirect list -// dispatchDidCommitLoad() -> DISPATCHES & clears list -// rescheduled ? dispatchWillPerformClientRedirect() -> saves expected redirect -// : nothing - -// Client redirect (failure) -// ------------------------- -// (on page) -// dispatchWillPerformClientRedirect() -> saves expected redirect -// dispatchDidStartProvisionalLoad() -> appends redirect source (since -// it matches the expected redirect) -// and the current page as the dest) -// dispatchDidCancelClientRedirect() -// dispatchDidFailProvisionalLoad() -// -// Load 1 -> Server redirect to 2 -> client redirect to 3 -> server redirect to 4 -// ------------------------------------------------------------------------------ -// dispatchDidStartProvisionalLoad() -> adds source URL 1 -// dispatchDidReceiveServerRedirectForProvisionalLoad() -> adds dest URL 2 -// dispatchDidCommitLoad() -> DISPATCHES 1+2 -// -- begin client redirect and NEW DATA SOURCE -// dispatchWillPerformClientRedirect() -> saves expected redirect -// dispatchDidStartProvisionalLoad() -> appends URL 2 and URL 3 -// dispatchDidReceiveServerRedirectForProvisionalLoad() -> appends destination URL 4 -// dispatchDidCancelClientRedirect() -> clears expected redirect -// dispatchDidCommitLoad() -> DISPATCHES -// -// Interesting case with multiple location changes involving anchors. -// Load page 1 containing future client-redirect (back to 1, e.g meta refresh) > Click -// on a link back to the same page (i.e an anchor href) > -// client-redirect finally fires (with new source, set to 1#anchor) -// ----------------------------------------------------------------------------- -// dispatchWillPerformClientRedirect(non-zero 'interval' param) -> saves expected redirect -// -- click on anchor href -// dispatchDidCancelClientRedirect() -> clears expected redirect -// dispatchDidStartProvisionalLoad() -> adds 1#anchor source -// dispatchDidCommitLoad() -> DISPATCHES 1#anchor -// dispatchWillPerformClientRedirect() -> saves exp. source (1#anchor) -// -- redirect timer fires -// dispatchDidStartProvisionalLoad() -> appends 1#anchor (src) and 1 (dest) -// dispatchDidCancelClientRedirect() -> clears expected redirect -// dispatchDidCommitLoad() -> DISPATCHES 1#anchor + 1 -// -void FrameLoaderClientImpl::dispatchDidReceiveServerRedirectForProvisionalLoad() -{ - WebDataSourceImpl* ds = m_webFrame->provisionalDataSourceImpl(); - if (!ds) { - // Got a server redirect when there is no provisional DS! - ASSERT_NOT_REACHED(); - return; - } - - // The server redirect may have been blocked. - if (ds->request().isNull()) - return; - - // A provisional load should have started already, which should have put an - // entry in our redirect chain. - ASSERT(ds->hasRedirectChain()); - - // The URL of the destination is on the provisional data source. We also need - // to update the redirect chain to account for this addition (we do this - // before the callback so the callback can look at the redirect chain to see - // what happened). - ds->appendRedirect(ds->request().url()); - - if (m_webFrame->client()) - m_webFrame->client()->didReceiveServerRedirectForProvisionalLoad(m_webFrame); -} - -// Called on both success and failure of a client redirect. -void FrameLoaderClientImpl::dispatchDidCancelClientRedirect() -{ - // No longer expecting a client redirect. - if (m_webFrame->client()) { - m_expectedClientRedirectSrc = KURL(); - m_expectedClientRedirectDest = KURL(); - m_webFrame->client()->didCancelClientRedirect(m_webFrame); - } - - // No need to clear the redirect chain, since that data source has already - // been deleted by the time this function is called. -} - -void FrameLoaderClientImpl::dispatchWillPerformClientRedirect( - const KURL& url, - double interval, - double fireDate) -{ - // Tells dispatchDidStartProvisionalLoad that if it sees this item it is a - // redirect and the source item should be added as the start of the chain. - m_expectedClientRedirectSrc = m_webFrame->url(); - m_expectedClientRedirectDest = url; - - // FIXME: bug 1135512. Webkit does not properly notify us of cancelling - // http > file client redirects. Since the FrameLoader's policy is to never - // carry out such a navigation anyway, the best thing we can do for now to - // not get confused is ignore this notification. - if (m_expectedClientRedirectDest.isLocalFile() - && m_expectedClientRedirectSrc.protocolInHTTPFamily()) { - m_expectedClientRedirectSrc = KURL(); - m_expectedClientRedirectDest = KURL(); - return; - } - - if (m_webFrame->client()) { - m_webFrame->client()->willPerformClientRedirect( - m_webFrame, - m_expectedClientRedirectSrc, - m_expectedClientRedirectDest, - static_cast<unsigned int>(interval), - static_cast<unsigned int>(fireDate)); - } -} - -void FrameLoaderClientImpl::dispatchDidChangeLocationWithinPage() -{ - // Anchor fragment navigations are not normal loads, so we need to synthesize - // some events for our delegate. - WebViewImpl* webView = m_webFrame->viewImpl(); - if (webView->client()) - webView->client()->didStartLoading(); - - WebDataSourceImpl* ds = m_webFrame->dataSourceImpl(); - ASSERT(ds); // Should not be null when navigating to a reference fragment! - if (ds) { - KURL url = ds->request().url(); - KURL chainEnd; - if (ds->hasRedirectChain()) { - chainEnd = ds->endOfRedirectChain(); - ds->clearRedirectChain(); - } - - // Figure out if this location change is because of a JS-initiated - // client redirect (e.g onload/setTimeout document.location.href=). - // FIXME: (bugs 1085325, 1046841) We don't get proper redirect - // performed/cancelled notifications across anchor navigations, so the - // other redirect-tracking code in this class (see - // dispatch*ClientRedirect() and dispatchDidStartProvisionalLoad) is - // insufficient to catch and properly flag these transitions. Once a - // proper fix for this bug is identified and applied the following - // block may no longer be required. - bool wasClientRedirect = - (url == m_expectedClientRedirectDest && chainEnd == m_expectedClientRedirectSrc) - || !m_webFrame->isProcessingUserGesture(); - - if (wasClientRedirect) { - if (m_webFrame->client()) - m_webFrame->client()->didCompleteClientRedirect(m_webFrame, chainEnd); - ds->appendRedirect(chainEnd); - // Make sure we clear the expected redirect since we just effectively - // completed it. - m_expectedClientRedirectSrc = KURL(); - m_expectedClientRedirectDest = KURL(); - } - - // Regardless of how we got here, we are navigating to a URL so we need to - // add it to the redirect chain. - ds->appendRedirect(url); - } - - bool isNewNavigation; - webView->didCommitLoad(&isNewNavigation); - if (m_webFrame->client()) - m_webFrame->client()->didChangeLocationWithinPage(m_webFrame, isNewNavigation); - - if (webView->client()) - webView->client()->didStopLoading(); -} - -void FrameLoaderClientImpl::dispatchWillClose() -{ - if (m_webFrame->client()) - m_webFrame->client()->willClose(m_webFrame); -} - -void FrameLoaderClientImpl::dispatchDidReceiveIcon() -{ - // The icon database is disabled, so this should never be called. - ASSERT_NOT_REACHED(); -} - -void FrameLoaderClientImpl::dispatchDidStartProvisionalLoad() -{ - // In case a redirect occurs, we need this to be set so that the redirect - // handling code can tell where the redirect came from. Server redirects - // will occur on the provisional load, so we need to keep track of the most - // recent provisional load URL. - // See dispatchDidReceiveServerRedirectForProvisionalLoad. - WebDataSourceImpl* ds = m_webFrame->provisionalDataSourceImpl(); - if (!ds) { - ASSERT_NOT_REACHED(); - return; - } - KURL url = ds->request().url(); - - // Since the provisional load just started, we should have not gotten - // any redirects yet. - ASSERT(!ds->hasRedirectChain()); - - // If this load is what we expected from a client redirect, treat it as a - // redirect from that original page. The expected redirect urls will be - // cleared by DidCancelClientRedirect. - bool completingClientRedirect = false; - if (m_expectedClientRedirectSrc.isValid()) { - // m_expectedClientRedirectDest could be something like - // "javascript:history.go(-1)" thus we need to exclude url starts with - // "javascript:". See bug: 1080873 - ASSERT(m_expectedClientRedirectDest.protocolIs("javascript") - || m_expectedClientRedirectDest == url); - ds->appendRedirect(m_expectedClientRedirectSrc); - completingClientRedirect = true; - } - ds->appendRedirect(url); - - if (m_webFrame->client()) { - // Whatever information didCompleteClientRedirect contains should only - // be considered relevant until the next provisional load has started. - // So we first tell the client that the load started, and then tell it - // about the client redirect the load is responsible for completing. - m_webFrame->client()->didStartProvisionalLoad(m_webFrame); - if (completingClientRedirect) { - m_webFrame->client()->didCompleteClientRedirect( - m_webFrame, m_expectedClientRedirectSrc); - } - } -} - -void FrameLoaderClientImpl::dispatchDidReceiveTitle(const String& title) -{ - if (m_webFrame->client()) - m_webFrame->client()->didReceiveTitle(m_webFrame, title); -} - -void FrameLoaderClientImpl::dispatchDidCommitLoad() -{ - WebViewImpl* webview = m_webFrame->viewImpl(); - bool isNewNavigation; - webview->didCommitLoad(&isNewNavigation); - - if (m_webFrame->client()) - m_webFrame->client()->didCommitProvisionalLoad(m_webFrame, isNewNavigation); - - if (webview->devToolsAgentPrivate()) - webview->devToolsAgentPrivate()->didCommitProvisionalLoad(m_webFrame, isNewNavigation); -} - -void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad( - const ResourceError& error) -{ - - // If a policy change occured, then we do not want to inform the plugin - // delegate. See http://b/907789 for details. FIXME: This means the - // plugin won't receive NPP_URLNotify, which seems like it could result in - // a memory leak in the plugin!! - if (error.domain() == internalErrorDomain - && error.errorCode() == PolicyChangeError) { - m_webFrame->didFail(cancelledError(error.failingURL()), true); - return; - } - - OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(); - m_webFrame->didFail(error, true); - if (observer) - observer->didFailLoading(error); -} - -void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error) -{ - OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(); - m_webFrame->didFail(error, false); - if (observer) - observer->didFailLoading(error); - - // Don't clear the redirect chain, this will happen in the middle of client - // redirects, and we need the context. The chain will be cleared when the - // provisional load succeeds or fails, not the "real" one. -} - -void FrameLoaderClientImpl::dispatchDidFinishLoad() -{ - OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(); - - if (m_webFrame->client()) - m_webFrame->client()->didFinishLoad(m_webFrame); - - if (observer) - observer->didFinishLoading(); - - // Don't clear the redirect chain, this will happen in the middle of client - // redirects, and we need the context. The chain will be cleared when the - // provisional load succeeds or fails, not the "real" one. -} - -void FrameLoaderClientImpl::dispatchDidFirstLayout() -{ -} - -void FrameLoaderClientImpl::dispatchDidFirstVisuallyNonEmptyLayout() -{ - // FIXME: called when webkit finished layout of a page that was visually non-empty. - // All resources have not necessarily finished loading. -} - -Frame* FrameLoaderClientImpl::dispatchCreatePage() -{ - struct WindowFeatures features; - Page* newPage = m_webFrame->frame()->page()->chrome()->createWindow( - m_webFrame->frame(), FrameLoadRequest(), features); - - // Make sure that we have a valid disposition. This should have been set in - // the preceeding call to dispatchDecidePolicyForNewWindowAction. - ASSERT(m_nextNavigationPolicy != WebNavigationPolicyIgnore); - WebNavigationPolicy policy = m_nextNavigationPolicy; - m_nextNavigationPolicy = WebNavigationPolicyIgnore; - - // createWindow can return null (e.g., popup blocker denies the window). - if (!newPage) - return 0; - - WebViewImpl::fromPage(newPage)->setInitialNavigationPolicy(policy); - return newPage->mainFrame(); -} - -void FrameLoaderClientImpl::dispatchShow() -{ - WebViewImpl* webView = m_webFrame->viewImpl(); - if (webView && webView->client()) - webView->client()->show(webView->initialNavigationPolicy()); -} - -static bool shouldTreatAsAttachment(const ResourceResponse& response) -{ - const String& contentDisposition = - response.httpHeaderField("Content-Disposition"); - if (contentDisposition.isEmpty()) - return false; - - // Some broken sites just send - // Content-Disposition: ; filename="file" - // screen those out here. - if (contentDisposition.startsWith(";")) - return false; - - if (contentDisposition.startsWith("inline", false)) - return false; - - // Some broken sites just send - // Content-Disposition: filename="file" - // without a disposition token... screen those out. - if (contentDisposition.startsWith("filename", false)) - return false; - - // Also in use is Content-Disposition: name="file" - if (contentDisposition.startsWith("name", false)) - return false; - - // We have a content-disposition of "attachment" or unknown. - // RFC 2183, section 2.8 says that an unknown disposition - // value should be treated as "attachment" - return true; -} - -void FrameLoaderClientImpl::dispatchDecidePolicyForMIMEType( - FramePolicyFunction function, - const String& mimeType, - const ResourceRequest&) -{ - const ResourceResponse& response = - m_webFrame->frame()->loader()->activeDocumentLoader()->response(); - - PolicyAction action; - - int statusCode = response.httpStatusCode(); - if (statusCode == 204 || statusCode == 205) { - // The server does not want us to replace the page contents. - action = PolicyIgnore; - } else if (shouldTreatAsAttachment(response)) { - // The server wants us to download instead of replacing the page contents. - // Downloading is handled by the embedder, but we still get the initial - // response so that we can ignore it and clean up properly. - action = PolicyIgnore; - } else if (!canShowMIMEType(mimeType)) { - // Make sure that we can actually handle this type internally. - action = PolicyIgnore; - } else { - // OK, we will render this page. - action = PolicyUse; - } - - // NOTE: PolicyChangeError will be generated when action is not PolicyUse. - (m_webFrame->frame()->loader()->policyChecker()->*function)(action); -} - -void FrameLoaderClientImpl::dispatchDecidePolicyForNewWindowAction( - FramePolicyFunction function, - const NavigationAction& action, - const ResourceRequest& request, - PassRefPtr<FormState> formState, - const String& frameName) -{ - WebNavigationPolicy navigationPolicy; - if (!actionSpecifiesNavigationPolicy(action, &navigationPolicy)) - navigationPolicy = WebNavigationPolicyNewForegroundTab; - - PolicyAction policyAction; - if (navigationPolicy == WebNavigationPolicyDownload) - policyAction = PolicyDownload; - else { - policyAction = PolicyUse; - - // Remember the disposition for when dispatchCreatePage is called. It is - // unfortunate that WebCore does not provide us with any context when - // creating or showing the new window that would allow us to avoid having - // to keep this state. - m_nextNavigationPolicy = navigationPolicy; - } - (m_webFrame->frame()->loader()->policyChecker()->*function)(policyAction); -} - -void FrameLoaderClientImpl::dispatchDecidePolicyForNavigationAction( - FramePolicyFunction function, - const NavigationAction& action, - const ResourceRequest& request, - PassRefPtr<FormState> formState) { - PolicyAction policyAction = PolicyIgnore; - - // It is valid for this function to be invoked in code paths where the - // the webview is closed. - // The null check here is to fix a crash that seems strange - // (see - https://bugs.webkit.org/show_bug.cgi?id=23554). - if (m_webFrame->client() && !request.url().isNull()) { - WebNavigationPolicy navigationPolicy = WebNavigationPolicyCurrentTab; - actionSpecifiesNavigationPolicy(action, &navigationPolicy); - - // Give the delegate a chance to change the navigation policy. - const WebDataSourceImpl* ds = m_webFrame->provisionalDataSourceImpl(); - if (ds) { - KURL url = ds->request().url(); - if (url.protocolIs(backForwardNavigationScheme)) { - handleBackForwardNavigation(url); - navigationPolicy = WebNavigationPolicyIgnore; - } else { - bool isRedirect = ds->hasRedirectChain(); - - WebNavigationType webnavType = - WebDataSourceImpl::toWebNavigationType(action.type()); - - RefPtr<Node> node; - for (const Event* event = action.event(); event; event = event->underlyingEvent()) { - if (event->isMouseEvent()) { - const MouseEvent* mouseEvent = - static_cast<const MouseEvent*>(event); - node = m_webFrame->frame()->eventHandler()->hitTestResultAtPoint( - mouseEvent->absoluteLocation(), false).innerNonSharedNode(); - break; - } - } - WebNode originatingNode(node); - - navigationPolicy = m_webFrame->client()->decidePolicyForNavigation( - m_webFrame, ds->request(), webnavType, originatingNode, - navigationPolicy, isRedirect); - } - } - - if (navigationPolicy == WebNavigationPolicyCurrentTab) - policyAction = PolicyUse; - else if (navigationPolicy == WebNavigationPolicyDownload) - policyAction = PolicyDownload; - else { - if (navigationPolicy != WebNavigationPolicyIgnore) { - WrappedResourceRequest webreq(request); - m_webFrame->client()->loadURLExternally(m_webFrame, webreq, navigationPolicy); - } - policyAction = PolicyIgnore; - } - } - - (m_webFrame->frame()->loader()->policyChecker()->*function)(policyAction); -} - -void FrameLoaderClientImpl::cancelPolicyCheck() -{ - // FIXME -} - -void FrameLoaderClientImpl::dispatchUnableToImplementPolicy(const ResourceError& error) -{ - m_webFrame->client()->unableToImplementPolicyWithError(m_webFrame, error); -} - -void FrameLoaderClientImpl::dispatchWillSubmitForm(FramePolicyFunction function, - PassRefPtr<FormState> formState) -{ - if (m_webFrame->client()) - m_webFrame->client()->willSubmitForm(m_webFrame, WebFormElement(formState->form())); - (m_webFrame->frame()->loader()->policyChecker()->*function)(PolicyUse); -} - -void FrameLoaderClientImpl::dispatchDidLoadMainResource(DocumentLoader*) -{ - // FIXME -} - -void FrameLoaderClientImpl::revertToProvisionalState(DocumentLoader*) -{ - m_hasRepresentation = true; -} - -void FrameLoaderClientImpl::setMainDocumentError(DocumentLoader*, - const ResourceError& error) -{ - if (m_pluginWidget.get()) { - if (m_sentInitialResponseToPlugin) { - m_pluginWidget->didFailLoading(error); - m_sentInitialResponseToPlugin = false; - } - m_pluginWidget = 0; - } -} - -void FrameLoaderClientImpl::postProgressStartedNotification() -{ - WebViewImpl* webview = m_webFrame->viewImpl(); - if (webview && webview->client()) - webview->client()->didStartLoading(); -} - -void FrameLoaderClientImpl::postProgressEstimateChangedNotification() -{ - // FIXME -} - -void FrameLoaderClientImpl::postProgressFinishedNotification() -{ - // FIXME: why might the webview be null? http://b/1234461 - WebViewImpl* webview = m_webFrame->viewImpl(); - if (webview && webview->client()) - webview->client()->didStopLoading(); -} - -void FrameLoaderClientImpl::setMainFrameDocumentReady(bool ready) -{ - // FIXME -} - -// Creates a new connection and begins downloading from that (contrast this -// with |download|). -void FrameLoaderClientImpl::startDownload(const ResourceRequest& request) -{ - if (m_webFrame->client()) { - WrappedResourceRequest webreq(request); - m_webFrame->client()->loadURLExternally( - m_webFrame, webreq, WebNavigationPolicyDownload); - } -} - -void FrameLoaderClientImpl::willChangeTitle(DocumentLoader*) -{ - // FIXME -} - -void FrameLoaderClientImpl::didChangeTitle(DocumentLoader*) -{ - // FIXME -} - -// Called whenever data is received. -void FrameLoaderClientImpl::committedLoad(DocumentLoader* loader, const char* data, int length) -{ - if (!m_pluginWidget.get()) { - if (m_webFrame->client()) { - bool preventDefault = false; - m_webFrame->client()->didReceiveDocumentData(m_webFrame, data, length, preventDefault); - if (!preventDefault) - m_webFrame->commitDocumentData(data, length); - } - } - - // If we are sending data to MediaDocument, we should stop here - // and cancel the request. - if (m_webFrame->frame()->document() - && m_webFrame->frame()->document()->isMediaDocument()) - loader->cancelMainResourceLoad(pluginWillHandleLoadError(loader->response())); - - // The plugin widget could have been created in the m_webFrame->DidReceiveData - // function. - if (m_pluginWidget.get()) { - if (!m_sentInitialResponseToPlugin) { - m_sentInitialResponseToPlugin = true; - m_pluginWidget->didReceiveResponse( - m_webFrame->frame()->loader()->activeDocumentLoader()->response()); - } - m_pluginWidget->didReceiveData(data, length); - } -} - -void FrameLoaderClientImpl::finishedLoading(DocumentLoader* dl) -{ - if (m_pluginWidget.get()) { - m_pluginWidget->didFinishLoading(); - m_pluginWidget = 0; - m_sentInitialResponseToPlugin = false; - } else { - // This is necessary to create an empty document. See bug 634004. - // However, we only want to do this if makeRepresentation has been called, to - // match the behavior on the Mac. - if (m_hasRepresentation) - dl->frameLoader()->setEncoding("", false); - } -} - -void FrameLoaderClientImpl::updateGlobalHistory() -{ -} - -void FrameLoaderClientImpl::updateGlobalHistoryRedirectLinks() -{ -} - -bool FrameLoaderClientImpl::shouldGoToHistoryItem(HistoryItem*) const -{ - // FIXME - return true; -} - -void FrameLoaderClientImpl::didDisplayInsecureContent() -{ - if (m_webFrame->client()) - m_webFrame->client()->didDisplayInsecureContent(m_webFrame); -} - -void FrameLoaderClientImpl::didRunInsecureContent(SecurityOrigin* origin) -{ - if (m_webFrame->client()) - m_webFrame->client()->didRunInsecureContent(m_webFrame, WebSecurityOrigin(origin)); -} - -ResourceError FrameLoaderClientImpl::blockedError(const ResourceRequest&) -{ - // FIXME - return ResourceError(); -} - -ResourceError FrameLoaderClientImpl::cancelledError(const ResourceRequest& request) -{ - if (!m_webFrame->client()) - return ResourceError(); - - return m_webFrame->client()->cancelledError( - m_webFrame, WrappedResourceRequest(request)); -} - -ResourceError FrameLoaderClientImpl::cannotShowURLError(const ResourceRequest& request) -{ - if (!m_webFrame->client()) - return ResourceError(); - - return m_webFrame->client()->cannotHandleRequestError( - m_webFrame, WrappedResourceRequest(request)); -} - -ResourceError FrameLoaderClientImpl::interruptForPolicyChangeError( - const ResourceRequest& request) -{ - return ResourceError(internalErrorDomain, PolicyChangeError, - request.url().string(), String()); -} - -ResourceError FrameLoaderClientImpl::cannotShowMIMETypeError(const ResourceResponse&) -{ - // FIXME - return ResourceError(); -} - -ResourceError FrameLoaderClientImpl::fileDoesNotExistError(const ResourceResponse&) -{ - // FIXME - return ResourceError(); -} - -ResourceError FrameLoaderClientImpl::pluginWillHandleLoadError(const ResourceResponse&) -{ - // FIXME - return ResourceError(); -} - -bool FrameLoaderClientImpl::shouldFallBack(const ResourceError& error) -{ - // This method is called when we fail to load the URL for an <object> tag - // that has fallback content (child elements) and is being loaded as a frame. - // The error parameter indicates the reason for the load failure. - // We should let the fallback content load only if this wasn't a cancelled - // request. - // Note: The mac version also has a case for "WebKitErrorPluginWillHandleLoad" - ResourceError c = cancelledError(ResourceRequest()); - return error.errorCode() != c.errorCode() || error.domain() != c.domain(); -} - -bool FrameLoaderClientImpl::canHandleRequest(const ResourceRequest& request) const -{ - return m_webFrame->client()->canHandleRequest( - m_webFrame, WrappedResourceRequest(request)); -} - -bool FrameLoaderClientImpl::canShowMIMEType(const String& mimeType) const -{ - // This method is called to determine if the media type can be shown - // "internally" (i.e. inside the browser) regardless of whether or not the - // browser or a plugin is doing the rendering. - - // mimeType strings are supposed to be ASCII, but if they are not for some - // reason, then it just means that the mime type will fail all of these "is - // supported" checks and go down the path of an unhandled mime type. - if (webKitClient()->mimeRegistry()->supportsMIMEType(mimeType) == WebMimeRegistry::IsSupported) - return true; - - // If Chrome is started with the --disable-plugins switch, pluginData is null. - PluginData* pluginData = m_webFrame->frame()->page()->pluginData(); - - // See if the type is handled by an installed plugin, if so, we can show it. - // FIXME: (http://b/1085524) This is the place to stick a preference to - // disable full page plugins (optionally for certain types!) - return !mimeType.isEmpty() && pluginData && pluginData->supportsMimeType(mimeType); -} - -bool FrameLoaderClientImpl::representationExistsForURLScheme(const String&) const -{ - // FIXME - return false; -} - -String FrameLoaderClientImpl::generatedMIMETypeForURLScheme(const String& scheme) const -{ - // This appears to generate MIME types for protocol handlers that are handled - // internally. The only place I can find in the WebKit code that uses this - // function is WebView::registerViewClass, where it is used as part of the - // process by which custom view classes for certain document representations - // are registered. - String mimeType("x-apple-web-kit/"); - mimeType.append(scheme.lower()); - return mimeType; -} - -void FrameLoaderClientImpl::frameLoadCompleted() -{ - // FIXME: the mac port also conditionally calls setDrawsBackground:YES on - // it's ScrollView here. - - // This comment from the Mac port: - // Note: Can be called multiple times. - // Even if already complete, we might have set a previous item on a frame that - // didn't do any data loading on the past transaction. Make sure to clear these out. - - // FIXME: setPreviousHistoryItem() no longer exists. http://crbug.com/8566 - // m_webFrame->frame()->loader()->setPreviousHistoryItem(0); -} - -void FrameLoaderClientImpl::saveViewStateToItem(HistoryItem*) -{ - // FIXME -} - -void FrameLoaderClientImpl::restoreViewState() -{ - // FIXME: probably scrolls to last position when you go back or forward -} - -void FrameLoaderClientImpl::provisionalLoadStarted() -{ - // FIXME: On mac, this does various caching stuff -} - -void FrameLoaderClientImpl::didFinishLoad() -{ - OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(); - if (observer) - observer->didFinishLoading(); -} - -void FrameLoaderClientImpl::prepareForDataSourceReplacement() -{ - // FIXME -} - -PassRefPtr<DocumentLoader> FrameLoaderClientImpl::createDocumentLoader( - const ResourceRequest& request, - const SubstituteData& data) -{ - RefPtr<WebDataSourceImpl> ds = WebDataSourceImpl::create(request, data); - if (m_webFrame->client()) - m_webFrame->client()->didCreateDataSource(m_webFrame, ds.get()); - return ds.release(); -} - -void FrameLoaderClientImpl::setTitle(const String& title, const KURL& url) -{ - // FIXME: inform consumer of changes to the title. -} - -String FrameLoaderClientImpl::userAgent(const KURL& url) -{ - return webKitClient()->userAgent(url); -} - -void FrameLoaderClientImpl::savePlatformDataToCachedFrame(CachedFrame*) -{ - // The page cache should be disabled. - ASSERT_NOT_REACHED(); -} - -void FrameLoaderClientImpl::transitionToCommittedFromCachedFrame(CachedFrame*) -{ - ASSERT_NOT_REACHED(); -} - -// Called when the FrameLoader goes into a state in which a new page load -// will occur. -void FrameLoaderClientImpl::transitionToCommittedForNewPage() -{ - makeDocumentView(); -} - -bool FrameLoaderClientImpl::canCachePage() const -{ - // Since we manage the cache, always report this page as non-cacheable to - // FrameLoader. - return false; -} - -// Downloading is handled in the browser process, not WebKit. If we get to this -// point, our download detection code in the ResourceDispatcherHost is broken! -void FrameLoaderClientImpl::download(ResourceHandle* handle, - const ResourceRequest& request, - const ResourceRequest& initialRequest, - const ResourceResponse& response) -{ - ASSERT_NOT_REACHED(); -} - -PassRefPtr<Frame> FrameLoaderClientImpl::createFrame( - const KURL& url, - const String& name, - HTMLFrameOwnerElement* ownerElement, - const String& referrer, - bool allowsScrolling, - int marginWidth, - int marginHeight) -{ - FrameLoadRequest frameRequest(ResourceRequest(url, referrer), name); - return m_webFrame->createChildFrame(frameRequest, ownerElement); -} - -PassRefPtr<Widget> FrameLoaderClientImpl::createPlugin( - const IntSize& size, // FIXME: how do we use this? - HTMLPlugInElement* element, - const KURL& url, - const Vector<String>& paramNames, - const Vector<String>& paramValues, - const String& mimeType, - bool loadManually) -{ -#if !PLATFORM(WIN_OS) - // WebCore asks us to make a plugin even if we don't have a - // registered handler, with a comment saying it's so we can display - // the broken plugin icon. In Chromium, we normally register a - // fallback plugin handler that allows you to install a missing - // plugin. Since we don't yet have a default plugin handler, we - // need to return null here rather than going through all the - // plugin-creation IPCs only to discover we don't have a plugin - // registered, which causes a crash. - // FIXME: remove me once we have a default plugin. - if (objectContentType(url, mimeType) != ObjectContentNetscapePlugin) - return 0; -#endif - - if (!m_webFrame->client()) - return 0; - - WebPluginParams params; - params.url = url; - params.mimeType = mimeType; - params.attributeNames = paramNames; - params.attributeValues = paramValues; - params.loadManually = loadManually; - - WebPlugin* webPlugin = m_webFrame->client()->createPlugin(m_webFrame, params); - if (!webPlugin) - return 0; - - // The container takes ownership of the WebPlugin. - RefPtr<WebPluginContainerImpl> container = - WebPluginContainerImpl::create(element, webPlugin); - - if (!webPlugin->initialize(container.get())) - return 0; - - // The element might have been removed during plugin initialization! - if (!element->renderer()) - return 0; - - return container; -} - -// This method gets called when a plugin is put in place of html content -// (e.g., acrobat reader). -void FrameLoaderClientImpl::redirectDataToPlugin(Widget* pluginWidget) -{ - m_pluginWidget = static_cast<WebPluginContainerImpl*>(pluginWidget); - ASSERT(m_pluginWidget.get()); -} - -PassRefPtr<Widget> FrameLoaderClientImpl::createJavaAppletWidget( - const IntSize& size, - HTMLAppletElement* element, - const KURL& /* baseURL */, - const Vector<String>& paramNames, - const Vector<String>& paramValues) -{ - return createPlugin(size, element, KURL(), paramNames, paramValues, - "application/x-java-applet", false); -} - -ObjectContentType FrameLoaderClientImpl::objectContentType( - const KURL& url, - const String& explicitMimeType) -{ - // This code is based on Apple's implementation from - // WebCoreSupport/WebFrameBridge.mm. - - String mimeType = explicitMimeType; - if (mimeType.isEmpty()) { - // Try to guess the MIME type based off the extension. - String filename = url.lastPathComponent(); - int extensionPos = filename.reverseFind('.'); - if (extensionPos >= 0) - mimeType = MIMETypeRegistry::getMIMETypeForPath(url.path()); - - if (mimeType.isEmpty()) - return ObjectContentFrame; - } - - if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType)) - return ObjectContentImage; - - // If Chrome is started with the --disable-plugins switch, pluginData is 0. - PluginData* pluginData = m_webFrame->frame()->page()->pluginData(); - if (pluginData && pluginData->supportsMimeType(mimeType)) - return ObjectContentNetscapePlugin; - - if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)) - return ObjectContentFrame; - - return ObjectContentNone; -} - -String FrameLoaderClientImpl::overrideMediaType() const -{ - // FIXME - return String(); -} - -bool FrameLoaderClientImpl::actionSpecifiesNavigationPolicy( - const NavigationAction& action, - WebNavigationPolicy* policy) -{ - if ((action.type() != NavigationTypeLinkClicked) || !action.event()->isMouseEvent()) - return false; - - const MouseEvent* event = static_cast<const MouseEvent*>(action.event()); - return WebViewImpl::navigationPolicyFromMouseEvent( - event->button(), event->ctrlKey(), event->shiftKey(), event->altKey(), - event->metaKey(), policy); -} - -void FrameLoaderClientImpl::handleBackForwardNavigation(const KURL& url) -{ - ASSERT(url.protocolIs(backForwardNavigationScheme)); - - bool ok; - int offset = url.lastPathComponent().toIntStrict(&ok); - if (!ok) - return; - - WebViewImpl* webview = m_webFrame->viewImpl(); - if (webview->client()) - webview->client()->navigateBackForwardSoon(offset); -} - -PassOwnPtr<WebPluginLoadObserver> FrameLoaderClientImpl::pluginLoadObserver() -{ - WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader( - m_webFrame->frame()->loader()->activeDocumentLoader()); - return ds->releasePluginLoadObserver(); -} - -} // namespace WebKit diff --git a/webkit/api/src/FrameLoaderClientImpl.h b/webkit/api/src/FrameLoaderClientImpl.h deleted file mode 100644 index d5592f9..0000000 --- a/webkit/api/src/FrameLoaderClientImpl.h +++ /dev/null @@ -1,234 +0,0 @@ -/* - * 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. - */ - -#ifndef FrameLoaderClientImpl_h -#define FrameLoaderClientImpl_h - -// FIXME: remove this relative path once consumers from glue are removed. -#include "../public/WebNavigationPolicy.h" -#include "FrameLoaderClient.h" -#include "KURL.h" -#include <wtf/PassOwnPtr.h> -#include <wtf/RefPtr.h> - - -namespace WebKit { - -class WebFrameImpl; -class WebPluginContainerImpl; -class WebPluginLoadObserver; - -class FrameLoaderClientImpl : public WebCore::FrameLoaderClient { -public: - FrameLoaderClientImpl(WebFrameImpl* webFrame); - ~FrameLoaderClientImpl(); - - WebFrameImpl* webFrame() const { return m_webFrame; } - - // WebCore::FrameLoaderClient ---------------------------------------------- - - virtual void frameLoaderDestroyed(); - - // Notifies the WebView delegate that the JS window object has been cleared, - // giving it a chance to bind native objects to the window before script - // parsing begins. - virtual void windowObjectCleared(); - virtual void documentElementAvailable(); - - // A frame's V8 context was created or destroyed. - virtual void didCreateScriptContextForFrame(); - virtual void didDestroyScriptContextForFrame(); - - // A context untied to a frame was created (through evaluateInNewContext). - // This context is not tied to the lifetime of its frame, and is destroyed - // in garbage collection. - virtual void didCreateIsolatedScriptContext(); - - virtual bool hasWebView() const; - virtual bool hasFrameView() const; - virtual void makeRepresentation(WebCore::DocumentLoader*); - virtual void forceLayout(); - virtual void forceLayoutForNonHTML(); - virtual void setCopiesOnScroll(); - virtual void detachedFromParent2(); - virtual void detachedFromParent3(); - virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&); - virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse); - virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier); - virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&); - virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&); - virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&); - virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived); - virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier); - virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&); - virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length); - virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long identifier, const WebCore::ScriptString&); - virtual void dispatchDidHandleOnloadEvents(); - virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); - virtual void dispatchDidCancelClientRedirect(); - virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate); - virtual void dispatchDidChangeLocationWithinPage(); - virtual void dispatchWillClose(); - virtual void dispatchDidReceiveIcon(); - virtual void dispatchDidStartProvisionalLoad(); - virtual void dispatchDidReceiveTitle(const WebCore::String& title); - virtual void dispatchDidCommitLoad(); - virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&); - virtual void dispatchDidFailLoad(const WebCore::ResourceError&); - virtual void dispatchDidFinishDocumentLoad(); - virtual void dispatchDidFinishLoad(); - virtual void dispatchDidFirstLayout(); - virtual void dispatchDidFirstVisuallyNonEmptyLayout(); - virtual WebCore::Frame* dispatchCreatePage(); - virtual void dispatchShow(); - virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction function, const WebCore::String& mime_type, const WebCore::ResourceRequest&); - virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState> form_state, const WebCore::String& frame_name); - virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState> form_state); - virtual void cancelPolicyCheck(); - virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&); - virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, PassRefPtr<WebCore::FormState>); - virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*); - virtual void revertToProvisionalState(WebCore::DocumentLoader*); - virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&); - virtual void willChangeEstimatedProgress() { } - virtual void didChangeEstimatedProgress() { } - virtual void postProgressStartedNotification(); - virtual void postProgressEstimateChangedNotification(); - virtual void postProgressFinishedNotification(); - virtual void setMainFrameDocumentReady(bool); - virtual void startDownload(const WebCore::ResourceRequest&); - virtual void willChangeTitle(WebCore::DocumentLoader*); - virtual void didChangeTitle(WebCore::DocumentLoader*); - virtual void committedLoad(WebCore::DocumentLoader*, const char*, int); - virtual void finishedLoading(WebCore::DocumentLoader*); - virtual void updateGlobalHistory(); - virtual void updateGlobalHistoryRedirectLinks(); - virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const; - virtual void didDisplayInsecureContent(); - virtual void didRunInsecureContent(WebCore::SecurityOrigin*); - virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&); - virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&); - virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&); - virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&); - virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&); - virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&); - virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&); - virtual bool shouldFallBack(const WebCore::ResourceError&); - virtual bool canHandleRequest(const WebCore::ResourceRequest&) const; - virtual bool canShowMIMEType(const WebCore::String& MIMEType) const; - virtual bool representationExistsForURLScheme(const WebCore::String& URLScheme) const; - virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String& URLScheme) const; - virtual void frameLoadCompleted(); - virtual void saveViewStateToItem(WebCore::HistoryItem*); - virtual void restoreViewState(); - virtual void provisionalLoadStarted(); - virtual void didFinishLoad(); - virtual void prepareForDataSourceReplacement(); - virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader( - const WebCore::ResourceRequest&, const WebCore::SubstituteData&); - virtual void setTitle(const WebCore::String& title, const WebCore::KURL&); - virtual WebCore::String userAgent(const WebCore::KURL&); - virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*); - virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*); - virtual void transitionToCommittedForNewPage(); - virtual bool canCachePage() const; - virtual void download( - WebCore::ResourceHandle*, const WebCore::ResourceRequest&, - const WebCore::ResourceRequest& initialRequest, - const WebCore::ResourceResponse&); - virtual PassRefPtr<WebCore::Frame> createFrame( - const WebCore::KURL& url, const WebCore::String& name, - WebCore::HTMLFrameOwnerElement* ownerElement, - const WebCore::String& referrer, bool allowsScrolling, - int marginWidth, int marginHeight); - virtual PassRefPtr<WebCore::Widget> createPlugin( - const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, - const Vector<WebCore::String>&, const Vector<WebCore::String>&, - const WebCore::String&, bool loadManually); - virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget); - virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget( - const WebCore::IntSize&, - WebCore::HTMLAppletElement*, - const WebCore::KURL& /* base_url */, - const Vector<WebCore::String>& paramNames, - const Vector<WebCore::String>& paramValues); - virtual WebCore::ObjectContentType objectContentType( - const WebCore::KURL& url, const WebCore::String& mimeType); - virtual WebCore::String overrideMediaType() const; - virtual void didPerformFirstNavigation() const; - virtual void registerForIconNotification(bool listen = true); - virtual void didChangeScrollOffset(); - virtual bool allowJavaScript(bool enabledPerSettings); - -private: - void makeDocumentView(); - - // Given a NavigationAction, determine the associated WebNavigationPolicy. - // For example, a middle click means "open in background tab". - static bool actionSpecifiesNavigationPolicy( - const WebCore::NavigationAction& action, WebNavigationPolicy* policy); - - // Called when a dummy back-forward navigation is intercepted. - void handleBackForwardNavigation(const WebCore::KURL&); - - PassOwnPtr<WebPluginLoadObserver> pluginLoadObserver(); - - // The WebFrame that owns this object and manages its lifetime. Therefore, - // the web frame object is guaranteed to exist. - WebFrameImpl* m_webFrame; - - // True if makeRepresentation was called. We don't actually have a concept - // of a "representation", but we need to know when we're expected to have one. - // See finishedLoading(). - bool m_hasRepresentation; - - // Used to help track client redirects. When a provisional load starts, it - // has no redirects in its chain. But in the case of client redirects, we want - // to add that initial load as a redirect. When we get a new provisional load - // and the dest URL matches that load, we know that it was the result of a - // previous client redirect and the source should be added as a redirect. - // Both should be empty if unused. - WebCore::KURL m_expectedClientRedirectSrc; - WebCore::KURL m_expectedClientRedirectDest; - - // Contains a pointer to the plugin widget. - RefPtr<WebPluginContainerImpl> m_pluginWidget; - - // Indicates if we need to send over the initial notification to the plugin - // which specifies that the plugin should be ready to accept data. - bool m_sentInitialResponseToPlugin; - - // The navigation policy to use for the next call to dispatchCreatePage. - WebNavigationPolicy m_nextNavigationPolicy; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/GraphicsContext3D.cpp b/webkit/api/src/GraphicsContext3D.cpp deleted file mode 100644 index 465656a..0000000 --- a/webkit/api/src/GraphicsContext3D.cpp +++ /dev/null @@ -1,2287 +0,0 @@ -/* - * 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" - -#if ENABLE(3D_CANVAS) - -#include "GraphicsContext3D.h" - -#include "CachedImage.h" -#include "CString.h" -#include "HTMLCanvasElement.h" -#include "HTMLImageElement.h" -#include "ImageBuffer.h" -#include "ImageData.h" -#include "NotImplemented.h" -#include "WebGLBuffer.h" -#include "WebGLByteArray.h" -#include "WebGLFloatArray.h" -#include "WebGLFramebuffer.h" -#include "WebGLIntArray.h" -#include "WebGLProgram.h" -#include "WebGLRenderbuffer.h" -#include "WebGLRenderingContext.h" -#include "WebGLShader.h" -#include "WebGLTexture.h" -#include "WebGLUnsignedByteArray.h" - -#include <stdio.h> -#include <wtf/FastMalloc.h> - -#if PLATFORM(WIN_OS) -#include <windows.h> -#endif - -#include "GL/glew.h" - -#if PLATFORM(CG) -#include "GraphicsContext.h" -#include <CoreGraphics/CGContext.h> -#include <CoreGraphics/CGBitmapContext.h> -#include <CoreGraphics/CGImage.h> -#include <OpenGL/OpenGL.h> -#else -#define FLIP_FRAMEBUFFER_VERTICALLY -#endif - -#if PLATFORM(SKIA) -#include "NativeImageSkia.h" -#endif - -#if PLATFORM(DARWIN) -#define USE_TEXTURE_RECTANGLE_FOR_FRAMEBUFFER -#endif - -#if PLATFORM(LINUX) -#include <dlfcn.h> -#include "GL/glxew.h" -#endif - -using namespace std; - -namespace WebCore { - -// GraphicsContext3DInternal ----------------------------------------------------- - -// Uncomment this to render to a separate window for debugging -// #define RENDER_TO_DEBUGGING_WINDOW - -#define EXTRACT(val) (!val ? 0 : val->object()) - -class GraphicsContext3DInternal { -public: - GraphicsContext3DInternal(); - ~GraphicsContext3DInternal(); - - void checkError() const; - bool makeContextCurrent(); - - PlatformGraphicsContext3D platformGraphicsContext3D() const; - Platform3DObject platformTexture() const; - - void reshape(int width, int height); - - void beginPaint(WebGLRenderingContext* context); - - bool validateTextureTarget(int target); - bool validateTextureParameter(int param); - - void activeTexture(unsigned long texture); - void bindBuffer(unsigned long target, - WebGLBuffer* buffer); - void bindTexture(unsigned long target, - WebGLTexture* texture); - void bufferDataImpl(unsigned long target, int size, const void* data, unsigned long usage); - void disableVertexAttribArray(unsigned long index); - void enableVertexAttribArray(unsigned long index); - void vertexAttribPointer(unsigned long indx, int size, int type, bool normalized, - unsigned long stride, unsigned long offset); - void viewportImpl(long x, long y, unsigned long width, unsigned long height); - -private: - unsigned int m_texture; - unsigned int m_fbo; - unsigned int m_depthBuffer; - unsigned int m_cachedWidth, m_cachedHeight; - -#ifdef FLIP_FRAMEBUFFER_VERTICALLY - unsigned char* m_scanline; - void flipVertically(unsigned char* framebuffer, - unsigned int width, - unsigned int height); -#endif - - // Note: we aren't currently using this information, but we will - // need to in order to verify that all enabled vertex arrays have - // a valid buffer bound -- to avoid crashes on certain cards. - unsigned int m_boundArrayBuffer; - class VertexAttribPointerState { - public: - VertexAttribPointerState(); - - bool enabled; - unsigned long buffer; - unsigned long indx; - int size; - int type; - bool normalized; - unsigned long stride; - unsigned long offset; - }; - - enum { - NumTrackedPointerStates = 2 - }; - VertexAttribPointerState m_vertexAttribPointerState[NumTrackedPointerStates]; - -#if PLATFORM(SKIA) - // If the width and height of the Canvas's backing store don't - // match those that we were given in the most recent call to - // reshape(), then we need an intermediate bitmap to read back the - // frame buffer into. This seems to happen when CSS styles are - // used to resize the Canvas. - SkBitmap* m_resizingBitmap; -#endif - -#if PLATFORM(WIN_OS) - HWND m_canvasWindow; - HDC m_canvasDC; - HGLRC m_contextObj; -#elif PLATFORM(CG) - CGLPBufferObj m_pbuffer; - CGLContextObj m_contextObj; - unsigned char* m_renderOutput; - CGContextRef m_cgContext; -#elif PLATFORM(LINUX) - Display* m_display; - GLXContext m_contextObj; - GLXPbuffer m_pbuffer; - // In order to avoid problems caused by linking against libGL, we - // dynamically look up all the symbols we need. - // http://code.google.com/p/chromium/issues/detail?id=16800 - void* m_libGL; - PFNGLXCHOOSEFBCONFIGPROC m_glXChooseFBConfig; - PFNGLXCREATENEWCONTEXTPROC m_glXCreateNewContext; - PFNGLXCREATEPBUFFERPROC m_glXCreatePbuffer; - PFNGLXDESTROYPBUFFERPROC m_glXDestroyPbuffer; - typedef Bool (* PFNGLXMAKECURRENTPROC)(Display* dpy, GLXDrawable drawable, GLXContext ctx); - PFNGLXMAKECURRENTPROC m_glXMakeCurrent; - typedef void (* PFNGLXDESTROYCONTEXTPROC)(Display* dpy, GLXContext ctx); - PFNGLXDESTROYCONTEXTPROC m_glXDestroyContext; - typedef GLXContext (* PFNGLXGETCURRENTCONTEXTPROC)(void); - PFNGLXGETCURRENTCONTEXTPROC m_glXGetCurrentContext; -#else - #error Must port GraphicsContext3D to your platform -#endif -}; - -GraphicsContext3DInternal::VertexAttribPointerState::VertexAttribPointerState() - : enabled(false) - , buffer(0) - , indx(0) - , size(0) - , type(0) - , normalized(false) - , stride(0) - , offset(0) -{ -} - -#if PLATFORM(LINUX) -static void* tryLoad(const char* libName) -{ - // We use RTLD_GLOBAL semantics so that GLEW initialization works; - // GLEW expects to be able to open the current process's handle - // and do dlsym's of GL entry points from there. - return dlopen(libName, RTLD_LAZY | RTLD_GLOBAL); -} -#endif - -GraphicsContext3DInternal::GraphicsContext3DInternal() - : m_texture(0) - , m_fbo(0) - , m_depthBuffer(0) -#ifdef FLIP_FRAMEBUFFER_VERTICALLY - , m_scanline(0) -#endif - , m_boundArrayBuffer(0) -#if PLATFORM(SKIA) - , m_resizingBitmap(0) -#endif -#if PLATFORM(WIN_OS) - , m_canvasWindow(0) - , m_canvasDC(0) - , m_contextObj(0) -#elif PLATFORM(CG) - , m_pbuffer(0) - , m_contextObj(0) - , m_renderOutput(0) - , m_cgContext(0) -#elif PLATFORM(LINUX) - , m_display(0) - , m_contextObj(0) - , m_pbuffer(0) - , m_glXChooseFBConfig(0) - , m_glXCreateNewContext(0) - , m_glXCreatePbuffer(0) - , m_glXDestroyPbuffer(0) - , m_glXMakeCurrent(0) - , m_glXDestroyContext(0) - , m_glXGetCurrentContext(0) -#else -#error Must port to your platform -#endif -{ -#if PLATFORM(WIN_OS) - WNDCLASS wc; - if (!GetClassInfo(GetModuleHandle(0), L"CANVASGL", &wc)) { - ZeroMemory(&wc, sizeof(WNDCLASS)); - wc.style = CS_OWNDC; - wc.hInstance = GetModuleHandle(0); - wc.lpfnWndProc = DefWindowProc; - wc.lpszClassName = L"CANVASGL"; - - if (!RegisterClass(&wc)) { - printf("GraphicsContext3D: RegisterClass failed\n"); - return; - } - } - - m_canvasWindow = CreateWindow(L"CANVASGL", L"CANVASGL", - WS_CAPTION, - CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, 0, 0, GetModuleHandle(0), 0); - if (!m_canvasWindow) { - printf("GraphicsContext3DInternal: CreateWindow failed\n"); - return; - } - - // get the device context - m_canvasDC = GetDC(m_canvasWindow); - if (!m_canvasDC) { - printf("GraphicsContext3DInternal: GetDC failed\n"); - return; - } - - // find default pixel format - PIXELFORMATDESCRIPTOR pfd; - ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR)); - pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); - pfd.nVersion = 1; - pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL -#ifdef RENDER_TO_DEBUGGING_WINDOW - | PFD_DOUBLEBUFFER -#endif // RENDER_TO_DEBUGGING_WINDOW - ; - int pixelformat = ChoosePixelFormat(m_canvasDC, &pfd); - - // set the pixel format for the dc - if (!SetPixelFormat(m_canvasDC, pixelformat, &pfd)) { - printf("GraphicsContext3D: SetPixelFormat failed\n"); - return; - } - - // create rendering context - m_contextObj = wglCreateContext(m_canvasDC); - if (!m_contextObj) { - printf("GraphicsContext3D: wglCreateContext failed\n"); - return; - } - - if (!wglMakeCurrent(m_canvasDC, m_contextObj)) { - printf("GraphicsContext3D: wglMakeCurrent failed\n"); - return; - } - -#ifdef RENDER_TO_DEBUGGING_WINDOW - typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval); - PFNWGLSWAPINTERVALEXTPROC setSwapInterval = 0; - setSwapInterval = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT"); - if (setSwapInterval) - setSwapInterval(1); -#endif // RENDER_TO_DEBUGGING_WINDOW - -#elif PLATFORM(CG) - // Create a 1x1 pbuffer and associated context to bootstrap things - CGLPixelFormatAttribute attribs[] = { - (CGLPixelFormatAttribute) kCGLPFAPBuffer, - (CGLPixelFormatAttribute) 0 - }; - CGLPixelFormatObj pixelFormat; - GLint numPixelFormats; - if (CGLChoosePixelFormat(attribs, &pixelFormat, &numPixelFormats) != kCGLNoError) { - printf("GraphicsContext3D: error choosing pixel format\n"); - return; - } - if (!pixelFormat) { - printf("GraphicsContext3D: no pixel format selected\n"); - return; - } - CGLContextObj context; - CGLError res = CGLCreateContext(pixelFormat, 0, &context); - CGLDestroyPixelFormat(pixelFormat); - if (res != kCGLNoError) { - printf("GraphicsContext3D: error creating context\n"); - return; - } - CGLPBufferObj pbuffer; - if (CGLCreatePBuffer(1, 1, GL_TEXTURE_2D, GL_RGBA, 0, &pbuffer) != kCGLNoError) { - CGLDestroyContext(context); - printf("GraphicsContext3D: error creating pbuffer\n"); - return; - } - if (CGLSetPBuffer(context, pbuffer, 0, 0, 0) != kCGLNoError) { - CGLDestroyContext(context); - CGLDestroyPBuffer(pbuffer); - printf("GraphicsContext3D: error attaching pbuffer to context\n"); - return; - } - if (CGLSetCurrentContext(context) != kCGLNoError) { - CGLDestroyContext(context); - CGLDestroyPBuffer(pbuffer); - printf("GraphicsContext3D: error making context current\n"); - return; - } - m_pbuffer = pbuffer; - m_contextObj = context; -#elif PLATFORM(LINUX) - m_display = XOpenDisplay(0); - if (!m_display) { - printf("GraphicsContext3D: error opening X display\n"); - return; - } - - const char* libNames[] = { - "/usr/lib/libGL.so.1", - "/usr/lib32/libGL.so.1", - "/usr/lib64/libGL.so.1", - }; - for (int i = 0; i < sizeof(libNames) / sizeof(const char*); i++) { - m_libGL = tryLoad(libNames[i]); - if (m_libGL) - break; - } - if (!m_libGL) { - printf("GraphicsContext3D: error opening libGL.so.1\n"); - printf("GraphicsContext3D: tried:"); - for (int i = 0; i < sizeof(libNames) / sizeof(const char*); i++) - printf(" %s", libNames[i]); - return; - } - m_glXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC) dlsym(m_libGL, "glXChooseFBConfig"); - m_glXCreateNewContext = (PFNGLXCREATENEWCONTEXTPROC) dlsym(m_libGL, "glXCreateNewContext"); - m_glXCreatePbuffer = (PFNGLXCREATEPBUFFERPROC) dlsym(m_libGL, "glXCreatePbuffer"); - m_glXDestroyPbuffer = (PFNGLXDESTROYPBUFFERPROC) dlsym(m_libGL, "glXDestroyPbuffer"); - m_glXMakeCurrent = (PFNGLXMAKECURRENTPROC) dlsym(m_libGL, "glXMakeCurrent"); - m_glXDestroyContext = (PFNGLXDESTROYCONTEXTPROC) dlsym(m_libGL, "glXDestroyContext"); - m_glXGetCurrentContext = (PFNGLXGETCURRENTCONTEXTPROC) dlsym(m_libGL, "glXGetCurrentContext"); - if (!m_glXChooseFBConfig || !m_glXCreateNewContext || !m_glXCreatePbuffer - || !m_glXDestroyPbuffer || !m_glXMakeCurrent || !m_glXDestroyContext - || !m_glXGetCurrentContext) { - printf("GraphicsContext3D: error looking up bootstrapping entry points\n"); - return; - } - int configAttrs[] = { - GLX_DRAWABLE_TYPE, - GLX_PBUFFER_BIT, - GLX_RENDER_TYPE, - GLX_RGBA_BIT, - GLX_DOUBLEBUFFER, - 0, - 0 - }; - int nelements = 0; - GLXFBConfig* config = m_glXChooseFBConfig(m_display, 0, configAttrs, &nelements); - if (!config) { - printf("GraphicsContext3D: glXChooseFBConfig failed\n"); - return; - } - if (!nelements) { - printf("GraphicsContext3D: glXChooseFBConfig returned 0 elements\n"); - XFree(config); - return; - } - GLXContext context = m_glXCreateNewContext(m_display, config[0], GLX_RGBA_TYPE, 0, True); - if (!context) { - printf("GraphicsContext3D: glXCreateNewContext failed\n"); - XFree(config); - return; - } - int pbufferAttrs[] = { - GLX_PBUFFER_WIDTH, - 1, - GLX_PBUFFER_HEIGHT, - 1, - 0 - }; - GLXPbuffer pbuffer = m_glXCreatePbuffer(m_display, config[0], pbufferAttrs); - XFree(config); - if (!pbuffer) { - printf("GraphicsContext3D: glxCreatePbuffer failed\n"); - return; - } - if (!m_glXMakeCurrent(m_display, pbuffer, context)) { - printf("GraphicsContext3D: glXMakeCurrent failed\n"); - return; - } - m_contextObj = context; - m_pbuffer = pbuffer; -#else -#error Must port to your platform -#endif - - static bool initializedGLEW = false; - if (!initializedGLEW) { - // Initialize GLEW and check for GL 2.0 support by the drivers. - GLenum glewInitResult = glewInit(); - if (glewInitResult != GLEW_OK) { - printf("GraphicsContext3D: GLEW initialization failed\n"); - return; - } - if (!glewIsSupported("GL_VERSION_2_0")) { - printf("GraphicsContext3D: OpenGL 2.0 not supported\n"); - return; - } - initializedGLEW = true; - } -} - -GraphicsContext3DInternal::~GraphicsContext3DInternal() -{ - makeContextCurrent(); -#ifndef RENDER_TO_DEBUGGING_WINDOW - glDeleteRenderbuffersEXT(1, &m_depthBuffer); - glDeleteTextures(1, &m_texture); -#ifdef FLIP_FRAMEBUFFER_VERTICALLY - if (m_scanline) - delete[] m_scanline; -#endif - glDeleteFramebuffersEXT(1, &m_fbo); -#endif // !RENDER_TO_DEBUGGING_WINDOW -#if PLATFORM(SKIA) - if (m_resizingBitmap) - delete m_resizingBitmap; -#endif -#if PLATFORM(WIN_OS) - wglMakeCurrent(0, 0); - wglDeleteContext(m_contextObj); - ReleaseDC(m_canvasWindow, m_canvasDC); - DestroyWindow(m_canvasWindow); -#elif PLATFORM(CG) - CGLSetCurrentContext(0); - CGLDestroyContext(m_contextObj); - CGLDestroyPBuffer(m_pbuffer); - if (m_cgContext) - CGContextRelease(m_cgContext); - if (m_renderOutput) - delete[] m_renderOutput; -#elif PLATFORM(LINUX) - m_glXMakeCurrent(m_display, 0, 0); - m_glXDestroyContext(m_display, m_contextObj); - m_glXDestroyPbuffer(m_display, m_pbuffer); - XCloseDisplay(m_display); - dlclose(m_libGL); -#else -#error Must port to your platform -#endif - m_contextObj = 0; -} - -void GraphicsContext3DInternal::checkError() const -{ - // FIXME: This needs to only be done in the debug context. It - // will need to throw an exception on error. - GLenum error = glGetError(); - if (error != GL_NO_ERROR) { - printf("GraphicsContext3DInternal: GL Error : %x\n", error); - notImplemented(); - } -} - -bool GraphicsContext3DInternal::makeContextCurrent() -{ -#if PLATFORM(WIN_OS) - if (wglGetCurrentContext() != m_contextObj) - if (wglMakeCurrent(m_canvasDC, m_contextObj)) - return true; -#elif PLATFORM(CG) - if (CGLGetCurrentContext() != m_contextObj) - if (CGLSetCurrentContext(m_contextObj) == kCGLNoError) - return true; -#elif PLATFORM(LINUX) - if (m_glXGetCurrentContext() != m_contextObj) - if (m_glXMakeCurrent(m_display, m_pbuffer, m_contextObj)) - return true; -#else -#error Must port to your platform -#endif - return false; -} - -PlatformGraphicsContext3D GraphicsContext3DInternal::platformGraphicsContext3D() const -{ - return m_contextObj; -} - -Platform3DObject GraphicsContext3DInternal::platformTexture() const -{ - return m_texture; -} - -static int createTextureObject(GLenum target) -{ - GLuint texture = 0; - glGenTextures(1, &texture); - glBindTexture(target, texture); - glTexParameterf(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - return texture; -} - -void GraphicsContext3DInternal::reshape(int width, int height) -{ -#ifdef RENDER_TO_DEBUGGING_WINDOW - SetWindowPos(m_canvasWindow, HWND_TOP, 0, 0, width, height, - SWP_NOMOVE); - ShowWindow(m_canvasWindow, SW_SHOW); -#endif - - m_cachedWidth = width; - m_cachedHeight = height; - makeContextCurrent(); - -#ifndef RENDER_TO_DEBUGGING_WINDOW -#ifdef USE_TEXTURE_RECTANGLE_FOR_FRAMEBUFFER - // GL_TEXTURE_RECTANGLE_ARB is the best supported render target on Mac OS X - GLenum target = GL_TEXTURE_RECTANGLE_ARB; -#else - GLenum target = GL_TEXTURE_2D; -#endif - if (!m_texture) { - // Generate the texture object - m_texture = createTextureObject(target); - // Generate the framebuffer object - glGenFramebuffersEXT(1, &m_fbo); - // Generate the depth buffer - glGenRenderbuffersEXT(1, &m_depthBuffer); - checkError(); - } - - // Reallocate the color and depth buffers - glBindTexture(target, m_texture); - glTexImage2D(target, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); - glBindTexture(target, 0); - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fbo); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, m_depthBuffer); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, width, height); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); - - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, target, m_texture, 0); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, m_depthBuffer); - GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { - printf("GraphicsContext3D: framebuffer was incomplete\n"); - - // FIXME: cleanup. - notImplemented(); - } -#endif // RENDER_TO_DEBUGGING_WINDOW - -#ifdef FLIP_FRAMEBUFFER_VERTICALLY - if (m_scanline) { - delete[] m_scanline; - m_scanline = 0; - } - m_scanline = new unsigned char[width * 4]; -#endif // FLIP_FRAMEBUFFER_VERTICALLY - - glClear(GL_COLOR_BUFFER_BIT); - viewportImpl(0, 0, width, height); - -#if PLATFORM(CG) - // Need to reallocate the client-side backing store. - // FIXME: make this more efficient. - if (m_cgContext) { - CGContextRelease(m_cgContext); - m_cgContext = 0; - } - if (m_renderOutput) { - delete[] m_renderOutput; - m_renderOutput = 0; - } - int rowBytes = width * 4; - m_renderOutput = new unsigned char[height * rowBytes]; - CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); - m_cgContext = CGBitmapContextCreate(m_renderOutput, width, height, 8, rowBytes, - colorSpace, kCGImageAlphaPremultipliedLast); - CGColorSpaceRelease(colorSpace); -#endif // PLATFORM(CG) -} - -#ifdef FLIP_FRAMEBUFFER_VERTICALLY -void GraphicsContext3DInternal::flipVertically(unsigned char* framebuffer, - unsigned int width, - unsigned int height) -{ - unsigned char* scanline = m_scanline; - if (!scanline) - return; - unsigned int rowBytes = width * 4; - unsigned int count = height / 2; - for (unsigned int i = 0; i < count; i++) { - unsigned char* rowA = framebuffer + i * rowBytes; - unsigned char* rowB = framebuffer + (height - i - 1) * rowBytes; - // FIXME: this is where the multiplication of the alpha - // channel into the color buffer will need to occur if the - // user specifies the "premultiplyAlpha" flag in the context - // creation attributes. - memcpy(scanline, rowB, rowBytes); - memcpy(rowB, rowA, rowBytes); - memcpy(rowA, scanline, rowBytes); - } -} -#endif - -void GraphicsContext3DInternal::beginPaint(WebGLRenderingContext* context) -{ - makeContextCurrent(); - -#ifdef RENDER_TO_DEBUGGING_WINDOW - SwapBuffers(m_canvasDC); -#else - // Earlier versions of this code used the GPU to flip the - // framebuffer vertically before reading it back for compositing - // via software. This code was quite complicated, used a lot of - // GPU memory, and didn't provide an obvious speedup. Since this - // vertical flip is only a temporary solution anyway until Chrome - // is fully GPU composited, it wasn't worth the complexity. - - HTMLCanvasElement* canvas = context->canvas(); - ImageBuffer* imageBuffer = canvas->buffer(); - unsigned char* pixels = 0; -#if PLATFORM(SKIA) - const SkBitmap* canvasBitmap = imageBuffer->context()->platformContext()->bitmap(); - const SkBitmap* readbackBitmap = 0; - ASSERT(canvasBitmap->config() == SkBitmap::kARGB_8888_Config); - if (canvasBitmap->width() == m_cachedWidth && canvasBitmap->height() == m_cachedHeight) { - // This is the fastest and most common case. We read back - // directly into the canvas's backing store. - readbackBitmap = canvasBitmap; - if (m_resizingBitmap) { - delete m_resizingBitmap; - m_resizingBitmap = 0; - } - } else { - // We need to allocate a temporary bitmap for reading back the - // pixel data. We will then use Skia to rescale this bitmap to - // the size of the canvas's backing store. - if (m_resizingBitmap && (m_resizingBitmap->width() != m_cachedWidth || m_resizingBitmap->height() != m_cachedHeight)) { - delete m_resizingBitmap; - m_resizingBitmap = 0; - } - if (!m_resizingBitmap) { - m_resizingBitmap = new SkBitmap(); - m_resizingBitmap->setConfig(SkBitmap::kARGB_8888_Config, - m_cachedWidth, - m_cachedHeight); - if (!m_resizingBitmap->allocPixels()) { - delete m_resizingBitmap; - m_resizingBitmap = 0; - return; - } - } - readbackBitmap = m_resizingBitmap; - } - - // Read back the frame buffer. - SkAutoLockPixels bitmapLock(*readbackBitmap); - pixels = static_cast<unsigned char*>(readbackBitmap->getPixels()); - glReadPixels(0, 0, m_cachedWidth, m_cachedHeight, GL_BGRA, GL_UNSIGNED_BYTE, pixels); -#elif PLATFORM(CG) - if (m_renderOutput) { - ASSERT(CGBitmapContextGetWidth(m_cgContext) == m_cachedWidth); - ASSERT(CGBitmapContextGetHeight(m_cgContext) == m_cachedHeight); - pixels = m_renderOutput; - glReadPixels(0, 0, m_cachedWidth, m_cachedHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixels); - } -#else -#error Must port to your platform -#endif - -#ifdef FLIP_FRAMEBUFFER_VERTICALLY - if (pixels) - flipVertically(pixels, m_cachedWidth, m_cachedHeight); -#endif - -#if PLATFORM(SKIA) - if (m_resizingBitmap) { - // We need to draw the resizing bitmap into the canvas's backing store. - SkCanvas canvas(*canvasBitmap); - SkRect dst; - dst.set(0, 0, canvasBitmap->width(), canvasBitmap->height()); - canvas.drawBitmapRect(*m_resizingBitmap, 0, dst); - } -#elif PLATFORM(CG) - if (m_renderOutput) { - CGImageRef cgImage = CGBitmapContextCreateImage(m_cgContext); - // CSS styling may cause the canvas's content to be resized on - // the page. Go back to the Canvas to figure out the correct - // width and height to draw. - CGRect rect = CGRectMake(0, 0, - context->canvas()->width(), - context->canvas()->height()); - // We want to completely overwrite the previous frame's - // rendering results. - CGContextSetBlendMode(imageBuffer->context()->platformContext(), - kCGBlendModeCopy); - CGContextDrawImage(imageBuffer->context()->platformContext(), - rect, cgImage); - CGImageRelease(cgImage); - } -#else -#error Must port to your platform -#endif - -#endif // RENDER_TO_DEBUGGING_WINDOW -} - -bool GraphicsContext3DInternal::validateTextureTarget(int target) -{ - return (target == GL_TEXTURE_2D || target == GL_TEXTURE_CUBE_MAP); -} - -bool GraphicsContext3DInternal::validateTextureParameter(int param) -{ - return (param == GL_TEXTURE_MAG_FILTER - || param == GL_TEXTURE_MIN_FILTER - || param == GL_TEXTURE_WRAP_S - || param == GL_TEXTURE_WRAP_T); -} - -void GraphicsContext3DInternal::activeTexture(unsigned long texture) -{ - // FIXME: query number of textures available. - if (texture < GL_TEXTURE0 || texture > GL_TEXTURE0+32) - // FIXME: raise exception. - return; - - makeContextCurrent(); - glActiveTexture(texture); -} - -void GraphicsContext3DInternal::bindBuffer(unsigned long target, - WebGLBuffer* buffer) -{ - makeContextCurrent(); - GLuint bufID = EXTRACT(buffer); - if (target == GL_ARRAY_BUFFER) - m_boundArrayBuffer = bufID; - glBindBuffer(target, bufID); -} - -// If we didn't have to hack GL_TEXTURE_WRAP_R for cube maps, -// we could just use: -// GL_SAME_METHOD_2_X2(BindTexture, bindTexture, unsigned long, WebGLTexture*) -void GraphicsContext3DInternal::bindTexture(unsigned long target, - WebGLTexture* texture) -{ - makeContextCurrent(); - unsigned int textureObject = EXTRACT(texture); - - glBindTexture(target, textureObject); - - // FIXME: GL_TEXTURE_WRAP_R isn't exposed in the OpenGL ES 2.0 - // API. On desktop OpenGL implementations it seems necessary to - // set this wrap mode to GL_CLAMP_TO_EDGE to get correct behavior - // of cube maps. - if (texture) { - if (target == GL_TEXTURE_CUBE_MAP) { - if (!texture->isCubeMapRWrapModeInitialized()) { - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); - texture->setCubeMapRWrapModeInitialized(true); - } - } else - texture->setCubeMapRWrapModeInitialized(false); - } -} - -void GraphicsContext3DInternal::bufferDataImpl(unsigned long target, int size, const void* data, unsigned long usage) -{ - makeContextCurrent(); - // FIXME: make this verification more efficient. - GLint binding = 0; - GLenum binding_target = GL_ARRAY_BUFFER_BINDING; - if (target == GL_ELEMENT_ARRAY_BUFFER) - binding_target = GL_ELEMENT_ARRAY_BUFFER_BINDING; - glGetIntegerv(binding_target, &binding); - if (binding <= 0) { - // FIXME: raise exception. - // LogMessagef(("bufferData: no buffer bound")); - return; - } - - glBufferData(target, - size, - data, - usage); -} - -void GraphicsContext3DInternal::disableVertexAttribArray(unsigned long index) -{ - makeContextCurrent(); - if (index < NumTrackedPointerStates) - m_vertexAttribPointerState[index].enabled = false; - glDisableVertexAttribArray(index); -} - -void GraphicsContext3DInternal::enableVertexAttribArray(unsigned long index) -{ - makeContextCurrent(); - if (index < NumTrackedPointerStates) - m_vertexAttribPointerState[index].enabled = true; - glEnableVertexAttribArray(index); -} - -void GraphicsContext3DInternal::vertexAttribPointer(unsigned long indx, int size, int type, bool normalized, - unsigned long stride, unsigned long offset) -{ - makeContextCurrent(); - - if (m_boundArrayBuffer <= 0) { - // FIXME: raise exception. - // LogMessagef(("bufferData: no buffer bound")); - return; - } - - if (indx < NumTrackedPointerStates) { - VertexAttribPointerState& state = m_vertexAttribPointerState[indx]; - state.buffer = m_boundArrayBuffer; - state.indx = indx; - state.size = size; - state.type = type; - state.normalized = normalized; - state.stride = stride; - state.offset = offset; - } - - glVertexAttribPointer(indx, size, type, normalized, stride, - reinterpret_cast<void*>(static_cast<intptr_t>(offset))); -} - -void GraphicsContext3DInternal::viewportImpl(long x, long y, unsigned long width, unsigned long height) -{ - glViewport(x, y, width, height); -} - -// GraphicsContext3D ----------------------------------------------------- - -/* Helper macros for when we're just wrapping a gl method, so that - * we can avoid having to type this 500 times. Note that these MUST - * NOT BE USED if we need to check any of the parameters. - */ - -#define GL_SAME_METHOD_0(glname, name) \ -void GraphicsContext3D::name() \ -{ \ - makeContextCurrent(); \ - gl##glname(); \ -} - -#define GL_SAME_METHOD_1(glname, name, t1) \ -void GraphicsContext3D::name(t1 a1) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1); \ -} - -#define GL_SAME_METHOD_1_X(glname, name, t1) \ -void GraphicsContext3D::name(t1 a1) \ -{ \ - makeContextCurrent(); \ - gl##glname(EXTRACT(a1)); \ -} - -#define GL_SAME_METHOD_2(glname, name, t1, t2) \ -void GraphicsContext3D::name(t1 a1, t2 a2) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2); \ -} - -#define GL_SAME_METHOD_2_X12(glname, name, t1, t2) \ -void GraphicsContext3D::name(t1 a1, t2 a2) \ -{ \ - makeContextCurrent(); \ - gl##glname(EXTRACT(a1), EXTRACT(a2)); \ -} - -#define GL_SAME_METHOD_2_X2(glname, name, t1, t2) \ -void GraphicsContext3D::name(t1 a1, t2 a2) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, EXTRACT(a2)); \ -} - -#define GL_SAME_METHOD_3(glname, name, t1, t2, t3) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2, a3); \ -} - -#define GL_SAME_METHOD_3_X12(glname, name, t1, t2, t3) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3) \ -{ \ - makeContextCurrent(); \ - gl##glname(EXTRACT(a1), EXTRACT(a2), a3); \ -} - -#define GL_SAME_METHOD_3_X2(glname, name, t1, t2, t3) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, EXTRACT(a2), a3); \ -} - -#define GL_SAME_METHOD_4(glname, name, t1, t2, t3, t4) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3, t4 a4) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2, a3, a4); \ -} - -#define GL_SAME_METHOD_4_X4(glname, name, t1, t2, t3, t4) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3, t4 a4) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2, a3, EXTRACT(a4)); \ -} - -#define GL_SAME_METHOD_5(glname, name, t1, t2, t3, t4, t5) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2, a3, a4, a5); \ -} - -#define GL_SAME_METHOD_5_X4(glname, name, t1, t2, t3, t4, t5) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2, a3, EXTRACT(a4), a5); \ -} - -#define GL_SAME_METHOD_6(glname, name, t1, t2, t3, t4, t5, t6) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2, a3, a4, a5, a6); \ -} - -#define GL_SAME_METHOD_8(glname, name, t1, t2, t3, t4, t5, t6, t7, t8) \ -void GraphicsContext3D::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8) \ -{ \ - makeContextCurrent(); \ - gl##glname(a1, a2, a3, a4, a5, a6, a7, a8); \ -} - -PassOwnPtr<GraphicsContext3D> GraphicsContext3D::create() -{ - PassOwnPtr<GraphicsContext3D> context = new GraphicsContext3D(); - // FIXME: add error checking - return context; -} - -GraphicsContext3D::GraphicsContext3D() - : m_currentWidth(0) - , m_currentHeight(0) - , m_internal(new GraphicsContext3DInternal()) -{ -} - -GraphicsContext3D::~GraphicsContext3D() -{ -} - -PlatformGraphicsContext3D GraphicsContext3D::platformGraphicsContext3D() const -{ - return m_internal->platformGraphicsContext3D(); -} - -Platform3DObject GraphicsContext3D::platformTexture() const -{ - return m_internal->platformTexture(); -} - -void GraphicsContext3D::checkError() const -{ - m_internal->checkError(); -} - -void GraphicsContext3D::makeContextCurrent() -{ - m_internal->makeContextCurrent(); -} - -void GraphicsContext3D::reshape(int width, int height) -{ - if (width == m_currentWidth && height == m_currentHeight) - return; - - m_currentWidth = width; - m_currentHeight = height; - - m_internal->reshape(width, height); -} - -void GraphicsContext3D::beginPaint(WebGLRenderingContext* context) -{ - m_internal->beginPaint(context); -} - -void GraphicsContext3D::endPaint() -{ -} - -int GraphicsContext3D::sizeInBytes(int type) -{ - switch (type) { - case GL_BYTE: - return sizeof(GLbyte); - case GL_UNSIGNED_BYTE: - return sizeof(GLubyte); - case GL_SHORT: - return sizeof(GLshort); - case GL_UNSIGNED_SHORT: - return sizeof(GLushort); - case GL_INT: - return sizeof(GLint); - case GL_UNSIGNED_INT: - return sizeof(GLuint); - case GL_FLOAT: - return sizeof(GLfloat); - default: // FIXME: default cases are discouraged in WebKit. - return 0; - } -} - -unsigned GraphicsContext3D::createBuffer() -{ - makeContextCurrent(); - GLuint o; - glGenBuffers(1, &o); - return o; -} - -unsigned GraphicsContext3D::createFramebuffer() -{ - makeContextCurrent(); - GLuint o; - glGenFramebuffers(1, &o); - return o; -} - -unsigned GraphicsContext3D::createProgram() -{ - makeContextCurrent(); - return glCreateProgram(); -} - -unsigned GraphicsContext3D::createRenderbuffer() -{ - makeContextCurrent(); - GLuint o; - glGenRenderbuffers(1, &o); - return o; -} - -unsigned GraphicsContext3D::createShader(ShaderType type) -{ - makeContextCurrent(); - return glCreateShader((type == FRAGMENT_SHADER) ? GL_FRAGMENT_SHADER : GL_VERTEX_SHADER); -} - -unsigned GraphicsContext3D::createTexture() -{ - makeContextCurrent(); - GLuint o; - glGenTextures(1, &o); - return o; -} - -void GraphicsContext3D::deleteBuffer(unsigned buffer) -{ - makeContextCurrent(); - glDeleteBuffers(1, &buffer); -} - -void GraphicsContext3D::deleteFramebuffer(unsigned framebuffer) -{ - makeContextCurrent(); - glDeleteFramebuffers(1, &framebuffer); -} - -void GraphicsContext3D::deleteProgram(unsigned program) -{ - makeContextCurrent(); - glDeleteProgram(program); -} - -void GraphicsContext3D::deleteRenderbuffer(unsigned renderbuffer) -{ - makeContextCurrent(); - glDeleteRenderbuffers(1, &renderbuffer); -} - -void GraphicsContext3D::deleteShader(unsigned shader) -{ - makeContextCurrent(); - glDeleteShader(shader); -} - -void GraphicsContext3D::deleteTexture(unsigned texture) -{ - makeContextCurrent(); - glDeleteTextures(1, &texture); -} - -void GraphicsContext3D::activeTexture(unsigned long texture) -{ - m_internal->activeTexture(texture); -} - -GL_SAME_METHOD_2_X12(AttachShader, attachShader, WebGLProgram*, WebGLShader*) - -void GraphicsContext3D::bindAttribLocation(WebGLProgram* program, - unsigned long index, - const String& name) -{ - if (!program) - return; - makeContextCurrent(); - glBindAttribLocation(EXTRACT(program), index, name.utf8().data()); -} - -void GraphicsContext3D::bindBuffer(unsigned long target, - WebGLBuffer* buffer) -{ - m_internal->bindBuffer(target, buffer); -} - -GL_SAME_METHOD_2_X2(BindFramebuffer, bindFramebuffer, unsigned long, WebGLFramebuffer*) - -GL_SAME_METHOD_2_X2(BindRenderbuffer, bindRenderbuffer, unsigned long, WebGLRenderbuffer*) - -// If we didn't have to hack GL_TEXTURE_WRAP_R for cube maps, -// we could just use: -// GL_SAME_METHOD_2_X2(BindTexture, bindTexture, unsigned long, WebGLTexture*) -void GraphicsContext3D::bindTexture(unsigned long target, - WebGLTexture* texture) -{ - m_internal->bindTexture(target, texture); -} - -GL_SAME_METHOD_4(BlendColor, blendColor, double, double, double, double) - -GL_SAME_METHOD_1(BlendEquation, blendEquation, unsigned long) - -GL_SAME_METHOD_2(BlendEquationSeparate, blendEquationSeparate, unsigned long, unsigned long) - -GL_SAME_METHOD_2(BlendFunc, blendFunc, unsigned long, unsigned long) - -GL_SAME_METHOD_4(BlendFuncSeparate, blendFuncSeparate, unsigned long, unsigned long, unsigned long, unsigned long) - -void GraphicsContext3D::bufferData(unsigned long target, int size, unsigned long usage) -{ - m_internal->bufferDataImpl(target, size, 0, usage); -} - -void GraphicsContext3D::bufferData(unsigned long target, WebGLArray* array, unsigned long usage) -{ - m_internal->bufferDataImpl(target, array->sizeInBytes(), array->baseAddress(), usage); -} - -void GraphicsContext3D::bufferSubData(unsigned long target, long offset, WebGLArray* array) -{ - if (!array || !array->length()) - return; - - makeContextCurrent(); - // FIXME: make this verification more efficient. - GLint binding = 0; - GLenum binding_target = GL_ARRAY_BUFFER_BINDING; - if (target == GL_ELEMENT_ARRAY_BUFFER) - binding_target = GL_ELEMENT_ARRAY_BUFFER_BINDING; - glGetIntegerv(binding_target, &binding); - if (binding <= 0) { - // FIXME: raise exception. - // LogMessagef(("bufferSubData: no buffer bound")); - return; - } - glBufferSubData(target, offset, array->sizeInBytes(), array->baseAddress()); -} - -unsigned long GraphicsContext3D::checkFramebufferStatus(unsigned long target) -{ - makeContextCurrent(); - return glCheckFramebufferStatus(target); -} - -GL_SAME_METHOD_1(Clear, clear, unsigned long) - -GL_SAME_METHOD_4(ClearColor, clearColor, double, double, double, double) - -GL_SAME_METHOD_1(ClearDepth, clearDepth, double) - -GL_SAME_METHOD_1(ClearStencil, clearStencil, long) - -GL_SAME_METHOD_4(ColorMask, colorMask, bool, bool, bool, bool) - -GL_SAME_METHOD_1_X(CompileShader, compileShader, WebGLShader*) - -GL_SAME_METHOD_8(CopyTexImage2D, copyTexImage2D, unsigned long, long, unsigned long, long, long, unsigned long, unsigned long, long) - -GL_SAME_METHOD_8(CopyTexSubImage2D, copyTexSubImage2D, unsigned long, long, long, long, long, long, unsigned long, unsigned long) - -GL_SAME_METHOD_1(CullFace, cullFace, unsigned long) - -GL_SAME_METHOD_1(DepthFunc, depthFunc, unsigned long) - -GL_SAME_METHOD_1(DepthMask, depthMask, bool) - -GL_SAME_METHOD_2(DepthRange, depthRange, double, double) - -void GraphicsContext3D::detachShader(WebGLProgram* program, WebGLShader* shader) -{ - if (!program || !shader) - return; - - makeContextCurrent(); - glDetachShader(EXTRACT(program), EXTRACT(shader)); -} - -GL_SAME_METHOD_1(Disable, disable, unsigned long) - -void GraphicsContext3D::disableVertexAttribArray(unsigned long index) -{ - m_internal->disableVertexAttribArray(index); -} - -void GraphicsContext3D::drawArrays(unsigned long mode, long first, long count) -{ - switch (mode) { - case GL_TRIANGLES: - case GL_TRIANGLE_STRIP: - case GL_TRIANGLE_FAN: - case GL_POINTS: - case GL_LINE_STRIP: - case GL_LINE_LOOP: - case GL_LINES: - break; - default: // FIXME: default cases are discouraged in WebKit. - // FIXME: output log message, raise exception. - // LogMessage(NS_LITERAL_CSTRING("drawArrays: invalid mode")); - // return NS_ERROR_DOM_SYNTAX_ERR; - return; - } - - if (first+count < first || first+count < count) { - // FIXME: output log message, raise exception. - // LogMessage(NS_LITERAL_CSTRING("drawArrays: overflow in first+count")); - // return NS_ERROR_INVALID_ARG; - return; - } - - // FIXME: validate against currently bound buffer. - // if (!ValidateBuffers(first+count)) - // return NS_ERROR_INVALID_ARG; - - makeContextCurrent(); - glDrawArrays(mode, first, count); -} - -void GraphicsContext3D::drawElements(unsigned long mode, unsigned long count, unsigned long type, long offset) -{ - makeContextCurrent(); - // FIXME: make this verification more efficient. - GLint binding = 0; - GLenum binding_target = GL_ELEMENT_ARRAY_BUFFER_BINDING; - glGetIntegerv(binding_target, &binding); - if (binding <= 0) { - // FIXME: raise exception. - // LogMessagef(("bufferData: no buffer bound")); - return; - } - glDrawElements(mode, count, type, - reinterpret_cast<void*>(static_cast<intptr_t>(offset))); -} - -GL_SAME_METHOD_1(Enable, enable, unsigned long) - -void GraphicsContext3D::enableVertexAttribArray(unsigned long index) -{ - m_internal->enableVertexAttribArray(index); -} - -GL_SAME_METHOD_0(Finish, finish) - -GL_SAME_METHOD_0(Flush, flush) - -GL_SAME_METHOD_4_X4(FramebufferRenderbuffer, framebufferRenderbuffer, unsigned long, unsigned long, unsigned long, WebGLRenderbuffer*) - -GL_SAME_METHOD_5_X4(FramebufferTexture2D, framebufferTexture2D, unsigned long, unsigned long, unsigned long, WebGLTexture*, long) - -GL_SAME_METHOD_1(FrontFace, frontFace, unsigned long) - -void GraphicsContext3D::generateMipmap(unsigned long target) -{ - makeContextCurrent(); - if (glGenerateMipmapEXT) - glGenerateMipmapEXT(target); - // FIXME: provide alternative code path? This will be unpleasant - // to implement if glGenerateMipmapEXT is not available -- it will - // require a texture readback and re-upload. -} - -bool GraphicsContext3D::getActiveAttrib(WebGLProgram* program, unsigned long index, ActiveInfo& info) -{ - if (!program) - return false; - GLint maxNameLength = -1; - glGetProgramiv(EXTRACT(program), GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &maxNameLength); - if (maxNameLength < 0) - return false; - GLchar* name = 0; - if (!tryFastMalloc(maxNameLength * sizeof(GLchar)).getValue(name)) - return false; - GLsizei length = 0; - GLint size = -1; - GLenum type = 0; - glGetActiveAttrib(EXTRACT(program), index, maxNameLength, - &length, &size, &type, name); - if (size < 0) { - fastFree(name); - return false; - } - info.name = String(name, length); - info.type = type; - info.size = size; - fastFree(name); - return true; -} - -bool GraphicsContext3D::getActiveUniform(WebGLProgram* program, unsigned long index, ActiveInfo& info) -{ - if (!program) - return false; - GLint maxNameLength = -1; - glGetProgramiv(EXTRACT(program), GL_ACTIVE_UNIFORM_MAX_LENGTH, &maxNameLength); - if (maxNameLength < 0) - return false; - GLchar* name = 0; - if (!tryFastMalloc(maxNameLength * sizeof(GLchar)).getValue(name)) - return false; - GLsizei length = 0; - GLint size = -1; - GLenum type = 0; - glGetActiveUniform(EXTRACT(program), index, maxNameLength, - &length, &size, &type, name); - if (size < 0) { - fastFree(name); - return false; - } - info.name = String(name, length); - info.type = type; - info.size = size; - fastFree(name); - return true; -} - -int GraphicsContext3D::getAttribLocation(WebGLProgram* program, const String& name) -{ - if (!program) - return -1; - - makeContextCurrent(); - return glGetAttribLocation(EXTRACT(program), name.utf8().data()); -} - -bool GraphicsContext3D::getBoolean(unsigned long pname) -{ - makeContextCurrent(); - GLboolean val; - // FIXME: validate pname to ensure it returns only a single value. - glGetBooleanv(pname, &val); - return static_cast<bool>(val); -} - -PassRefPtr<WebGLUnsignedByteArray> GraphicsContext3D::getBooleanv(unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getBufferParameteri(unsigned long target, unsigned long pname) -{ - makeContextCurrent(); - GLint data; - glGetBufferParameteriv(target, pname, &data); - return static_cast<int>(data); -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getBufferParameteriv(unsigned long target, unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -unsigned long GraphicsContext3D::getError() -{ - makeContextCurrent(); - return glGetError(); -} - -float GraphicsContext3D::getFloat(unsigned long pname) -{ - makeContextCurrent(); - GLfloat val; - // FIXME: validate pname to ensure it returns only a single value. - glGetFloatv(pname, &val); - return static_cast<float>(val); -} - -PassRefPtr<WebGLFloatArray> GraphicsContext3D::getFloatv(unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getFramebufferAttachmentParameteri(unsigned long target, - unsigned long attachment, - unsigned long pname) -{ - makeContextCurrent(); - GLint data; - glGetFramebufferAttachmentParameteriv(target, attachment, pname, &data); - return static_cast<int>(data); -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getFramebufferAttachmentParameteriv(unsigned long target, - unsigned long attachment, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getInteger(unsigned long pname) -{ - makeContextCurrent(); - GLint val; - // FIXME: validate pname to ensure it returns only a single value. - glGetIntegerv(pname, &val); - return static_cast<int>(val); -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getIntegerv(unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getProgrami(WebGLProgram* program, - unsigned long pname) -{ - makeContextCurrent(); - GLint param; - glGetProgramiv(EXTRACT(program), pname, ¶m); - return static_cast<int>(param); -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getProgramiv(WebGLProgram* program, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -String GraphicsContext3D::getProgramInfoLog(WebGLProgram* program) -{ - makeContextCurrent(); - GLuint programID = EXTRACT(program); - GLint logLength; - glGetProgramiv(programID, GL_INFO_LOG_LENGTH, &logLength); - if (!logLength) - return String(); - GLchar* log = 0; - if (!tryFastMalloc(logLength * sizeof(GLchar)).getValue(log)) - return String(); - GLsizei returnedLogLength; - glGetProgramInfoLog(programID, logLength, &returnedLogLength, log); - ASSERT(logLength == returnedLogLength + 1); - String res = String(log, returnedLogLength); - fastFree(log); - return res; -} - -int GraphicsContext3D::getRenderbufferParameteri(unsigned long target, - unsigned long pname) -{ - makeContextCurrent(); - GLint param; - glGetRenderbufferParameteriv(target, pname, ¶m); - return static_cast<int>(param); -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getRenderbufferParameteriv(unsigned long target, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getShaderi(WebGLShader* shader, - unsigned long pname) -{ - makeContextCurrent(); - GLint param; - glGetShaderiv(EXTRACT(shader), pname, ¶m); - return static_cast<int>(param); -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getShaderiv(WebGLShader* shader, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -String GraphicsContext3D::getShaderInfoLog(WebGLShader* shader) -{ - makeContextCurrent(); - GLuint shaderID = EXTRACT(shader); - GLint logLength; - glGetShaderiv(shaderID, GL_INFO_LOG_LENGTH, &logLength); - if (!logLength) - return String(); - GLchar* log = 0; - if (!tryFastMalloc(logLength * sizeof(GLchar)).getValue(log)) - return String(); - GLsizei returnedLogLength; - glGetShaderInfoLog(shaderID, logLength, &returnedLogLength, log); - ASSERT(logLength == returnedLogLength + 1); - String res = String(log, returnedLogLength); - fastFree(log); - return res; -} - -String GraphicsContext3D::getShaderSource(WebGLShader* shader) -{ - makeContextCurrent(); - GLuint shaderID = EXTRACT(shader); - GLint logLength; - glGetShaderiv(shaderID, GL_SHADER_SOURCE_LENGTH, &logLength); - if (!logLength) - return String(); - GLchar* log = 0; - if (!tryFastMalloc(logLength * sizeof(GLchar)).getValue(log)) - return String(); - GLsizei returnedLogLength; - glGetShaderSource(shaderID, logLength, &returnedLogLength, log); - ASSERT(logLength == returnedLogLength + 1); - String res = String(log, returnedLogLength); - fastFree(log); - return res; -} - -String GraphicsContext3D::getString(unsigned long name) -{ - makeContextCurrent(); - return String(reinterpret_cast<const char*>(glGetString(name))); -} - -float GraphicsContext3D::getTexParameterf(unsigned long target, unsigned long pname) -{ - makeContextCurrent(); - if (!m_internal->validateTextureTarget(target)) { - // FIXME: throw exception. - return 0; - } - - if (!m_internal->validateTextureParameter(pname)) { - // FIXME: throw exception. - return 0; - } - - GLfloat param; - glGetTexParameterfv(target, pname, ¶m); - return static_cast<float>(param); -} - -PassRefPtr<WebGLFloatArray> GraphicsContext3D::getTexParameterfv(unsigned long target, unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getTexParameteri(unsigned long target, unsigned long pname) -{ - makeContextCurrent(); - if (!m_internal->validateTextureTarget(target)) { - // FIXME: throw exception. - return 0; - } - - if (!m_internal->validateTextureParameter(pname)) { - // FIXME: throw exception. - return 0; - } - - GLint param; - glGetTexParameteriv(target, pname, ¶m); - return static_cast<int>(param); -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getTexParameteriv(unsigned long target, unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -float GraphicsContext3D::getUniformf(WebGLProgram* program, long location) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -PassRefPtr<WebGLFloatArray> GraphicsContext3D::getUniformfv(WebGLProgram* program, long location) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getUniformi(WebGLProgram* program, long location) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getUniformiv(WebGLProgram* program, long location) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -long GraphicsContext3D::getUniformLocation(WebGLProgram* program, const String& name) -{ - if (!program) - return -1; - - makeContextCurrent(); - return glGetUniformLocation(EXTRACT(program), name.utf8().data()); -} - -float GraphicsContext3D::getVertexAttribf(unsigned long index, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -PassRefPtr<WebGLFloatArray> GraphicsContext3D::getVertexAttribfv(unsigned long index, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -int GraphicsContext3D::getVertexAttribi(unsigned long index, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -PassRefPtr<WebGLIntArray> GraphicsContext3D::getVertexAttribiv(unsigned long index, - unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -long GraphicsContext3D::getVertexAttribOffset(unsigned long index, unsigned long pname) -{ - // FIXME: implement. - notImplemented(); - return 0; -} - -GL_SAME_METHOD_2(Hint, hint, unsigned long, unsigned long); - -bool GraphicsContext3D::isBuffer(WebGLBuffer* buffer) -{ - makeContextCurrent(); - return glIsBuffer(EXTRACT(buffer)); -} - -bool GraphicsContext3D::isEnabled(unsigned long cap) -{ - makeContextCurrent(); - return glIsEnabled(cap); -} - -bool GraphicsContext3D::isFramebuffer(WebGLFramebuffer* framebuffer) -{ - makeContextCurrent(); - return glIsFramebuffer(EXTRACT(framebuffer)); -} - -bool GraphicsContext3D::isProgram(WebGLProgram* program) -{ - makeContextCurrent(); - return glIsProgram(EXTRACT(program)); -} - -bool GraphicsContext3D::isRenderbuffer(WebGLRenderbuffer* renderbuffer) -{ - makeContextCurrent(); - return glIsRenderbuffer(EXTRACT(renderbuffer)); -} - -bool GraphicsContext3D::isShader(WebGLShader* shader) -{ - makeContextCurrent(); - return glIsShader(EXTRACT(shader)); -} - -bool GraphicsContext3D::isTexture(WebGLTexture* texture) -{ - makeContextCurrent(); - return glIsTexture(EXTRACT(texture)); -} - -GL_SAME_METHOD_1(LineWidth, lineWidth, double) - -GL_SAME_METHOD_1_X(LinkProgram, linkProgram, WebGLProgram*) - -void GraphicsContext3D::pixelStorei(unsigned long pname, long param) -{ - if (pname != GL_PACK_ALIGNMENT && pname != GL_UNPACK_ALIGNMENT) { - // FIXME: Create a fake GL error and throw an exception. - return; - } - - makeContextCurrent(); - glPixelStorei(pname, param); -} - -GL_SAME_METHOD_2(PolygonOffset, polygonOffset, double, double) - -PassRefPtr<WebGLArray> GraphicsContext3D::readPixels(long x, long y, - unsigned long width, unsigned long height, - unsigned long format, unsigned long type) { - // FIXME: support more pixel formats and types. - if (!((format == GL_RGBA) && (type == GL_UNSIGNED_BYTE))) - return 0; - - // FIXME: take into account pack alignment. - RefPtr<WebGLUnsignedByteArray> array = WebGLUnsignedByteArray::create(width * height * 4); - glReadPixels(x, y, width, height, format, type, array->baseAddress()); - return array; -} - -void GraphicsContext3D::releaseShaderCompiler() -{ -} - -GL_SAME_METHOD_4(RenderbufferStorage, renderbufferStorage, unsigned long, unsigned long, unsigned long, unsigned long) - -GL_SAME_METHOD_2(SampleCoverage, sampleCoverage, double, bool) - -GL_SAME_METHOD_4(Scissor, scissor, long, long, unsigned long, unsigned long) - -void GraphicsContext3D::shaderSource(WebGLShader* shader, const String& source) -{ - makeContextCurrent(); - CString str = source.utf8(); - const char* data = str.data(); - GLint length = str.length(); - glShaderSource(EXTRACT(shader), 1, &data, &length); -} - -GL_SAME_METHOD_3(StencilFunc, stencilFunc, unsigned long, long, unsigned long) - -GL_SAME_METHOD_4(StencilFuncSeparate, stencilFuncSeparate, unsigned long, unsigned long, long, unsigned long) - -GL_SAME_METHOD_1(StencilMask, stencilMask, unsigned long) - -GL_SAME_METHOD_2(StencilMaskSeparate, stencilMaskSeparate, unsigned long, unsigned long) - -GL_SAME_METHOD_3(StencilOp, stencilOp, unsigned long, unsigned long, unsigned long) - -GL_SAME_METHOD_4(StencilOpSeparate, stencilOpSeparate, unsigned long, unsigned long, unsigned long, unsigned long) - -int GraphicsContext3D::texImage2D(unsigned target, - unsigned level, - unsigned internalformat, - unsigned width, - unsigned height, - unsigned border, - unsigned format, - unsigned type, - WebGLArray* pixels) -{ - // FIXME: must do validation similar to JOGL's to ensure that - // the incoming array is of the appropriate length. - glTexImage2D(target, - level, - internalformat, - width, - height, - border, - format, - type, - pixels->baseAddress()); - return 0; -} - -int GraphicsContext3D::texImage2D(unsigned target, - unsigned level, - unsigned internalformat, - unsigned width, - unsigned height, - unsigned border, - unsigned format, - unsigned type, - ImageData* pixels) -{ - // FIXME: implement. - notImplemented(); - return -1; -} - -// Remove premultiplied alpha from color channels. -// FIXME: this is lossy. Must retrieve original values from HTMLImageElement. -static void unmultiplyAlpha(unsigned char* rgbaData, int numPixels) -{ - for (int j = 0; j < numPixels; j++) { - float b = rgbaData[4*j+0] / 255.0f; - float g = rgbaData[4*j+1] / 255.0f; - float r = rgbaData[4*j+2] / 255.0f; - float a = rgbaData[4*j+3] / 255.0f; - if (a > 0.0f) { - b /= a; - g /= a; - r /= a; - b = (b > 1.0f) ? 1.0f : b; - g = (g > 1.0f) ? 1.0f : g; - r = (r > 1.0f) ? 1.0f : r; - rgbaData[4*j+0] = (unsigned char) (b * 255.0f); - rgbaData[4*j+1] = (unsigned char) (g * 255.0f); - rgbaData[4*j+2] = (unsigned char) (r * 255.0f); - } - } -} - -// FIXME: this must be changed to refer to the original image data -// rather than unmultiplying the alpha channel. -static int texImage2DHelper(unsigned target, unsigned level, - int width, int height, - int rowBytes, - bool flipY, - bool premultiplyAlpha, - GLenum format, - bool skipAlpha, - unsigned char* pixels) -{ - ASSERT(format == GL_RGBA || format == GL_BGRA); - GLint internalFormat = GL_RGBA8; - if (skipAlpha) { - internalFormat = GL_RGB8; - // Ignore the alpha channel - premultiplyAlpha = true; - } - if (flipY) { - // Need to flip images vertically. To avoid making a copy of - // the entire image, we perform a ton of glTexSubImage2D - // calls. FIXME: should rethink this strategy for efficiency. - glTexImage2D(target, level, internalFormat, - width, - height, - 0, - format, - GL_UNSIGNED_BYTE, - 0); - unsigned char* row = 0; - bool allocatedRow = false; - if (!premultiplyAlpha) { - row = new unsigned char[rowBytes]; - allocatedRow = true; - } - for (int i = 0; i < height; i++) { - if (premultiplyAlpha) - row = pixels + (rowBytes * i); - else { - memcpy(row, pixels + (rowBytes * i), rowBytes); - unmultiplyAlpha(row, width); - } - glTexSubImage2D(target, level, 0, height - i - 1, - width, 1, - format, - GL_UNSIGNED_BYTE, - row); - } - if (allocatedRow) - delete[] row; - } else { - // The pixels of cube maps' faces are defined with a top-down - // scanline ordering, unlike GL_TEXTURE_2D, so when uploading - // these, the above vertical flip is the wrong thing to do. - if (premultiplyAlpha) - glTexImage2D(target, level, internalFormat, - width, - height, - 0, - format, - GL_UNSIGNED_BYTE, - pixels); - else { - glTexImage2D(target, level, internalFormat, - width, - height, - 0, - format, - GL_UNSIGNED_BYTE, - 0); - unsigned char* row = new unsigned char[rowBytes]; - for (int i = 0; i < height; i++) { - memcpy(row, pixels + (rowBytes * i), rowBytes); - unmultiplyAlpha(row, width); - glTexSubImage2D(target, level, 0, i, - width, 1, - format, - GL_UNSIGNED_BYTE, - row); - } - delete[] row; - } - } - return 0; -} - -int GraphicsContext3D::texImage2D(unsigned target, unsigned level, Image* image, - bool flipY, bool premultiplyAlpha) -{ - ASSERT(image); - - int res = -1; -#if PLATFORM(SKIA) - NativeImageSkia* skiaImage = image->nativeImageForCurrentFrame(); - if (!skiaImage) { - ASSERT_NOT_REACHED(); - return -1; - } - SkBitmap::Config skiaConfig = skiaImage->config(); - // FIXME: must support more image configurations. - if (skiaConfig != SkBitmap::kARGB_8888_Config) { - ASSERT_NOT_REACHED(); - return -1; - } - SkBitmap& skiaImageRef = *skiaImage; - SkAutoLockPixels lock(skiaImageRef); - int width = skiaImage->width(); - int height = skiaImage->height(); - unsigned char* pixels = - reinterpret_cast<unsigned char*>(skiaImage->getPixels()); - int rowBytes = skiaImage->rowBytes(); - res = texImage2DHelper(target, level, - width, height, - rowBytes, - flipY, premultiplyAlpha, - GL_BGRA, - false, - pixels); -#elif PLATFORM(CG) - CGImageRef cgImage = image->nativeImageForCurrentFrame(); - if (!cgImage) { - ASSERT_NOT_REACHED(); - return -1; - } - int width = CGImageGetWidth(cgImage); - int height = CGImageGetHeight(cgImage); - int rowBytes = width * 4; - CGImageAlphaInfo info = CGImageGetAlphaInfo(cgImage); - bool skipAlpha = (info == kCGImageAlphaNone - || info == kCGImageAlphaNoneSkipLast - || info == kCGImageAlphaNoneSkipFirst); - unsigned char* imageData = new unsigned char[height * rowBytes]; - CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); - CGContextRef tmpContext = CGBitmapContextCreate(imageData, width, height, 8, rowBytes, - colorSpace, - kCGImageAlphaPremultipliedLast); - CGColorSpaceRelease(colorSpace); - CGContextDrawImage(tmpContext, - CGRectMake(0, 0, static_cast<CGFloat>(width), static_cast<CGFloat>(height)), - cgImage); - CGContextRelease(tmpContext); - res = texImage2DHelper(target, level, width, height, rowBytes, - flipY, premultiplyAlpha, GL_RGBA, skipAlpha, imageData); - delete[] imageData; -#else -#error Must port to your platform -#endif - return res; -} - -int GraphicsContext3D::texImage2D(unsigned target, unsigned level, HTMLVideoElement* video, - bool flipY, bool premultiplyAlpha) -{ - // FIXME: implement. - notImplemented(); - return -1; -} - -GL_SAME_METHOD_3(TexParameterf, texParameterf, unsigned, unsigned, float); - -GL_SAME_METHOD_3(TexParameteri, texParameteri, unsigned, unsigned, int); - -int GraphicsContext3D::texSubImage2D(unsigned target, - unsigned level, - unsigned xoffset, - unsigned yoffset, - unsigned width, - unsigned height, - unsigned format, - unsigned type, - WebGLArray* pixels) -{ - // FIXME: implement. - notImplemented(); - return -1; -} - -int GraphicsContext3D::texSubImage2D(unsigned target, - unsigned level, - unsigned xoffset, - unsigned yoffset, - unsigned width, - unsigned height, - unsigned format, - unsigned type, - ImageData* pixels) -{ - // FIXME: implement. - notImplemented(); - return -1; -} - -int GraphicsContext3D::texSubImage2D(unsigned target, - unsigned level, - unsigned xoffset, - unsigned yoffset, - unsigned width, - unsigned height, - Image* image, - bool flipY, - bool premultiplyAlpha) -{ - // FIXME: implement. - notImplemented(); - return -1; -} - -int GraphicsContext3D::texSubImage2D(unsigned target, - unsigned level, - unsigned xoffset, - unsigned yoffset, - unsigned width, - unsigned height, - HTMLVideoElement* video, - bool flipY, - bool premultiplyAlpha) -{ - // FIXME: implement. - notImplemented(); - return -1; -} - -GL_SAME_METHOD_2(Uniform1f, uniform1f, long, float) - -void GraphicsContext3D::uniform1fv(long location, float* v, int size) -{ - makeContextCurrent(); - glUniform1fv(location, size, v); -} - -GL_SAME_METHOD_2(Uniform1i, uniform1i, long, int) - -void GraphicsContext3D::uniform1iv(long location, int* v, int size) -{ - makeContextCurrent(); - glUniform1iv(location, size, v); -} - -GL_SAME_METHOD_3(Uniform2f, uniform2f, long, float, float) - -void GraphicsContext3D::uniform2fv(long location, float* v, int size) -{ - makeContextCurrent(); - glUniform2fv(location, size, v); -} - -GL_SAME_METHOD_3(Uniform2i, uniform2i, long, int, int) - -void GraphicsContext3D::uniform2iv(long location, int* v, int size) -{ - makeContextCurrent(); - glUniform2iv(location, size, v); -} - -GL_SAME_METHOD_4(Uniform3f, uniform3f, long, float, float, float) - -void GraphicsContext3D::uniform3fv(long location, float* v, int size) -{ - makeContextCurrent(); - glUniform3fv(location, size, v); -} - -GL_SAME_METHOD_4(Uniform3i, uniform3i, long, int, int, int) - -void GraphicsContext3D::uniform3iv(long location, int* v, int size) -{ - makeContextCurrent(); - glUniform3iv(location, size, v); -} - -GL_SAME_METHOD_5(Uniform4f, uniform4f, long, float, float, float, float) - -void GraphicsContext3D::uniform4fv(long location, float* v, int size) -{ - makeContextCurrent(); - glUniform4fv(location, size, v); -} - -GL_SAME_METHOD_5(Uniform4i, uniform4i, long, int, int, int, int) - -void GraphicsContext3D::uniform4iv(long location, int* v, int size) -{ - makeContextCurrent(); - glUniform4iv(location, size, v); -} - -void GraphicsContext3D::uniformMatrix2fv(long location, bool transpose, float* value, int size) -{ - makeContextCurrent(); - glUniformMatrix2fv(location, size, transpose, value); -} - -void GraphicsContext3D::uniformMatrix3fv(long location, bool transpose, float* value, int size) -{ - makeContextCurrent(); - glUniformMatrix3fv(location, size, transpose, value); -} - -void GraphicsContext3D::uniformMatrix4fv(long location, bool transpose, float* value, int size) -{ - makeContextCurrent(); - glUniformMatrix4fv(location, size, transpose, value); -} - -GL_SAME_METHOD_1_X(UseProgram, useProgram, WebGLProgram*) - -GL_SAME_METHOD_1_X(ValidateProgram, validateProgram, WebGLProgram*) - -GL_SAME_METHOD_2(VertexAttrib1f, vertexAttrib1f, unsigned long, float) - -void GraphicsContext3D::vertexAttrib1fv(unsigned long indx, float* values) -{ - makeContextCurrent(); - glVertexAttrib1fv(indx, values); -} - -GL_SAME_METHOD_3(VertexAttrib2f, vertexAttrib2f, unsigned long, float, float) - -void GraphicsContext3D::vertexAttrib2fv(unsigned long indx, float* values) -{ - makeContextCurrent(); - glVertexAttrib2fv(indx, values); -} - -GL_SAME_METHOD_4(VertexAttrib3f, vertexAttrib3f, unsigned long, float, float, float) - -void GraphicsContext3D::vertexAttrib3fv(unsigned long indx, float* values) -{ - makeContextCurrent(); - glVertexAttrib3fv(indx, values); -} - -GL_SAME_METHOD_5(VertexAttrib4f, vertexAttrib4f, unsigned long, float, float, float, float) - -void GraphicsContext3D::vertexAttrib4fv(unsigned long indx, float* values) -{ - makeContextCurrent(); - glVertexAttrib4fv(indx, values); -} - -void GraphicsContext3D::vertexAttribPointer(unsigned long indx, int size, int type, bool normalized, - unsigned long stride, unsigned long offset) -{ - m_internal->vertexAttribPointer(indx, size, type, normalized, stride, offset); -} - -void GraphicsContext3D::viewport(long x, long y, unsigned long width, unsigned long height) -{ - makeContextCurrent(); - m_internal->viewportImpl(x, y, width, height); -} - -} - -#endif // ENABLE(3D_CANVAS) diff --git a/webkit/api/src/InspectorClientImpl.cpp b/webkit/api/src/InspectorClientImpl.cpp deleted file mode 100644 index ed4329a..0000000 --- a/webkit/api/src/InspectorClientImpl.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/* - * 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 "InspectorClientImpl.h" - -#include "DOMWindow.h" -#include "FloatRect.h" -#include "InspectorController.h" -#include "NotImplemented.h" -#include "Page.h" -#include "Settings.h" -#include "WebRect.h" -#include "WebURL.h" -#include "WebURLRequest.h" -#include "WebViewClient.h" -#include "WebViewImpl.h" -#include <wtf/Vector.h> - -using namespace WebCore; - -namespace WebKit { - -InspectorClientImpl::InspectorClientImpl(WebViewImpl* webView) - : m_inspectedWebView(webView) -{ - ASSERT(m_inspectedWebView); -} - -InspectorClientImpl::~InspectorClientImpl() -{ -} - -void InspectorClientImpl::inspectorDestroyed() -{ - // Our lifetime is bound to the WebViewImpl. -} - -Page* InspectorClientImpl::createPage() -{ - // This method should never be called in Chrome as inspector front-end lives - // in a separate process. - ASSERT_NOT_REACHED(); - return 0; -} - -void InspectorClientImpl::showWindow() -{ - ASSERT(m_inspectedWebView->devToolsAgentPrivate()); - m_inspectedWebView->page()->inspectorController()->setWindowVisible(true); -} - -void InspectorClientImpl::closeWindow() -{ - if (m_inspectedWebView->page()) - m_inspectedWebView->page()->inspectorController()->setWindowVisible(false); -} - -bool InspectorClientImpl::windowVisible() -{ - ASSERT(m_inspectedWebView->devToolsAgentPrivate()); - return false; -} - -void InspectorClientImpl::attachWindow() -{ - // FIXME: Implement this -} - -void InspectorClientImpl::detachWindow() -{ - // FIXME: Implement this -} - -void InspectorClientImpl::setAttachedWindowHeight(unsigned int height) -{ - // FIXME: Implement this - notImplemented(); -} - -static void invalidateNodeBoundingRect(WebViewImpl* webView) -{ - // FIXME: Is it important to just invalidate the rect of the node region - // given that this is not on a critical codepath? In order to do so, we'd - // have to take scrolling into account. - const WebSize& size = webView->size(); - WebRect damagedRect(0, 0, size.width, size.height); - if (webView->client()) - webView->client()->didInvalidateRect(damagedRect); -} - -void InspectorClientImpl::highlight(Node* node) -{ - // InspectorController does the actually tracking of the highlighted node - // and the drawing of the highlight. Here we just make sure to invalidate - // the rects of the old and new nodes. - hideHighlight(); -} - -void InspectorClientImpl::hideHighlight() -{ - // FIXME: able to invalidate a smaller rect. - invalidateNodeBoundingRect(m_inspectedWebView); -} - -void InspectorClientImpl::inspectedURLChanged(const String& newURL) -{ - // FIXME: Implement this -} - -String InspectorClientImpl::localizedStringsURL() -{ - notImplemented(); - return String(); -} - -String InspectorClientImpl::hiddenPanels() -{ - // Enumerate tabs that are currently disabled. - return "scripts,profiles,databases"; -} - -void InspectorClientImpl::populateSetting(const String& key, InspectorController::Setting& setting) -{ - 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(); -} - -void InspectorClientImpl::removeSetting(const String& key) -{ - loadSettings(); - m_settings->remove(key); - saveSettings(); -} - -void InspectorClientImpl::inspectorWindowObjectCleared() -{ - notImplemented(); -} - -void InspectorClientImpl::loadSettings() -{ - if (m_settings) - return; - - m_settings.set(new SettingsMap); - String data = m_inspectedWebView->inspectorSettings(); - if (data.isEmpty()) - return; - - Vector<String> entries; - data.split("\n", entries); - for (Vector<String>::iterator it = entries.begin(); it != entries.end(); ++it) { - Vector<String> tokens; - it->split(":", tokens); - if (tokens.size() != 3) - continue; - - String name = decodeURLEscapeSequences(tokens[0]); - String type = tokens[1]; - InspectorController::Setting setting; - bool ok = true; - 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))); - else if (type == "boolean") - setting.set(tokens[2] == "true"); - else - continue; - - if (ok) - m_settings->set(name, setting); - } -} - -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; - } - data.append(entry); - data.append("\n"); - } - m_inspectedWebView->setInspectorSettings(data); - if (m_inspectedWebView->client()) - m_inspectedWebView->client()->didUpdateInspectorSettings(); -} - -} // namespace WebKit diff --git a/webkit/api/src/InspectorClientImpl.h b/webkit/api/src/InspectorClientImpl.h deleted file mode 100644 index 62216b2..0000000 --- a/webkit/api/src/InspectorClientImpl.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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. - */ - -#ifndef InspectorClientImpl_h -#define InspectorClientImpl_h - -#include "InspectorClient.h" -#include "InspectorController.h" -#include <wtf/OwnPtr.h> - -namespace WebKit { -class WebViewImpl; - -class InspectorClientImpl : public WebCore::InspectorClient { -public: - InspectorClientImpl(WebViewImpl*); - ~InspectorClientImpl(); - - // InspectorClient methods: - virtual void inspectorDestroyed(); - virtual WebCore::Page* createPage(); - virtual WebCore::String localizedStringsURL(); - virtual WebCore::String hiddenPanels(); - virtual void showWindow(); - virtual void closeWindow(); - virtual bool windowVisible(); - virtual void attachWindow(); - virtual void detachWindow(); - virtual void setAttachedWindowHeight(unsigned height); - virtual void highlight(WebCore::Node*); - 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 inspectorWindowObjectCleared(); - -private: - void loadSettings(); - void saveSettings(); - - // The WebViewImpl of the page being inspected; gets passed to the constructor - WebViewImpl* m_inspectedWebView; - - typedef HashMap<WebCore::String, WebCore::InspectorController::Setting> SettingsMap; - OwnPtr<SettingsMap> m_settings; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/LocalizedStrings.cpp b/webkit/api/src/LocalizedStrings.cpp deleted file mode 100644 index 36b231e..0000000 --- a/webkit/api/src/LocalizedStrings.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/* - * 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 "LocalizedStrings.h" - -#include "IntSize.h" -#include "NotImplemented.h" -#include "PlatformString.h" -#include "StringBuilder.h" - -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebLocalizedString.h" -#include "WebString.h" - -using WebKit::WebLocalizedString; - -namespace WebCore { - -static String query(WebLocalizedString::Name name) -{ - return WebKit::webKitClient()->queryLocalizedString(name); -} - -static String query(WebLocalizedString::Name name, int numericValue) -{ - return WebKit::webKitClient()->queryLocalizedString(name, numericValue); -} - -String searchableIndexIntroduction() -{ - return query(WebLocalizedString::SearchableIndexIntroduction); -} - -String submitButtonDefaultLabel() -{ - return query(WebLocalizedString::SubmitButtonDefaultLabel); -} - -String inputElementAltText() -{ - return query(WebLocalizedString::InputElementAltText); -} - -String resetButtonDefaultLabel() -{ - return query(WebLocalizedString::ResetButtonDefaultLabel); -} - -String fileButtonChooseFileLabel() -{ - return query(WebLocalizedString::FileButtonChooseFileLabel); -} - -String fileButtonNoFileSelectedLabel() -{ - return query(WebLocalizedString::FileButtonNoFileSelectedLabel); -} - -String searchMenuNoRecentSearchesText() -{ - return query(WebLocalizedString::SearchMenuNoRecentSearchesText); -} -String searchMenuRecentSearchesText() -{ - return query(WebLocalizedString::SearchMenuRecentSearchesText); -} -String searchMenuClearRecentSearchesText() -{ - return query(WebLocalizedString::SearchMenuClearRecentSearchesText); -} - -String AXWebAreaText() -{ - return query(WebLocalizedString::AXWebAreaText); -} - -String AXLinkText() -{ - return query(WebLocalizedString::AXLinkText); -} - -String AXListMarkerText() -{ - return query(WebLocalizedString::AXListMarkerText); -} - -String AXImageMapText() -{ - return query(WebLocalizedString::AXImageMapText); -} - -String AXHeadingText() -{ - return query(WebLocalizedString::AXHeadingText); -} - -String AXDefinitionListTermText() -{ - notImplemented(); - return String("term"); -} - -String AXDefinitionListDefinitionText() -{ - notImplemented(); - return String("definition"); -} - -String AXButtonActionVerb() -{ - return query(WebLocalizedString::AXButtonActionVerb); -} - -String AXRadioButtonActionVerb() -{ - return query(WebLocalizedString::AXRadioButtonActionVerb); -} - -String AXTextFieldActionVerb() -{ - return query(WebLocalizedString::AXTextFieldActionVerb); -} - -String AXCheckedCheckBoxActionVerb() -{ - return query(WebLocalizedString::AXCheckedCheckBoxActionVerb); -} - -String AXUncheckedCheckBoxActionVerb() -{ - return query(WebLocalizedString::AXUncheckedCheckBoxActionVerb); -} - -String AXLinkActionVerb() -{ - return query(WebLocalizedString::AXLinkActionVerb); -} - -String multipleFileUploadText(unsigned numberOfFiles) -{ - return query(WebLocalizedString::MultipleFileUploadText, numberOfFiles); -} - -// Used in FTPDirectoryDocument.cpp -String unknownFileSizeText() -{ - return String(); -} - -// The following two functions are not declared in LocalizedStrings.h. -// They are used by the menu for the HTML keygen tag. -String keygenMenuHighGradeKeySize() -{ - return query(WebLocalizedString::KeygenMenuHighGradeKeySize); -} - -String keygenMenuMediumGradeKeySize() -{ - return query(WebLocalizedString::KeygenMenuMediumGradeKeySize); -} - -// Used in ImageDocument.cpp as the title for pages when that page is an image. -String imageTitle(const String& filename, const IntSize& size) -{ - // Note that we cannot use String::format because it works for ASCII only. - StringBuilder result; - result.append(filename); - result.append(" ("); - result.append(String::number(size.width())); - result.append(static_cast<UChar>(0xD7)); // U+00D7 (multiplication sign) - result.append(String::number(size.height())); - result.append(")"); - return result.toString(); -} - -// We don't use these strings, so they return an empty String. We can't just -// make them asserts because webcore still calls them. -String contextMenuItemTagOpenLinkInNewWindow() { return String(); } -String contextMenuItemTagDownloadLinkToDisk() { return String(); } -String contextMenuItemTagCopyLinkToClipboard() { return String(); } -String contextMenuItemTagOpenImageInNewWindow() { return String(); } -String contextMenuItemTagDownloadImageToDisk() { return String(); } -String contextMenuItemTagCopyImageToClipboard() { return String(); } -String contextMenuItemTagOpenFrameInNewWindow() { return String(); } -String contextMenuItemTagCopy() { return String(); } -String contextMenuItemTagGoBack() { return String(); } -String contextMenuItemTagGoForward() { return String(); } -String contextMenuItemTagStop() { return String(); } -String contextMenuItemTagReload() { return String(); } -String contextMenuItemTagCut() { return String(); } -String contextMenuItemTagPaste() { return String(); } -String contextMenuItemTagNoGuessesFound() { return String(); } -String contextMenuItemTagIgnoreSpelling() { return String(); } -String contextMenuItemTagLearnSpelling() { return String(); } -String contextMenuItemTagSearchWeb() { return String(); } -String contextMenuItemTagLookUpInDictionary() { return String(); } -String contextMenuItemTagOpenLink() { return String(); } -String contextMenuItemTagIgnoreGrammar() { return String(); } -String contextMenuItemTagSpellingMenu() { return String(); } -String contextMenuItemTagCheckSpelling() { return String(); } -String contextMenuItemTagCheckSpellingWhileTyping() { return String(); } -String contextMenuItemTagCheckGrammarWithSpelling() { return String(); } -String contextMenuItemTagFontMenu() { return String(); } -String contextMenuItemTagBold() { return String(); } -String contextMenuItemTagItalic() { return String(); } -String contextMenuItemTagUnderline() { return String(); } -String contextMenuItemTagOutline() { return String(); } -String contextMenuItemTagWritingDirectionMenu() { return String(); } -String contextMenuItemTagTextDirectionMenu() { return String(); } -String contextMenuItemTagDefaultDirection() { return String(); } -String contextMenuItemTagLeftToRight() { return String(); } -String contextMenuItemTagRightToLeft() { return String(); } -String contextMenuItemTagInspectElement() { return String(); } -String contextMenuItemTagShowSpellingPanel(bool show) { return String(); } -String mediaElementLiveBroadcastStateText() { return String(); } -String mediaElementLoadingStateText() { return String(); } - -String localizedMediaControlElementString(const String& /*name*/) -{ - // FIXME: to be fixed. - return String(); -} - -String localizedMediaControlElementHelpText(const String& /*name*/) -{ - // FIXME: to be fixed. - return String(); -} - -String localizedMediaTimeDescription(float /*time*/) -{ - // FIXME: to be fixed. - return String(); -} - -} // namespace WebCore diff --git a/webkit/api/src/MediaPlayerPrivateChromium.cpp b/webkit/api/src/MediaPlayerPrivateChromium.cpp deleted file mode 100644 index 09d33d4..0000000 --- a/webkit/api/src/MediaPlayerPrivateChromium.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 "MediaPlayerPrivateChromium.h" - -#if ENABLE(VIDEO) - -#include "WebMediaPlayerClientImpl.h" - -namespace WebCore { - -void MediaPlayerPrivate::registerMediaEngine(MediaEngineRegistrar registrar) -{ - WebKit::WebMediaPlayerClientImpl::registerSelf(registrar); -} - -} // namespace WebCore - -#endif diff --git a/webkit/api/src/NotificationPresenterImpl.cpp b/webkit/api/src/NotificationPresenterImpl.cpp deleted file mode 100644 index 6b22319..0000000 --- a/webkit/api/src/NotificationPresenterImpl.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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 "NotificationPresenterImpl.h" - -#if ENABLE(NOTIFICATIONS) - -#include "Notification.h" -#include "SecurityOrigin.h" - -#include "WebNotification.h" -#include "WebNotificationPermissionCallback.h" -#include "WebNotificationPresenter.h" - -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -class VoidCallbackClient : public WebNotificationPermissionCallback { -public: - VoidCallbackClient(PassRefPtr<VoidCallback> callback) - : m_callback(callback) - { - } - - virtual void permissionRequestComplete() - { - if (m_callback) - m_callback->handleEvent(); - delete this; - } - -private: - RefPtr<VoidCallback> m_callback; -}; - -void NotificationPresenterImpl::initialize(WebNotificationPresenter* presenter) -{ - m_presenter = presenter; -} - -bool NotificationPresenterImpl::isInitialized() -{ - return !!m_presenter; -} - -bool NotificationPresenterImpl::show(Notification* notification) -{ - return m_presenter->show(PassRefPtr<Notification>(notification)); -} - -void NotificationPresenterImpl::cancel(Notification* notification) -{ - m_presenter->cancel(PassRefPtr<Notification>(notification)); -} - -void NotificationPresenterImpl::notificationObjectDestroyed(Notification* notification) -{ - m_presenter->objectDestroyed(PassRefPtr<Notification>(notification)); -} - -NotificationPresenter::Permission NotificationPresenterImpl::checkPermission(SecurityOrigin* origin) -{ - int result = m_presenter->checkPermission(origin->toString()); - return static_cast<NotificationPresenter::Permission>(result); -} - -void NotificationPresenterImpl::requestPermission(SecurityOrigin* origin, PassRefPtr<VoidCallback> callback) -{ - m_presenter->requestPermission(origin->toString(), new VoidCallbackClient(callback)); -} - -} // namespace WebKit - -#endif // ENABLE(NOTIFICATIONS) diff --git a/webkit/api/src/NotificationPresenterImpl.h b/webkit/api/src/NotificationPresenterImpl.h deleted file mode 100644 index 4afe9dc..0000000 --- a/webkit/api/src/NotificationPresenterImpl.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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. - */ - -#ifndef NotificationPresenterImpl_h -#define NotificationPresenterImpl_h - -#include "NotificationPresenter.h" -#include "VoidCallback.h" - -#include <wtf/HashMap.h> -#include <wtf/PassRefPtr.h> - -#if ENABLE(NOTIFICATIONS) - -namespace WebKit { - -class WebNotificationPresenter; - -class NotificationPresenterImpl : public WebCore::NotificationPresenter { -public: - NotificationPresenterImpl() : m_presenter(0) { } - - void initialize(WebNotificationPresenter* presenter); - bool isInitialized(); - - // WebCore::NotificationPresenter implementation. - virtual bool show(WebCore::Notification* object); - virtual void cancel(WebCore::Notification* object); - virtual void notificationObjectDestroyed(WebCore::Notification* object); - virtual WebCore::NotificationPresenter::Permission checkPermission(WebCore::SecurityOrigin* origin); - virtual void requestPermission(WebCore::SecurityOrigin* origin, WTF::PassRefPtr<WebCore::VoidCallback> callback); - -private: - // WebNotificationPresenter that this object delegates to. - WebNotificationPresenter* m_presenter; -}; - -} // namespace WebKit - -#endif // ENABLE(NOTIFICATIONS) - -#endif diff --git a/webkit/api/src/PlatformMessagePortChannel.cpp b/webkit/api/src/PlatformMessagePortChannel.cpp deleted file mode 100644 index f8c41d3..0000000 --- a/webkit/api/src/PlatformMessagePortChannel.cpp +++ /dev/null @@ -1,258 +0,0 @@ -/* - * 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 "PlatformMessagePortChannel.h" - -#include "MessagePort.h" -#include "ScriptExecutionContext.h" -#include "SerializedScriptValue.h" - -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebMessagePortChannel.h" -#include "WebString.h" - -using namespace WebKit; - -namespace WebCore { - -PassOwnPtr<MessagePortChannel> MessagePortChannel::create(PassRefPtr<PlatformMessagePortChannel> channel) -{ - return new MessagePortChannel(channel); -} - -void MessagePortChannel::createChannel(PassRefPtr<MessagePort> port1, PassRefPtr<MessagePort> port2) -{ - PlatformMessagePortChannel::createChannel(port1, port2); -} - -MessagePortChannel::MessagePortChannel(PassRefPtr<PlatformMessagePortChannel> channel) - : m_channel(channel) -{ -} - -MessagePortChannel::~MessagePortChannel() -{ - // Make sure we close our platform channel when the base is freed, to keep the channel objects from leaking. - m_channel->close(); -} - -bool MessagePortChannel::entangleIfOpen(MessagePort* port) -{ - return m_channel->entangleIfOpen(port); -} - -void MessagePortChannel::disentangle() -{ - m_channel->disentangle(); -} - -void MessagePortChannel::postMessageToRemote(PassOwnPtr<MessagePortChannel::EventData> message) -{ - m_channel->postMessageToRemote(message); -} - -bool MessagePortChannel::tryGetMessageFromRemote(OwnPtr<MessagePortChannel::EventData>& result) -{ - return m_channel->tryGetMessageFromRemote(result); -} - -void MessagePortChannel::close() -{ - m_channel->close(); -} - -bool MessagePortChannel::isConnectedTo(MessagePort* port) -{ - return m_channel->isConnectedTo(port); -} - -bool MessagePortChannel::hasPendingActivity() -{ - return m_channel->hasPendingActivity(); -} - -MessagePort* MessagePortChannel::locallyEntangledPort(const ScriptExecutionContext* context) -{ - // This is just an optimization, so return 0 always. - return 0; -} - - -PassRefPtr<PlatformMessagePortChannel> PlatformMessagePortChannel::create() -{ - return adoptRef(new PlatformMessagePortChannel()); -} - -PassRefPtr<PlatformMessagePortChannel> PlatformMessagePortChannel::create( - WebMessagePortChannel* channel) -{ - return adoptRef(new PlatformMessagePortChannel(channel)); -} - - -PlatformMessagePortChannel::PlatformMessagePortChannel() - : m_localPort(0) -{ - m_webChannel = webKitClient()->createMessagePortChannel(); - if (m_webChannel) - m_webChannel->setClient(this); -} - -PlatformMessagePortChannel::PlatformMessagePortChannel(WebMessagePortChannel* channel) - : m_localPort(0) - , m_webChannel(channel) -{ -} - -PlatformMessagePortChannel::~PlatformMessagePortChannel() -{ - if (m_webChannel) - m_webChannel->destroy(); -} - -void PlatformMessagePortChannel::createChannel(PassRefPtr<MessagePort> port1, PassRefPtr<MessagePort> port2) -{ - // Create proxies for each endpoint. - RefPtr<PlatformMessagePortChannel> channel1 = PlatformMessagePortChannel::create(); - RefPtr<PlatformMessagePortChannel> channel2 = PlatformMessagePortChannel::create(); - - // Entangle the two endpoints. - channel1->setEntangledChannel(channel2); - channel2->setEntangledChannel(channel1); - - // Now entangle the proxies with the appropriate local ports. - port1->entangle(MessagePortChannel::create(channel2)); - port2->entangle(MessagePortChannel::create(channel1)); -} - -void PlatformMessagePortChannel::messageAvailable() -{ - MutexLocker lock(m_mutex); - if (m_localPort) - m_localPort->messageAvailable(); -} - -bool PlatformMessagePortChannel::entangleIfOpen(MessagePort* port) -{ - MutexLocker lock(m_mutex); - m_localPort = port; - return true; -} - -void PlatformMessagePortChannel::disentangle() -{ - MutexLocker lock(m_mutex); - m_localPort = 0; -} - -void PlatformMessagePortChannel::postMessageToRemote(PassOwnPtr<MessagePortChannel::EventData> message) -{ - if (!m_localPort || !m_webChannel) - return; - - WebString messageString = message->message()->toString(); - OwnPtr<WebCore::MessagePortChannelArray> channels = message->channels(); - WebMessagePortChannelArray* webChannels = 0; - if (channels.get() && channels->size()) { - webChannels = new WebMessagePortChannelArray(channels->size()); - for (size_t i = 0; i < channels->size(); ++i) { - WebCore::PlatformMessagePortChannel* platformChannel = (*channels)[i]->channel(); - (*webChannels)[i] = platformChannel->webChannelRelease(); - (*webChannels)[i]->setClient(0); - } - } - m_webChannel->postMessage(messageString, webChannels); -} - -bool PlatformMessagePortChannel::tryGetMessageFromRemote(OwnPtr<MessagePortChannel::EventData>& result) -{ - if (!m_webChannel) - return false; - - WebString message; - WebMessagePortChannelArray webChannels; - bool rv = m_webChannel->tryGetMessage(&message, webChannels); - if (rv) { - OwnPtr<MessagePortChannelArray> channels; - if (webChannels.size()) { - channels = new MessagePortChannelArray(webChannels.size()); - for (size_t i = 0; i < webChannels.size(); ++i) { - RefPtr<PlatformMessagePortChannel> platformChannel = create(webChannels[i]); - webChannels[i]->setClient(platformChannel.get()); - (*channels)[i] = MessagePortChannel::create(platformChannel); - } - } - RefPtr<SerializedScriptValue> serializedMessage = SerializedScriptValue::create(message); - result = MessagePortChannel::EventData::create(serializedMessage.release(), channels.release()); - } - - return rv; -} - -void PlatformMessagePortChannel::close() -{ - MutexLocker lock(m_mutex); - // Disentangle ourselves from the other end. We still maintain a reference to m_webChannel, - // since previously-existing messages should still be delivered. - m_localPort = 0; - m_entangledChannel = 0; -} - -bool PlatformMessagePortChannel::isConnectedTo(MessagePort* port) -{ - MutexLocker lock(m_mutex); - return m_entangledChannel && m_entangledChannel->m_localPort == port; -} - -bool PlatformMessagePortChannel::hasPendingActivity() -{ - MutexLocker lock(m_mutex); - return m_localPort; -} - -void PlatformMessagePortChannel::setEntangledChannel(PassRefPtr<PlatformMessagePortChannel> remote) -{ - if (m_webChannel) - m_webChannel->entangle(remote->m_webChannel); - - MutexLocker lock(m_mutex); - m_entangledChannel = remote; -} - -WebMessagePortChannel* PlatformMessagePortChannel::webChannelRelease() -{ - WebMessagePortChannel* rv = m_webChannel; - m_webChannel = 0; - return rv; -} - -} // namespace WebCore diff --git a/webkit/api/src/PlatformMessagePortChannel.h b/webkit/api/src/PlatformMessagePortChannel.h deleted file mode 100644 index 05e8397..0000000 --- a/webkit/api/src/PlatformMessagePortChannel.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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. - */ - -#ifndef PlatformMessagePortChannel_h -#define PlatformMessagePortChannel_h - -// FIXME: This relative path is a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebMessagePortChannelClient.h" - -#include "MessagePortChannel.h" - -#include <wtf/PassRefPtr.h> -#include <wtf/Threading.h> - -namespace WebKit { -class WebMessagePortChannel; -} - -namespace WebCore { - -class MessagePort; - -// PlatformMessagePortChannel is a platform-dependent interface to the remote side of a message channel. -class PlatformMessagePortChannel : public ThreadSafeShared<PlatformMessagePortChannel>, - public WebKit::WebMessagePortChannelClient { -public: - static void createChannel(PassRefPtr<MessagePort>, PassRefPtr<MessagePort>); - static PassRefPtr<PlatformMessagePortChannel> create(); - static PassRefPtr<PlatformMessagePortChannel> create(WebKit::WebMessagePortChannel*); - - // APIs delegated from MessagePortChannel.h - bool entangleIfOpen(MessagePort*); - void disentangle(); - void postMessageToRemote(PassOwnPtr<MessagePortChannel::EventData>); - bool tryGetMessageFromRemote(OwnPtr<MessagePortChannel::EventData>&); - void close(); - bool isConnectedTo(MessagePort* port); - bool hasPendingActivity(); - - // Releases ownership of the contained web channel. - WebKit::WebMessagePortChannel* webChannelRelease(); - - ~PlatformMessagePortChannel(); - -private: - PlatformMessagePortChannel(); - PlatformMessagePortChannel(WebKit::WebMessagePortChannel*); - - void setEntangledChannel(PassRefPtr<PlatformMessagePortChannel>); - - // WebKit::WebMessagePortChannelClient implementation - virtual void messageAvailable(); - - // Mutex used to ensure exclusive access to the object internals. - Mutex m_mutex; - - // Pointer to our entangled pair - cleared when close() is called. - RefPtr<PlatformMessagePortChannel> m_entangledChannel; - - // The port we are connected to - this is the port that is notified when new messages arrive. - MessagePort* m_localPort; - - WebKit::WebMessagePortChannel* m_webChannel; -}; - -} // namespace WebCore - -#endif // PlatformMessagePortChannel_h diff --git a/webkit/api/src/ResourceHandle.cpp b/webkit/api/src/ResourceHandle.cpp deleted file mode 100644 index 6cecd1d..0000000 --- a/webkit/api/src/ResourceHandle.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/* - * 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 "ResourceHandle.h" - -#include "ResourceHandleClient.h" -#include "ResourceRequest.h" - -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebURLError.h" -#include "WebURLLoader.h" -#include "WebURLLoaderClient.h" -#include "WebURLRequest.h" -#include "WebURLResponse.h" -#include "WrappedResourceRequest.h" -#include "WrappedResourceResponse.h" - -using namespace WebKit; - -namespace WebCore { - -// ResourceHandleInternal ----------------------------------------------------- - -class ResourceHandleInternal : public WebURLLoaderClient { -public: - ResourceHandleInternal(const ResourceRequest& request, ResourceHandleClient* client) - : m_request(request) - , m_owner(0) - , m_client(client) - { - } - - void start(); - void cancel(); - void setDefersLoading(bool); - bool allowStoredCredentials() const; - - // WebURLLoaderClient methods: - virtual void willSendRequest(WebURLLoader*, WebURLRequest&, const WebURLResponse&); - virtual void didSendData( - WebURLLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent); - virtual void didReceiveResponse(WebURLLoader*, const WebURLResponse&); - virtual void didReceiveData(WebURLLoader*, const char* data, int dataLength); - virtual void didFinishLoading(WebURLLoader*); - virtual void didFail(WebURLLoader*, const WebURLError&); - - ResourceRequest m_request; - ResourceHandle* m_owner; - ResourceHandleClient* m_client; - OwnPtr<WebURLLoader> m_loader; -}; - -void ResourceHandleInternal::start() -{ - m_loader.set(webKitClient()->createURLLoader()); - ASSERT(m_loader.get()); - - WrappedResourceRequest wrappedRequest(m_request); - wrappedRequest.setAllowStoredCredentials(allowStoredCredentials()); - m_loader->loadAsynchronously(wrappedRequest, this); -} - -void ResourceHandleInternal::cancel() -{ - m_loader->cancel(); - - // Do not make any further calls to the client. - m_client = 0; -} - -void ResourceHandleInternal::setDefersLoading(bool value) -{ - m_loader->setDefersLoading(value); -} - -bool ResourceHandleInternal::allowStoredCredentials() const -{ - return m_client && m_client->shouldUseCredentialStorage(m_owner); -} - -void ResourceHandleInternal::willSendRequest( - WebURLLoader*, WebURLRequest& request, const WebURLResponse& response) -{ - ASSERT(m_client); - ASSERT(!request.isNull()); - ASSERT(!response.isNull()); - m_client->willSendRequest(m_owner, request.toMutableResourceRequest(), response.toResourceResponse()); -} - -void ResourceHandleInternal::didSendData( - WebURLLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) -{ - ASSERT(m_client); - m_client->didSendData(m_owner, bytesSent, totalBytesToBeSent); -} - -void ResourceHandleInternal::didReceiveResponse(WebURLLoader*, const WebURLResponse& response) -{ - ASSERT(m_client); - ASSERT(!response.isNull()); - m_client->didReceiveResponse(m_owner, response.toResourceResponse()); -} - -void ResourceHandleInternal::didReceiveData( - WebURLLoader*, const char* data, int dataLength) -{ - ASSERT(m_client); - - // FIXME(yurys): it looks like lengthReceived is always the same as - // dataLength and that the latter parameter can be eliminated. - // See WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=31019 - m_client->didReceiveData(m_owner, data, dataLength, dataLength); -} - -void ResourceHandleInternal::didFinishLoading(WebURLLoader*) -{ - ASSERT(m_client); - m_client->didFinishLoading(m_owner); -} - -void ResourceHandleInternal::didFail(WebURLLoader*, const WebURLError& error) -{ - ASSERT(m_client); - m_client->didFail(m_owner, error); -} - -// ResourceHandle ------------------------------------------------------------- - -ResourceHandle::ResourceHandle(const ResourceRequest& request, - ResourceHandleClient* client, - bool defersLoading, - bool shouldContentSniff, - bool mightDownloadFromHandle) - : d(new ResourceHandleInternal(request, client)) -{ - d->m_owner = this; - - // FIXME: Figure out what to do with the bool params. -} - -PassRefPtr<ResourceHandle> ResourceHandle::create(const ResourceRequest& request, - ResourceHandleClient* client, - Frame* deprecated, - bool defersLoading, - bool shouldContentSniff, - bool mightDownloadFromHandle) -{ - RefPtr<ResourceHandle> newHandle = adoptRef(new ResourceHandle( - request, client, defersLoading, shouldContentSniff, mightDownloadFromHandle)); - - if (newHandle->start(deprecated)) - return newHandle.release(); - - return 0; -} - -const ResourceRequest& ResourceHandle::request() const -{ - return d->m_request; -} - -ResourceHandleClient* ResourceHandle::client() const -{ - return d->m_client; -} - -void ResourceHandle::setClient(ResourceHandleClient* client) -{ - d->m_client = client; -} - -void ResourceHandle::setDefersLoading(bool value) -{ - d->setDefersLoading(value); -} - -bool ResourceHandle::start(Frame* deprecated) -{ - d->start(); - return true; -} - -void ResourceHandle::clearAuthentication() -{ -} - -void ResourceHandle::cancel() -{ - d->cancel(); -} - -ResourceHandle::~ResourceHandle() -{ - d->m_owner = 0; -} - -PassRefPtr<SharedBuffer> ResourceHandle::bufferedData() -{ - return 0; -} - -bool ResourceHandle::loadsBlocked() -{ - return false; // This seems to be related to sync XMLHttpRequest... -} - -// static -bool ResourceHandle::supportsBufferedData() -{ - return false; // The loader will buffer manually if it needs to. -} - -// static -void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, - StoredCredentials storedCredentials, - ResourceError& error, - ResourceResponse& response, - Vector<char>& data, - Frame* deprecated) -{ - OwnPtr<WebURLLoader> loader(webKitClient()->createURLLoader()); - ASSERT(loader.get()); - - WrappedResourceRequest requestIn(request); - requestIn.setAllowStoredCredentials(storedCredentials == AllowStoredCredentials); - WrappedResourceResponse responseOut(response); - WebURLError errorOut; - WebData dataOut; - - loader->loadSynchronously(requestIn, responseOut, errorOut, dataOut); - - error = errorOut; - data.clear(); - data.append(dataOut.data(), dataOut.size()); -} - -// static -bool ResourceHandle::willLoadFromCache(ResourceRequest& request, Frame*) -{ - // This method is used to determine if a POST request can be repeated from - // cache, but you cannot really know until you actually try to read from the - // cache. Even if we checked now, something else could come along and wipe - // out the cache entry by the time we fetch it. - // - // So, we always say yes here, which allows us to generate an ERR_CACHE_MISS - // if the request cannot be serviced from cache. We force the 'DontLoad' - // cache policy at this point to ensure that we never hit the network for - // this request. - // - ASSERT(request.httpMethod() == "POST"); - request.setCachePolicy(ReturnCacheDataDontLoad); - return true; -} - -} // namespace WebCore diff --git a/webkit/api/src/SharedWorkerRepository.cpp b/webkit/api/src/SharedWorkerRepository.cpp deleted file mode 100644 index f67a7dd..0000000 --- a/webkit/api/src/SharedWorkerRepository.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/* - * 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" - -#if ENABLE(SHARED_WORKERS) - -#include "SharedWorkerRepository.h" - -#include "Event.h" -#include "EventNames.h" -#include "MessagePortChannel.h" -#include "PlatformMessagePortChannel.h" -#include "ScriptExecutionContext.h" -#include "SharedWorker.h" -#include "WebFrameClient.h" -#include "WebFrameImpl.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebMessagePortChannel.h" -#include "WebSharedWorker.h" -#include "WebSharedWorkerRepository.h" -#include "WebString.h" -#include "WebURL.h" -#include "WorkerScriptLoader.h" -#include "WorkerScriptLoaderClient.h" - -namespace WebCore { - -class Document; -using WebKit::WebFrameImpl; -using WebKit::WebMessagePortChannel; -using WebKit::WebSharedWorker; -using WebKit::WebSharedWorkerRepository; - -// Callback class that keeps the SharedWorker and WebSharedWorker objects alive while loads are potentially happening, and also translates load errors into error events on the worker. -class SharedWorkerScriptLoader : private WorkerScriptLoaderClient, private WebSharedWorker::ConnectListener, private ActiveDOMObject { -public: - SharedWorkerScriptLoader(PassRefPtr<SharedWorker> worker, const KURL& url, const String& name, PassOwnPtr<MessagePortChannel> port, PassOwnPtr<WebSharedWorker> webWorker) - : ActiveDOMObject(worker->scriptExecutionContext(), this) - , m_worker(worker) - , m_url(url) - , m_name(name) - , m_webWorker(webWorker) - , m_port(port) - { - } - - void load(); - virtual void contextDestroyed(); -private: - // WorkerScriptLoaderClient callback - virtual void notifyFinished(); - - virtual void connected(); - - void sendConnect(); - - RefPtr<SharedWorker> m_worker; - KURL m_url; - String m_name; - OwnPtr<WebSharedWorker> m_webWorker; - OwnPtr<MessagePortChannel> m_port; - WorkerScriptLoader m_scriptLoader; -}; - -void SharedWorkerScriptLoader::load() -{ - // If the shared worker is not yet running, load the script resource for it, otherwise just send it a connect event. - if (m_webWorker->isStarted()) - sendConnect(); - else - m_scriptLoader.loadAsynchronously(m_worker->scriptExecutionContext(), m_url, DenyCrossOriginRequests, this); -} - -// Extracts a WebMessagePortChannel from a MessagePortChannel. -static WebMessagePortChannel* getWebPort(PassOwnPtr<MessagePortChannel> port) -{ - // Extract the WebMessagePortChannel to send to the worker. - PlatformMessagePortChannel* platformChannel = port->channel(); - WebMessagePortChannel* webPort = platformChannel->webChannelRelease(); - webPort->setClient(0); - return webPort; -} - -void SharedWorkerScriptLoader::notifyFinished() -{ - if (m_scriptLoader.failed()) { - m_worker->dispatchEvent(Event::create(eventNames().errorEvent, false, true)); - delete this; - } else { - // Pass the script off to the worker, then send a connect event. - m_webWorker->startWorkerContext(m_url, m_name, m_worker->scriptExecutionContext()->userAgent(m_url), m_scriptLoader.script()); - sendConnect(); - } -} - -void SharedWorkerScriptLoader::sendConnect() -{ - // Send the connect event off, and linger until it is done sending. - m_webWorker->connect(getWebPort(m_port.release()), this); -} - -void SharedWorkerScriptLoader::contextDestroyed() -{ - ActiveDOMObject::contextDestroyed(); - delete this; -} - -void SharedWorkerScriptLoader::connected() -{ - // Connect event has been sent, so free ourselves (this releases the SharedWorker so it can be freed as well if unreferenced). - delete this; -} - -bool SharedWorkerRepository::isAvailable() -{ - // Allow the WebKitClient to determine if SharedWorkers are available. - return WebKit::webKitClient()->sharedWorkerRepository(); -} - -static WebSharedWorkerRepository::DocumentID getId(void* document) -{ - ASSERT(document); - return reinterpret_cast<WebSharedWorkerRepository::DocumentID>(document); -} - -void SharedWorkerRepository::connect(PassRefPtr<SharedWorker> worker, PassOwnPtr<MessagePortChannel> port, const KURL& url, const String& name, ExceptionCode& ec) -{ - // This should not be callable unless there's a SharedWorkerRepository for - // this context (since isAvailable() should have returned null). - ASSERT(WebKit::webKitClient()->sharedWorkerRepository()); - - // No nested workers (for now) - connect() should only be called from document context. - ASSERT(worker->scriptExecutionContext()->isDocument()); - Document* document = static_cast<Document*>(worker->scriptExecutionContext()); - WebFrameImpl* webFrame = WebFrameImpl::fromFrame(document->frame()); - OwnPtr<WebSharedWorker> webWorker; - webWorker = webFrame->client()->createSharedWorker(webFrame, url, name, getId(document)); - - if (!webWorker) { - // Existing worker does not match this url, so return an error back to the caller. - ec = URL_MISMATCH_ERR; - return; - } - - // The loader object manages its own lifecycle (and the lifecycles of the two worker objects). - // It will free itself once loading is completed. - SharedWorkerScriptLoader* loader = new SharedWorkerScriptLoader(worker, url, name, port.release(), webWorker.release()); - loader->load(); -} - -void SharedWorkerRepository::documentDetached(Document* document) -{ - WebSharedWorkerRepository* repo = WebKit::webKitClient()->sharedWorkerRepository(); - if (repo) - repo->documentDetached(getId(document)); -} - -bool SharedWorkerRepository::hasSharedWorkers(Document* document) -{ - WebSharedWorkerRepository* repo = WebKit::webKitClient()->sharedWorkerRepository(); - return repo && repo->hasSharedWorkers(getId(document)); -} - - - -} // namespace WebCore - -#endif // ENABLE(SHARED_WORKERS) diff --git a/webkit/api/src/SocketStreamHandle.cpp b/webkit/api/src/SocketStreamHandle.cpp deleted file mode 100644 index f31f16c..0000000 --- a/webkit/api/src/SocketStreamHandle.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - * 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 "SocketStreamHandle.h" - -#if ENABLE(WEB_SOCKETS) - -#include "Logging.h" -#include "NotImplemented.h" -#include "SocketStreamHandleClient.h" -#include "WebData.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebSocketStreamHandle.h" -#include "WebSocketStreamHandleClient.h" -#include "WebURL.h" -#include <wtf/PassOwnPtr.h> - -using namespace WebKit; - -namespace WebCore { - -class SocketStreamHandleInternal : public WebSocketStreamHandleClient { -public: - static PassOwnPtr<SocketStreamHandleInternal> create(SocketStreamHandle* handle) - { - return new SocketStreamHandleInternal(handle); - } - virtual ~SocketStreamHandleInternal(); - - void connect(const KURL&); - int send(const char*, int); - void close(); - - virtual void didOpenStream(WebSocketStreamHandle*, int); - virtual void didSendData(WebSocketStreamHandle*, int); - virtual void didReceiveData(WebSocketStreamHandle*, const WebData&); - virtual void didClose(WebSocketStreamHandle*); - virtual void didFail(WebSocketStreamHandle*, const WebSocketStreamError&); - -private: - explicit SocketStreamHandleInternal(SocketStreamHandle*); - - SocketStreamHandle* m_handle; - OwnPtr<WebSocketStreamHandle> m_socket; - int m_maxPendingSendAllowed; - int m_pendingAmountSent; -}; - -SocketStreamHandleInternal::SocketStreamHandleInternal(SocketStreamHandle* handle) - : m_handle(handle) - , m_maxPendingSendAllowed(0) - , m_pendingAmountSent(0) -{ -} - -SocketStreamHandleInternal::~SocketStreamHandleInternal() -{ - m_handle = 0; -} - -void SocketStreamHandleInternal::connect(const KURL& url) -{ - m_socket.set(webKitClient()->createSocketStreamHandle()); - LOG(Network, "connect"); - ASSERT(m_socket.get()); - m_socket->connect(url, this); -} - -int SocketStreamHandleInternal::send(const char* data, int len) -{ - LOG(Network, "send len=%d", len); - ASSERT(m_socket.get()); - if (m_pendingAmountSent + len >= m_maxPendingSendAllowed) - len = m_maxPendingSendAllowed - m_pendingAmountSent - 1; - - if (len <= 0) - return len; - WebData webdata(data, len); - if (m_socket->send(webdata)) { - m_pendingAmountSent += len; - LOG(Network, "sent"); - return len; - } - LOG(Network, "busy. buffering"); - return 0; -} - -void SocketStreamHandleInternal::close() -{ - LOG(Network, "close"); - m_socket->close(); -} - -void SocketStreamHandleInternal::didOpenStream(WebSocketStreamHandle* socketHandle, int maxPendingSendAllowed) -{ - LOG(Network, "SocketStreamHandleInternal::didOpen %d", - maxPendingSendAllowed); - ASSERT(maxPendingSendAllowed > 0); - if (m_handle && m_socket.get()) { - ASSERT(socketHandle == m_socket.get()); - m_maxPendingSendAllowed = maxPendingSendAllowed; - m_handle->m_state = SocketStreamHandleBase::Open; - if (m_handle->m_client) { - m_handle->m_client->didOpen(m_handle); - return; - } - } - LOG(Network, "no m_handle or m_socket?"); -} - -void SocketStreamHandleInternal::didSendData(WebSocketStreamHandle* socketHandle, int amountSent) -{ - LOG(Network, "SocketStreamHandleInternal::didSendData %d", amountSent); - ASSERT(amountSent > 0); - if (m_handle && m_socket.get()) { - ASSERT(socketHandle == m_socket.get()); - m_pendingAmountSent -= amountSent; - ASSERT(m_pendingAmountSent >= 0); - m_handle->sendPendingData(); - } -} - -void SocketStreamHandleInternal::didReceiveData(WebSocketStreamHandle* socketHandle, const WebData& data) -{ - LOG(Network, "didReceiveData"); - if (m_handle && m_socket.get()) { - ASSERT(socketHandle == m_socket.get()); - if (m_handle->m_client) - m_handle->m_client->didReceiveData(m_handle, data.data(), data.size()); - } -} - -void SocketStreamHandleInternal::didClose(WebSocketStreamHandle* socketHandle) -{ - LOG(Network, "didClose"); - if (m_handle && m_socket.get()) { - ASSERT(socketHandle == m_socket.get()); - m_socket.clear(); - SocketStreamHandle* h = m_handle; - m_handle = 0; - if (h->m_client) - h->m_client->didClose(h); - } -} - -void SocketStreamHandleInternal::didFail(WebSocketStreamHandle* socketHandle, const WebSocketStreamError& err) -{ - LOG(Network, "didFail"); - if (m_handle && m_socket.get()) { - ASSERT(socketHandle == m_socket.get()); - m_socket.clear(); - SocketStreamHandle* h = m_handle; - m_handle = 0; - if (h->m_client) - h->m_client->didClose(h); // didFail(h, err); - } -} - -// FIXME: auth - -// SocketStreamHandle ---------------------------------------------------------- - -SocketStreamHandle::SocketStreamHandle(const KURL& url, SocketStreamHandleClient* client) - : SocketStreamHandleBase(url, client) -{ - m_internal = SocketStreamHandleInternal::create(this); - m_internal->connect(m_url); -} - -SocketStreamHandle::~SocketStreamHandle() -{ - setClient(0); - m_internal.clear(); -} - -int SocketStreamHandle::platformSend(const char* buf, int len) -{ - if (!m_internal.get()) - return 0; - return m_internal->send(buf, len); -} - -void SocketStreamHandle::platformClose() -{ - if (m_internal.get()) - m_internal->close(); -} - -void SocketStreamHandle::didReceiveAuthenticationChallenge(const AuthenticationChallenge& challenge) -{ - if (m_client) - m_client->didReceiveAuthenticationChallenge(this, challenge); -} - -void SocketStreamHandle::receivedCredential(const AuthenticationChallenge& challenge, const Credential& credential) -{ - notImplemented(); -} - -void SocketStreamHandle::receivedRequestToContinueWithoutCredential(const AuthenticationChallenge& challenge) -{ - notImplemented(); -} - -} // namespace WebCore - -#endif // ENABLE(WEB_SOCKETS) diff --git a/webkit/api/src/StorageAreaProxy.cpp b/webkit/api/src/StorageAreaProxy.cpp deleted file mode 100644 index 551507f..0000000 --- a/webkit/api/src/StorageAreaProxy.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``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 GOOGLE INC. 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 "StorageAreaProxy.h" - -#if ENABLE(DOM_STORAGE) - -#include "Document.h" -#include "ExceptionCode.h" -#include "Frame.h" -#include "SecurityOrigin.h" -#include "StorageAreaImpl.h" - -#include "WebStorageArea.h" -#include "WebString.h" -#include "WebURL.h" - -namespace WebCore { - -StorageAreaProxy::StorageAreaProxy(WebKit::WebStorageArea* storageArea) - : m_storageArea(storageArea) -{ -} - -StorageAreaProxy::~StorageAreaProxy() -{ -} - -unsigned StorageAreaProxy::length() const -{ - return m_storageArea->length(); -} - -String StorageAreaProxy::key(unsigned index) const -{ - return m_storageArea->key(index); -} - -String StorageAreaProxy::getItem(const String& key) const -{ - return m_storageArea->getItem(key); -} - -void StorageAreaProxy::setItem(const String& key, const String& value, ExceptionCode& ec, Frame* frame) -{ - bool quotaException = false; - m_storageArea->setItem(key, value, frame->document()->url(), quotaException); - ec = quotaException ? QUOTA_EXCEEDED_ERR : 0; -} - -void StorageAreaProxy::removeItem(const String& key, Frame* frame) -{ - m_storageArea->removeItem(key, frame->document()->url()); -} - -void StorageAreaProxy::clear(Frame* frame) -{ - m_storageArea->clear(frame->document()->url()); -} - -bool StorageAreaProxy::contains(const String& key) const -{ - return !getItem(key).isNull(); -} - -} // namespace WebCore - -#endif // ENABLE(DOM_STORAGE) diff --git a/webkit/api/src/StorageAreaProxy.h b/webkit/api/src/StorageAreaProxy.h deleted file mode 100644 index 5d09d82..0000000 --- a/webkit/api/src/StorageAreaProxy.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``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 GOOGLE INC. 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. - */ - -#ifndef StorageAreaProxy_h -#define StorageAreaProxy_h - -#if ENABLE(DOM_STORAGE) - -#include "StorageArea.h" - -namespace WebKit { class WebStorageArea; } - -namespace WebCore { - -class StorageAreaProxy : public StorageArea { -public: - StorageAreaProxy(WebKit::WebStorageArea* storageArea); - virtual ~StorageAreaProxy(); - - // The HTML5 DOM Storage API - virtual unsigned length() const; - virtual String key(unsigned index) const; - virtual String getItem(const String& key) const; - virtual void setItem(const String& key, const String& value, ExceptionCode& ec, Frame* sourceFrame); - virtual void removeItem(const String& key, Frame* sourceFrame); - virtual void clear(Frame* sourceFrame); - virtual bool contains(const String& key) const; - -private: - OwnPtr<WebKit::WebStorageArea> m_storageArea; -}; - -} // namespace WebCore - -#endif // ENABLE(DOM_STORAGE) - -#endif // StorageAreaProxy_h diff --git a/webkit/api/src/StorageEventDispatcherChromium.cpp b/webkit/api/src/StorageEventDispatcherChromium.cpp deleted file mode 100644 index 3286929..0000000 --- a/webkit/api/src/StorageEventDispatcherChromium.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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 "StorageEventDispatcher.h" - -#if ENABLE(DOM_STORAGE) - -#include "SecurityOrigin.h" -#include "StorageArea.h" - -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebString.h" -#include "WebURL.h" - -namespace WebCore { - -void StorageEventDispatcher::dispatch(const String& key, const String& oldValue, - const String& newValue, StorageType storageType, - SecurityOrigin* origin, Frame* sourceFrame) -{ - ASSERT(!sourceFrame); // Sad, but true. - WebKit::webKitClient()->dispatchStorageEvent(key, oldValue, newValue, origin->toString(), WebKit::WebURL(), storageType == LocalStorage); -} - -} // namespace WebCore - -#endif // ENABLE(DOM_STORAGE) diff --git a/webkit/api/src/StorageEventDispatcherImpl.cpp b/webkit/api/src/StorageEventDispatcherImpl.cpp deleted file mode 100644 index 3518796..0000000 --- a/webkit/api/src/StorageEventDispatcherImpl.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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 "StorageEventDispatcherImpl.h" - -#if ENABLE(DOM_STORAGE) - -#include "DOMWindow.h" -#include "EventNames.h" -#include "Frame.h" -#include "KURL.h" -#include "Page.h" -#include "PageGroup.h" -#include "SecurityOrigin.h" -#include "StorageEvent.h" - -namespace WebCore { - -StorageEventDispatcherImpl::StorageEventDispatcherImpl(const String& groupName) - : m_pageGroup(PageGroup::pageGroup(groupName)) -{ - ASSERT(m_pageGroup); -} - -void StorageEventDispatcherImpl::dispatchStorageEvent(const String& key, const String& oldValue, - const String& newValue, SecurityOrigin* securityOrigin, - const KURL& url, StorageType storageType) -{ - // FIXME: Implement - if (storageType == SessionStorage) - return; - - // We need to copy all relevant frames from every page to a vector since sending the event to one frame might mutate the frame tree - // of any given page in the group or mutate the page group itself. - Vector<RefPtr<Frame> > frames; - - const HashSet<Page*>& pages = m_pageGroup->pages(); - HashSet<Page*>::const_iterator end = pages.end(); - for (HashSet<Page*>::const_iterator it = pages.begin(); it != end; ++it) { - for (Frame* frame = (*it)->mainFrame(); frame; frame = frame->tree()->traverseNext()) { - if (frame->document()->securityOrigin()->equal(securityOrigin)) - frames.append(frame); - } - } - - // FIXME: Figure out how to pass in the document URI. - for (unsigned i = 0; i < frames.size(); ++i) { - frames[i]->document()->dispatchWindowEvent(StorageEvent::create(eventNames().storageEvent, key, oldValue, newValue, - url, frames[i]->domWindow()->localStorage())); - } -} - -} // namespace WebCore - -#endif // ENABLE(DOM_STORAGE) diff --git a/webkit/api/src/StorageEventDispatcherImpl.h b/webkit/api/src/StorageEventDispatcherImpl.h deleted file mode 100644 index 4c2db7c..0000000 --- a/webkit/api/src/StorageEventDispatcherImpl.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef StorageEventDispatcherImpl_h -#define StorageEventDispatcherImpl_h - -#if ENABLE(DOM_STORAGE) - -#include "PlatformString.h" -#include "StorageArea.h" - -namespace WebCore { - -class KURL; -class PageGroup; -class SecurityOrigin; - -class StorageEventDispatcherImpl { -public: - StorageEventDispatcherImpl(const String& groupName); - - void dispatchStorageEvent(const String& key, const String& oldValue, - const String& newValue, SecurityOrigin*, - const KURL&, StorageType); - -private: - PageGroup* m_pageGroup; -}; - -} // namespace WebCore - -#endif // ENABLE(DOM_STORAGE) - -#endif // StorageEventDispatcherImpl_h diff --git a/webkit/api/src/StorageNamespaceProxy.cpp b/webkit/api/src/StorageNamespaceProxy.cpp deleted file mode 100644 index e22bbef..0000000 --- a/webkit/api/src/StorageNamespaceProxy.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``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 GOOGLE INC. 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 "StorageNamespaceProxy.h" - -#if ENABLE(DOM_STORAGE) - -#include "SecurityOrigin.h" -#include "StorageAreaProxy.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebStorageNamespace.h" -#include "WebString.h" - -namespace WebCore { - -PassRefPtr<StorageNamespace> StorageNamespace::localStorageNamespace(const String& path, unsigned quota) -{ - return new StorageNamespaceProxy(WebKit::webKitClient()->createLocalStorageNamespace(path, quota)); -} - -PassRefPtr<StorageNamespace> StorageNamespace::sessionStorageNamespace() -{ - return new StorageNamespaceProxy(WebKit::webKitClient()->createSessionStorageNamespace()); -} - -StorageNamespaceProxy::StorageNamespaceProxy(WebKit::WebStorageNamespace* storageNamespace) - : m_storageNamespace(storageNamespace) -{ -} - -StorageNamespaceProxy::~StorageNamespaceProxy() -{ -} - -PassRefPtr<StorageNamespace> StorageNamespaceProxy::copy() -{ - return adoptRef(new StorageNamespaceProxy(m_storageNamespace->copy())); -} - -PassRefPtr<StorageArea> StorageNamespaceProxy::storageArea(PassRefPtr<SecurityOrigin> origin) -{ - return adoptRef(new StorageAreaProxy(m_storageNamespace->createStorageArea(origin->toString()))); -} - -void StorageNamespaceProxy::close() -{ - m_storageNamespace->close(); -} - -void StorageNamespaceProxy::unlock() -{ - // FIXME: Implement. -} - -} // namespace WebCore - -#endif // ENABLE(DOM_STORAGE) diff --git a/webkit/api/src/StorageNamespaceProxy.h b/webkit/api/src/StorageNamespaceProxy.h deleted file mode 100644 index 9ff624b..0000000 --- a/webkit/api/src/StorageNamespaceProxy.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``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 GOOGLE INC. 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. - */ - -#ifndef StorageNamespaceProxy_h -#define StorageNamespaceProxy_h - -#if ENABLE(DOM_STORAGE) - -#include "StorageNamespace.h" - -namespace WebKit { class WebStorageNamespace; } - -namespace WebCore { - -class StorageNamespaceProxy : public StorageNamespace { -public: - StorageNamespaceProxy(WebKit::WebStorageNamespace* storageNamespace); - virtual ~StorageNamespaceProxy(); - virtual PassRefPtr<StorageArea> storageArea(PassRefPtr<SecurityOrigin>); - virtual PassRefPtr<StorageNamespace> copy(); - virtual void close(); - virtual void unlock(); - -private: - OwnPtr<WebKit::WebStorageNamespace> m_storageNamespace; -}; - -} // namespace WebCore - -#endif // ENABLE(DOM_STORAGE) - -#endif // StorageNamespaceProxy_h diff --git a/webkit/api/src/WebAccessibilityCache.cpp b/webkit/api/src/WebAccessibilityCache.cpp deleted file mode 100755 index 8a3f697..0000000 --- a/webkit/api/src/WebAccessibilityCache.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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 "WebAccessibilityCache.h" - -#include "AXObjectCache.h" - -using namespace WebCore; - -namespace WebKit { - -void WebAccessibilityCache::enableAccessibility() -{ - AXObjectCache::enableAccessibility(); -} - -} diff --git a/webkit/api/src/WebAccessibilityCacheImpl.cpp b/webkit/api/src/WebAccessibilityCacheImpl.cpp deleted file mode 100644 index 03e5f46..0000000 --- a/webkit/api/src/WebAccessibilityCacheImpl.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* - * 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 "WebAccessibilityCacheImpl.h" - -#include "AccessibilityObject.h" -#include "AXObjectCache.h" -#include "Document.h" -#include "Frame.h" - -#include "WebAccessibilityObject.h" -#include "WebFrameImpl.h" -#include "WebViewImpl.h" - -using namespace WebCore; - -namespace WebKit { - -const int invalidObjectId = -1; -const int firstObjectId = 1000; - -static PassRefPtr<AccessibilityObject> toAccessibilityObject(const WebAccessibilityObject& object) -{ - return object; -} - -// WebView ---------------------------------------------------------------- - -WebAccessibilityCache* WebAccessibilityCache::create() -{ - return new WebAccessibilityCacheImpl(); -} - -// WeakHandle ------------------------------------------------------------- - -PassRefPtr<WebAccessibilityCacheImpl::WeakHandle> WebAccessibilityCacheImpl::WeakHandle::create(AccessibilityObject* object) -{ - // FIXME: Remove resetting ref-count from AccessibilityObjectWrapper - // and convert to use adoptRef. - return new WebAccessibilityCacheImpl::WeakHandle(object); -} - -WebAccessibilityCacheImpl::WeakHandle::WeakHandle(AccessibilityObject* object) - : AccessibilityObjectWrapper(object) -{ - m_object->setWrapper(this); -} - -// WebAccessibilityCacheImpl ---------------------------------------- - -void WebAccessibilityCacheImpl::WeakHandle::detach() -{ - if (m_object) - m_object = 0; -} - -WebAccessibilityCacheImpl::WebAccessibilityCacheImpl() - : m_nextNewId(firstObjectId) - , m_initialized(false) -{ -} - -WebAccessibilityCacheImpl::~WebAccessibilityCacheImpl() -{ -} - -void WebAccessibilityCacheImpl::initialize(WebView* view) -{ - AXObjectCache::enableAccessibility(); - WebAccessibilityObject root = view->accessibilityObject(); - if (root.isNull()) - return; - - RefPtr<AccessibilityObject> rootObject = toAccessibilityObject(root); - - // Insert root in hashmaps. - m_objectMap.set(m_nextNewId, WeakHandle::create(rootObject.get())); - m_idMap.set(rootObject.get(), m_nextNewId++); - - m_initialized = true; -} - -WebAccessibilityObject WebAccessibilityCacheImpl::getObjectById(int id) -{ - ObjectMap::iterator it = m_objectMap.find(id); - - if (it == m_objectMap.end() || !it->second) - return WebAccessibilityObject(); - - return WebAccessibilityObject(it->second->accessibilityObject()); -} - -bool WebAccessibilityCacheImpl::isValidId(int id) const -{ - return id >= firstObjectId; -} - -void WebAccessibilityCacheImpl::remove(int id) -{ - ObjectMap::iterator it = m_objectMap.find(id); - - if (it == m_objectMap.end()) - return; - - if (it->second) { - // Erase element from reverse hashmap. - IdMap::iterator it2 = m_idMap.find(it->second->accessibilityObject()); - if (it2 != m_idMap.end()) - m_idMap.remove(it2); - } - - m_objectMap.remove(it); -} - -void WebAccessibilityCacheImpl::clear() -{ - m_objectMap.clear(); - m_idMap.clear(); -} - -int WebAccessibilityCacheImpl::addOrGetId(const WebAccessibilityObject& object) -{ - if (object.isNull()) - return invalidObjectId; - - RefPtr<AccessibilityObject> o = toAccessibilityObject(object); - - IdMap::iterator it = m_idMap.find(o.get()); - - if (it != m_idMap.end()) - return it->second; - - // Insert new accessibility object in hashmaps and return its newly - // assigned accessibility object id. - m_objectMap.set(m_nextNewId, WeakHandle::create(o.get())); - m_idMap.set(o.get(), m_nextNewId); - - return m_nextNewId++; -} - -} diff --git a/webkit/api/src/WebAccessibilityCacheImpl.h b/webkit/api/src/WebAccessibilityCacheImpl.h deleted file mode 100644 index 7a9bf8f..0000000 --- a/webkit/api/src/WebAccessibilityCacheImpl.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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. - */ - -#ifndef WebAccessibilityCacheImpl_h -#define WebAccessibilityCacheImpl_h - -// FIXME: Move wtf/RefCounted.h include to AccessibilityObjectWrapper.h -// once this file is upstream. -#include <wtf/RefCounted.h> - -#include "AccessibilityObjectWrapper.h" -#include "WebAccessibilityCache.h" -#include <wtf/HashMap.h> -#include <wtf/PassRefPtr.h> - -namespace WebKit { - -// FIXME: Should be eliminated to use AXObjectCache instead. -class WebAccessibilityCacheImpl : public WebKit::WebAccessibilityCache { -public: - virtual void initialize(WebView* view); - virtual bool isInitialized() const { return m_initialized; } - - virtual WebAccessibilityObject getObjectById(int); - virtual bool isValidId(int) const; - virtual int addOrGetId(const WebKit::WebAccessibilityObject&); - - virtual void remove(int); - virtual void clear(); - -protected: - friend class WebKit::WebAccessibilityCache; - - WebAccessibilityCacheImpl(); - ~WebAccessibilityCacheImpl(); - -private: - // FIXME: This can be just part of Chromium's AccessibilityObjectWrapper. - class WeakHandle : public WebCore::AccessibilityObjectWrapper { - public: - static PassRefPtr<WeakHandle> create(WebCore::AccessibilityObject*); - virtual void detach(); - private: - WeakHandle(WebCore::AccessibilityObject*); - }; - - typedef HashMap<int, RefPtr<WeakHandle> > ObjectMap; - typedef HashMap<WebCore::AccessibilityObject*, int> IdMap; - - // Hashmap for caching of elements in use by the AT, mapping id (int) to - // WebAccessibilityObject. - ObjectMap m_objectMap; - // Hashmap for caching of elements in use by the AT, mapping a - // AccessibilityObject pointer to its id (int). Needed for reverse lookup, - // to ensure unnecessary duplicate entries are not created in the - // ObjectMap and for focus changes in WebKit. - IdMap m_idMap; - - // Unique identifier for retrieving an accessibility object from the page's - // hashmaps. Id is always 0 for the root of the accessibility object - // hierarchy (on a per-renderer process basis). - int m_nextNewId; - - bool m_initialized; -}; - -} - -#endif diff --git a/webkit/api/src/WebAccessibilityObject.cpp b/webkit/api/src/WebAccessibilityObject.cpp deleted file mode 100755 index 49fed03..0000000 --- a/webkit/api/src/WebAccessibilityObject.cpp +++ /dev/null @@ -1,404 +0,0 @@ -/* - * 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 "WebAccessibilityObject.h" - -#include "AccessibilityObject.h" -#include "EventHandler.h" -#include "FrameView.h" -#include "PlatformKeyboardEvent.h" -#include "WebPoint.h" -#include "WebRect.h" -#include "WebString.h" - -using namespace WebCore; - -namespace WebKit { - -class WebAccessibilityObjectPrivate : public WebCore::AccessibilityObject { -}; - -void WebAccessibilityObject::reset() -{ - assign(0); -} - -void WebAccessibilityObject::assign(const WebKit::WebAccessibilityObject& other) -{ - WebAccessibilityObjectPrivate* p = const_cast<WebAccessibilityObjectPrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -WebString WebAccessibilityObject::accessibilityDescription() const -{ - if (!m_private) - return WebString(); - - m_private->updateBackingStore(); - return m_private->accessibilityDescription(); -} - -WebString WebAccessibilityObject::actionVerb() const -{ - if (!m_private) - return WebString(); - - m_private->updateBackingStore(); - return m_private->actionVerb(); -} - -bool WebAccessibilityObject::canSetFocusAttribute() const -{ - if (!m_private) - return false; - - m_private->updateBackingStore(); - return m_private->canSetFocusAttribute(); -} - -unsigned WebAccessibilityObject::childCount() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->children().size(); -} - -WebAccessibilityObject WebAccessibilityObject::childAt(unsigned index) const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - if (m_private->children().size() <= index) - return WebAccessibilityObject(); - - return WebAccessibilityObject(m_private->children()[index]); -} - -WebAccessibilityObject WebAccessibilityObject::firstChild() const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - return WebAccessibilityObject(m_private->firstChild()); -} - -WebAccessibilityObject WebAccessibilityObject::focusedChild() const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - RefPtr<AccessibilityObject> focused = m_private->focusedUIElement(); - if (m_private == focused.get() || focused->parentObject() == m_private) - return WebAccessibilityObject(focused); - - return WebAccessibilityObject(); -} - -WebAccessibilityObject WebAccessibilityObject::lastChild() const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - return WebAccessibilityObject(m_private->lastChild()); -} - - -WebAccessibilityObject WebAccessibilityObject::nextSibling() const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - return WebAccessibilityObject(m_private->nextSibling()); -} - -WebAccessibilityObject WebAccessibilityObject::parentObject() const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - return WebAccessibilityObject(m_private->parentObject()); -} - - -WebAccessibilityObject WebAccessibilityObject::previousSibling() const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - return WebAccessibilityObject(m_private->previousSibling()); -} - -bool WebAccessibilityObject::isAnchor() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isAnchor(); -} - -bool WebAccessibilityObject::isChecked() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isChecked(); -} - - -bool WebAccessibilityObject::isFocused() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isFocused(); -} - -bool WebAccessibilityObject::isEnabled() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isEnabled(); -} - -bool WebAccessibilityObject::isHovered() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isHovered(); -} - -bool WebAccessibilityObject::isIndeterminate() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isIndeterminate(); -} - -bool WebAccessibilityObject::isMultiSelect() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isMultiSelect(); -} - -bool WebAccessibilityObject::isOffScreen() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isOffScreen(); -} - -bool WebAccessibilityObject::isPasswordField() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isPasswordField(); -} - -bool WebAccessibilityObject::isPressed() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isPressed(); -} - -bool WebAccessibilityObject::isReadOnly() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isReadOnly(); -} - -bool WebAccessibilityObject::isVisited() const -{ - if (!m_private) - return 0; - - m_private->updateBackingStore(); - return m_private->isVisited(); -} - -WebRect WebAccessibilityObject::boundingBoxRect() const -{ - if (!m_private) - return WebRect(); - - m_private->updateBackingStore(); - return m_private->documentFrameView()->contentsToWindow(m_private->boundingBoxRect()); -} - -WebString WebAccessibilityObject::helpText() const -{ - if (!m_private) - return WebString(); - - m_private->updateBackingStore(); - return m_private->helpText(); -} - -WebAccessibilityObject WebAccessibilityObject::hitTest(const WebPoint& point) const -{ - if (!m_private) - return WebAccessibilityObject(); - - m_private->updateBackingStore(); - IntPoint contentsPoint = m_private->documentFrameView()->windowToContents(point); - RefPtr<AccessibilityObject> hit = m_private->doAccessibilityHitTest(contentsPoint); - - if (hit.get()) - return WebAccessibilityObject(hit); - - if (m_private->boundingBoxRect().contains(contentsPoint)) - return *this; - - return WebAccessibilityObject(); -} - -WebString WebAccessibilityObject::keyboardShortcut() const -{ - if (!m_private) - return WebString(); - - m_private->updateBackingStore(); - String accessKey = m_private->accessKey(); - if (accessKey.isNull()) - return WebString(); - - static String modifierString; - if (modifierString.isNull()) { - unsigned modifiers = EventHandler::accessKeyModifiers(); - // Follow the same order as Mozilla MSAA implementation: - // Ctrl+Alt+Shift+Meta+key. MSDN states that keyboard shortcut strings - // should not be localized and defines the separator as "+". - if (modifiers & PlatformKeyboardEvent::CtrlKey) - modifierString += "Ctrl+"; - if (modifiers & PlatformKeyboardEvent::AltKey) - modifierString += "Alt+"; - if (modifiers & PlatformKeyboardEvent::ShiftKey) - modifierString += "Shift+"; - if (modifiers & PlatformKeyboardEvent::MetaKey) - modifierString += "Win+"; - } - - return modifierString + accessKey; -} - -bool WebAccessibilityObject::performDefaultAction() const -{ - if (!m_private) - return false; - - m_private->updateBackingStore(); - return m_private->performDefaultAction(); -} - -WebAccessibilityRole WebAccessibilityObject::roleValue() const -{ - if (!m_private) - return WebKit::WebAccessibilityRoleUnknown; - - m_private->updateBackingStore(); - return static_cast<WebAccessibilityRole>(m_private->roleValue()); -} - -WebString WebAccessibilityObject::stringValue() const -{ - if (!m_private) - return WebString(); - - m_private->updateBackingStore(); - return m_private->stringValue(); -} - -WebString WebAccessibilityObject::title() const -{ - if (!m_private) - return WebString(); - - m_private->updateBackingStore(); - return m_private->title(); -} - -WebAccessibilityObject::WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object) - : m_private(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef())) -{ -} - -WebAccessibilityObject& WebAccessibilityObject::operator=(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object) -{ - assign(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef())); - return *this; -} - -WebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>() const -{ - return PassRefPtr<WebCore::AccessibilityObject>(const_cast<WebAccessibilityObjectPrivate*>(m_private)); -} - -void WebAccessibilityObject::assign(WebAccessibilityObjectPrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebBindings.cpp b/webkit/api/src/WebBindings.cpp deleted file mode 100644 index 73993b6..0000000 --- a/webkit/api/src/WebBindings.cpp +++ /dev/null @@ -1,322 +0,0 @@ -/* - * 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/api/src/WebCString.cpp b/webkit/api/src/WebCString.cpp deleted file mode 100644 index 82fbac0..0000000 --- a/webkit/api/src/WebCString.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 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/api/src/WebCache.cpp b/webkit/api/src/WebCache.cpp deleted file mode 100644 index 9d03a4d..0000000 --- a/webkit/api/src/WebCache.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * 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/api/src/WebColor.cpp b/webkit/api/src/WebColor.cpp deleted file mode 100644 index 9323433..0000000 --- a/webkit/api/src/WebColor.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * 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/api/src/WebCrossOriginPreflightResultCache.cpp b/webkit/api/src/WebCrossOriginPreflightResultCache.cpp deleted file mode 100644 index 719316d..0000000 --- a/webkit/api/src/WebCrossOriginPreflightResultCache.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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/api/src/WebCursorInfo.cpp b/webkit/api/src/WebCursorInfo.cpp deleted file mode 100644 index d4b0f81..0000000 --- a/webkit/api/src/WebCursorInfo.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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 diff --git a/webkit/api/src/WebData.cpp b/webkit/api/src/WebData.cpp deleted file mode 100644 index 6aafe79..0000000 --- a/webkit/api/src/WebData.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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 "WebData.h" - -#include "SharedBuffer.h" - -using namespace WebCore; - -namespace WebKit { - -class WebDataPrivate : public SharedBuffer { -}; - -void WebData::reset() -{ - if (m_private) { - m_private->deref(); - m_private = 0; - } -} - -void WebData::assign(const WebData& other) -{ - WebDataPrivate* p = const_cast<WebDataPrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -void WebData::assign(const char* data, size_t size) -{ - assign(static_cast<WebDataPrivate*>( - SharedBuffer::create(data, size).releaseRef())); -} - -size_t WebData::size() const -{ - if (!m_private) - return 0; - return const_cast<WebDataPrivate*>(m_private)->size(); -} - -const char* WebData::data() const -{ - if (!m_private) - return 0; - return const_cast<WebDataPrivate*>(m_private)->data(); -} - -WebData::WebData(const PassRefPtr<SharedBuffer>& buffer) - : m_private(static_cast<WebDataPrivate*>(buffer.releaseRef())) -{ -} - -WebData& WebData::operator=(const PassRefPtr<SharedBuffer>& buffer) -{ - assign(static_cast<WebDataPrivate*>(buffer.releaseRef())); - return *this; -} - -WebData::operator PassRefPtr<SharedBuffer>() const -{ - return PassRefPtr<SharedBuffer>(const_cast<WebDataPrivate*>(m_private)); -} - -void WebData::assign(WebDataPrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebDataSourceImpl.cpp b/webkit/api/src/WebDataSourceImpl.cpp deleted file mode 100644 index 456706a..0000000 --- a/webkit/api/src/WebDataSourceImpl.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * 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 "WebDataSourceImpl.h" - -#include "WebURL.h" -#include "WebURLError.h" -#include "WebVector.h" - -using namespace WebCore; - -namespace WebKit { - -WebPluginLoadObserver* WebDataSourceImpl::m_nextPluginLoadObserver = 0; - -PassRefPtr<WebDataSourceImpl> WebDataSourceImpl::create(const ResourceRequest& request, const SubstituteData& data) -{ - return adoptRef(new WebDataSourceImpl(request, data)); -} - -const WebURLRequest& WebDataSourceImpl::originalRequest() const -{ - m_originalRequestWrapper.bind(DocumentLoader::originalRequest()); - return m_originalRequestWrapper; -} - -const WebURLRequest& WebDataSourceImpl::request() const -{ - m_requestWrapper.bind(DocumentLoader::request()); - return m_requestWrapper; -} - -const WebURLResponse& WebDataSourceImpl::response() const -{ - m_responseWrapper.bind(DocumentLoader::response()); - return m_responseWrapper; -} - -bool WebDataSourceImpl::hasUnreachableURL() const -{ - return !DocumentLoader::unreachableURL().isEmpty(); -} - -WebURL WebDataSourceImpl::unreachableURL() const -{ - return DocumentLoader::unreachableURL(); -} - -void WebDataSourceImpl::redirectChain(WebVector<WebURL>& result) const -{ - result.assign(m_redirectChain); -} - -WebString WebDataSourceImpl::pageTitle() const -{ - return title(); -} - -WebNavigationType WebDataSourceImpl::navigationType() const -{ - return toWebNavigationType(triggeringAction().type()); -} - -double WebDataSourceImpl::triggeringEventTime() const -{ - if (!triggeringAction().event()) - return 0.0; - - // DOMTimeStamp uses units of milliseconds. - return triggeringAction().event()->timeStamp() / 1000.0; -} - -WebDataSource::ExtraData* WebDataSourceImpl::extraData() const -{ - return m_extraData.get(); -} - -void WebDataSourceImpl::setExtraData(ExtraData* extraData) -{ - m_extraData.set(extraData); -} - -WebNavigationType WebDataSourceImpl::toWebNavigationType(NavigationType type) -{ - switch (type) { - case NavigationTypeLinkClicked: - return WebNavigationTypeLinkClicked; - case NavigationTypeFormSubmitted: - return WebNavigationTypeFormSubmitted; - case NavigationTypeBackForward: - return WebNavigationTypeBackForward; - case NavigationTypeReload: - return WebNavigationTypeReload; - case NavigationTypeFormResubmitted: - return WebNavigationTypeFormResubmitted; - case NavigationTypeOther: - default: - return WebNavigationTypeOther; - } -} - -const KURL& WebDataSourceImpl::endOfRedirectChain() const -{ - ASSERT(!m_redirectChain.isEmpty()); - return m_redirectChain.last(); -} - -void WebDataSourceImpl::clearRedirectChain() -{ - m_redirectChain.clear(); -} - -void WebDataSourceImpl::appendRedirect(const KURL& url) -{ - m_redirectChain.append(url); -} - -void WebDataSourceImpl::setNextPluginLoadObserver(PassOwnPtr<WebPluginLoadObserver> observer) -{ - // This call should always be followed up with the creation of a - // WebDataSourceImpl, so we should never leak this object. - m_nextPluginLoadObserver = observer.release(); -} - -WebDataSourceImpl::WebDataSourceImpl(const ResourceRequest& request, const SubstituteData& data) - : DocumentLoader(request, data) -{ - if (m_nextPluginLoadObserver) { - // When a new frame is created, it initially gets a data source for an - // empty document. Then it is navigated to the source URL of the - // frame, which results in a second data source being created. We want - // to wait to attach the WebPluginLoadObserver to that data source. - if (!request.url().isEmpty()) { - ASSERT(m_nextPluginLoadObserver->url() == request.url()); - m_pluginLoadObserver.set(m_nextPluginLoadObserver); - m_nextPluginLoadObserver = 0; - } - } -} - -WebDataSourceImpl::~WebDataSourceImpl() -{ -} - -} // namespace WebKit diff --git a/webkit/api/src/WebDataSourceImpl.h b/webkit/api/src/WebDataSourceImpl.h deleted file mode 100644 index 8860fe4..0000000 --- a/webkit/api/src/WebDataSourceImpl.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDataSourceImpl_h -#define WebDataSourceImpl_h - -// FIXME: This relative path is a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebDataSource.h" - -#include "DocumentLoader.h" -#include "KURL.h" - -#include "WebPluginLoadObserver.h" -#include "WrappedResourceRequest.h" -#include "WrappedResourceResponse.h" - -#include <wtf/OwnPtr.h> -#include <wtf/PassOwnPtr.h> -#include <wtf/Vector.h> - - -namespace WebKit { - -class WebPluginLoadObserver; - -class WebDataSourceImpl : public WebCore::DocumentLoader, public WebDataSource { -public: - static PassRefPtr<WebDataSourceImpl> create(const WebCore::ResourceRequest&, - const WebCore::SubstituteData&); - - static WebDataSourceImpl* fromDocumentLoader(WebCore::DocumentLoader* loader) - { - return static_cast<WebDataSourceImpl*>(loader); - } - - // WebDataSource methods: - virtual const WebURLRequest& originalRequest() const; - virtual const WebURLRequest& request() const; - virtual const WebURLResponse& response() const; - virtual bool hasUnreachableURL() const; - virtual WebURL unreachableURL() const; - virtual void redirectChain(WebVector<WebURL>&) const; - virtual WebString pageTitle() const; - virtual WebNavigationType navigationType() const; - virtual double triggeringEventTime() const; - virtual ExtraData* extraData() const; - virtual void setExtraData(ExtraData*); - - static WebNavigationType toWebNavigationType(WebCore::NavigationType type); - - bool hasRedirectChain() const { return !m_redirectChain.isEmpty(); } - const WebCore::KURL& endOfRedirectChain() const; - void clearRedirectChain(); - void appendRedirect(const WebCore::KURL& url); - - PassOwnPtr<WebPluginLoadObserver> releasePluginLoadObserver() { return m_pluginLoadObserver.release(); } - static void setNextPluginLoadObserver(PassOwnPtr<WebPluginLoadObserver>); - -private: - WebDataSourceImpl(const WebCore::ResourceRequest&, const WebCore::SubstituteData&); - ~WebDataSourceImpl(); - - // Mutable because the const getters will magically sync these to the - // latest version from WebKit. - mutable WrappedResourceRequest m_originalRequestWrapper; - mutable WrappedResourceRequest m_requestWrapper; - mutable WrappedResourceResponse m_responseWrapper; - - // Lists all intermediate URLs that have redirected for the current provisional load. - // See WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad for a - // description of who modifies this when to keep it up to date. - Vector<WebCore::KURL> m_redirectChain; - - OwnPtr<ExtraData> m_extraData; - OwnPtr<WebPluginLoadObserver> m_pluginLoadObserver; - - static WebPluginLoadObserver* m_nextPluginLoadObserver; -}; - -} // namespace WebKit - -#endif // WebDataSourceImpl_h diff --git a/webkit/api/src/WebDatabase.cpp b/webkit/api/src/WebDatabase.cpp deleted file mode 100644 index d702eaf..0000000 --- a/webkit/api/src/WebDatabase.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/* - * 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 "WebDatabase.h" - -#include "Database.h" -#include "DatabaseThread.h" -#include "Document.h" -#include "KURL.h" -#include "SecurityOrigin.h" -#include "WebDatabaseObserver.h" -#include "WebString.h" -#include <wtf/PassRefPtr.h> -#include <wtf/RefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -static WebDatabaseObserver* databaseObserver = 0; - -class WebDatabasePrivate : public Database { -}; - -void WebDatabase::reset() -{ - assign(0); -} - -void WebDatabase::assign(const WebDatabase& other) -{ - WebDatabasePrivate* d = const_cast<WebDatabasePrivate*>(other.m_private); - if (d) - d->ref(); - assign(d); -} - -WebString WebDatabase::name() const -{ - if (m_private) - return m_private->stringIdentifier(); - - return WebString::fromUTF8("null"); -} - -WebString WebDatabase::displayName() const -{ -// FIXME: add the Database::displayName() method. -// if (m_private) -// return m_private->displayName(); - - return WebString::fromUTF8("null"); -} - -unsigned long WebDatabase::estimatedSize() const -{ -// FIXME: add the Database::estimatedSize() method. -// if (m_private) -// return m_private->estimatedSize(); - - return -1; -} - -WebSecurityOrigin WebDatabase::securityOrigin() const -{ -// FIXME: add the Database::threadSafeSecurityOrigin() method. -// if (m_private) -// return WebSecurityOrigin(m_private->threadSafeSecurityOrigin()); - - return WebSecurityOrigin(); -} - -void WebDatabase::setObserver(WebDatabaseObserver* observer) -{ - databaseObserver = observer; -} - -WebDatabaseObserver* WebDatabase::observer() -{ - return databaseObserver; -} - -void WebDatabase::updateDatabaseSize( - const WebString& originIdentifier, const WebString& databaseName, - unsigned long long databaseSize, unsigned long long spaceAvailable) -{ -// FIXME: add the QuotaTracker class. -// WebCore::QuotaTracker::instance().updateDatabaseSize( -// originIdentifier, databaseName, databaseSize, spaceAvailable); -} - -WebDatabase::WebDatabase(const WTF::PassRefPtr<Database>& database) - : m_private(static_cast<WebDatabasePrivate*>(database.releaseRef())) -{ -} - -WebDatabase& WebDatabase::operator=(const WTF::PassRefPtr<Database>& database) -{ - assign(static_cast<WebDatabasePrivate*>(database.releaseRef())); - return *this; -} - -WebDatabase::operator WTF::PassRefPtr<Database>() const -{ - return PassRefPtr<Database>(const_cast<WebDatabasePrivate*>(m_private)); -} - -void WebDatabase::assign(WebDatabasePrivate* d) -{ - // d is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = d; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebDevToolsAgentPrivate.h b/webkit/api/src/WebDevToolsAgentPrivate.h deleted file mode 100644 index 0c1c67e..0000000 --- a/webkit/api/src/WebDevToolsAgentPrivate.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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. - */ - -#ifndef WebDevToolsAgentPrivate_h -#define WebDevToolsAgentPrivate_h - -// FIXME: This relative path is a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebDevToolsAgent.h" - -namespace WebKit { -class WebFrameImpl; - -class WebDevToolsAgentPrivate : public WebDevToolsAgent { -public: - // Notifications from FrameLoaderClientImpl: - - // The window object for the frame has been cleared of any extra properties - // that may have been set by script from the previously loaded document. - virtual void didClearWindowObject(WebFrameImpl*) = 0; - - // The provisional datasource is now committed. The first part of the - // response body has been received, and the encoding of the response body - // is known. - virtual void didCommitProvisionalLoad(WebFrameImpl*, bool isNewNavigation) = 0; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebDragData.cpp b/webkit/api/src/WebDragData.cpp deleted file mode 100644 index 4af1119..0000000 --- a/webkit/api/src/WebDragData.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/* - * 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 "WebDragData.h" - -#include "ChromiumDataObject.h" -#include "WebData.h" -#include "WebString.h" -#include "WebURL.h" -#include "WebVector.h" - -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -class WebDragDataPrivate : public ChromiumDataObject { -}; - -void WebDragData::initialize() -{ - assign(static_cast<WebDragDataPrivate*>(ChromiumDataObject::create().releaseRef())); -} - -void WebDragData::reset() -{ - assign(0); -} - -void WebDragData::assign(const WebDragData& other) -{ - WebDragDataPrivate* p = const_cast<WebDragDataPrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -WebURL WebDragData::url() const -{ - ASSERT(!isNull()); - return m_private->url; -} - -void WebDragData::setURL(const WebURL& url) -{ - ensureMutable(); - m_private->url = url; -} - -WebString WebDragData::urlTitle() const -{ - ASSERT(!isNull()); - return m_private->urlTitle; -} - -void WebDragData::setURLTitle(const WebString& urlTitle) -{ - ensureMutable(); - m_private->urlTitle = urlTitle; -} - -WebString WebDragData::fileExtension() const -{ - ASSERT(!isNull()); - return m_private->fileExtension; -} - -void WebDragData::setFileExtension(const WebString& fileExtension) -{ - ensureMutable(); - m_private->fileExtension = fileExtension; -} - -bool WebDragData::hasFileNames() const -{ - ASSERT(!isNull()); - return !m_private->filenames.isEmpty(); -} - -void WebDragData::fileNames(WebVector<WebString>& fileNames) const -{ - ASSERT(!isNull()); - fileNames = m_private->filenames; -} - -void WebDragData::setFileNames(const WebVector<WebString>& fileNames) -{ - ensureMutable(); - m_private->filenames.clear(); - m_private->filenames.append(fileNames.data(), fileNames.size()); -} - -void WebDragData::appendToFileNames(const WebString& fileName) -{ - ensureMutable(); - m_private->filenames.append(fileName); -} - -WebString WebDragData::plainText() const -{ - ASSERT(!isNull()); - return m_private->plainText; -} - -void WebDragData::setPlainText(const WebString& plainText) -{ - ensureMutable(); - m_private->plainText = plainText; -} - -WebString WebDragData::htmlText() const -{ - ASSERT(!isNull()); - return m_private->textHtml; -} - -void WebDragData::setHTMLText(const WebString& htmlText) -{ - ensureMutable(); - m_private->textHtml = htmlText; -} - -WebURL WebDragData::htmlBaseURL() const -{ - ASSERT(!isNull()); - return m_private->htmlBaseUrl; -} - -void WebDragData::setHTMLBaseURL(const WebURL& htmlBaseURL) -{ - ensureMutable(); - m_private->htmlBaseUrl = htmlBaseURL; -} - -WebString WebDragData::fileContentFileName() const -{ - ASSERT(!isNull()); - return m_private->fileContentFilename; -} - -void WebDragData::setFileContentFileName(const WebString& fileName) -{ - ensureMutable(); - m_private->fileContentFilename = fileName; -} - -WebData WebDragData::fileContent() const -{ - ASSERT(!isNull()); - return WebData(m_private->fileContent); -} - -void WebDragData::setFileContent(const WebData& fileContent) -{ - ensureMutable(); - m_private->fileContent = fileContent; -} - -WebDragData::WebDragData(const WTF::PassRefPtr<WebCore::ChromiumDataObject>& data) - : m_private(static_cast<WebDragDataPrivate*>(data.releaseRef())) -{ -} - -WebDragData& WebDragData::operator=(const WTF::PassRefPtr<WebCore::ChromiumDataObject>& data) -{ - assign(static_cast<WebDragDataPrivate*>(data.releaseRef())); - return *this; -} - -WebDragData::operator WTF::PassRefPtr<WebCore::ChromiumDataObject>() const -{ - return PassRefPtr<ChromiumDataObject>(const_cast<WebDragDataPrivate*>(m_private)); -} - -void WebDragData::assign(WebDragDataPrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -void WebDragData::ensureMutable() -{ - ASSERT(!isNull()); - if (!m_private->hasOneRef()) - assign(static_cast<WebDragDataPrivate*>(m_private->copy().releaseRef())); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebElement.cpp b/webkit/api/src/WebElement.cpp deleted file mode 100644 index 3f13ee1..0000000 --- a/webkit/api/src/WebElement.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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 "WebElement.h" - -#include "Element.h" -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -WebElement::WebElement(const WTF::PassRefPtr<WebCore::Element>& elem) - : WebNode(elem.releaseRef()) -{ -} - -WebElement& WebElement::operator=(const WTF::PassRefPtr<WebCore::Element>& elem) -{ - WebNode::assign(elem.releaseRef()); - return *this; -} - -WebElement::operator WTF::PassRefPtr<Element>() const -{ - return PassRefPtr<Element>(static_cast<Element*>(m_private)); -} - -} // namespace WebKit - diff --git a/webkit/api/src/WebFileChooserCompletionImpl.cpp b/webkit/api/src/WebFileChooserCompletionImpl.cpp deleted file mode 100644 index 4152dc5..0000000 --- a/webkit/api/src/WebFileChooserCompletionImpl.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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 "WebFileChooserCompletionImpl.h" - -namespace WebKit { - -WebFileChooserCompletionImpl::WebFileChooserCompletionImpl(PassRefPtr<WebCore::FileChooser> chooser) - : m_fileChooser(chooser) -{ -} - -WebFileChooserCompletionImpl::~WebFileChooserCompletionImpl() -{ -} - -void WebFileChooserCompletionImpl::didChooseFile(const WebVector<WebString>& fileNames) -{ - if (fileNames.size() == 1) - m_fileChooser->chooseFile(fileNames[0]); - else { - // This clause handles a case of file_names.size()==0 too. - Vector<WebCore::String> paths; - for (size_t i = 0; i < fileNames.size(); ++i) - paths.append(fileNames[i]); - m_fileChooser->chooseFiles(paths); - } - // This object is no longer needed. - delete this; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebFileChooserCompletionImpl.h b/webkit/api/src/WebFileChooserCompletionImpl.h deleted file mode 100644 index fe759e0..0000000 --- a/webkit/api/src/WebFileChooserCompletionImpl.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFileChooserCompletionImpl_h -#define WebFileChooserCompletionImpl_h - -// FIXME: These relative paths are a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebFileChooserCompletion.h" -#include "../public/WebString.h" -#include "../public/WebVector.h" - -#include "FileChooser.h" - -#include <wtf/PassRefPtr.h> - -using WebKit::WebFileChooserCompletion; -using WebKit::WebString; -using WebKit::WebVector; - -namespace WebKit { - -class WebFileChooserCompletionImpl : public WebFileChooserCompletion { -public: - WebFileChooserCompletionImpl(PassRefPtr<WebCore::FileChooser> chooser); - ~WebFileChooserCompletionImpl(); - virtual void didChooseFile(const WebVector<WebString>& fileNames); -private: - RefPtr<WebCore::FileChooser> m_fileChooser; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebFontCache.cpp b/webkit/api/src/WebFontCache.cpp deleted file mode 100644 index 52358ec..0000000 --- a/webkit/api/src/WebFontCache.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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 "WebFontCache.h" - -#include "FontCache.h" - -using namespace WebCore; - -namespace WebKit { - -// static -size_t WebFontCache::fontDataCount() -{ - return fontCache()->fontDataCount(); -} - -// static -size_t WebFontCache::inactiveFontDataCount() -{ - return fontCache()->inactiveFontDataCount(); -} - -// static -void WebFontCache::clear() -{ - fontCache()->invalidate(); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebFormElement.cpp b/webkit/api/src/WebFormElement.cpp deleted file mode 100644 index fecd05c..0000000 --- a/webkit/api/src/WebFormElement.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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 "WebFormElement.h" - -#include "HTMLFormElement.h" -#include "WebString.h" -#include "WebURL.h" -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -class WebFormPrivate : public HTMLFormElement { -}; - -WebFormElement::WebFormElement(const WTF::PassRefPtr<HTMLFormElement>& e) - : WebElement(e.releaseRef()) -{ -} - -WebFormElement& WebFormElement::operator=(const WTF::PassRefPtr<HTMLFormElement>& e) -{ - WebNode::assign(e.releaseRef()); - return *this; -} - -WebFormElement::operator WTF::PassRefPtr<WebCore::HTMLFormElement>() const -{ - return PassRefPtr<HTMLFormElement>(static_cast<HTMLFormElement*>(m_private)); -} - -bool WebFormElement::autoComplete() const -{ - return constUnwrap<HTMLFormElement>()->autoComplete(); -} - -WebString WebFormElement::action() -{ - return unwrap<HTMLFormElement>()->action(); -} - -void WebFormElement::submit() -{ - unwrap<HTMLFormElement>()->submit(); -} - -void WebFormElement::getNamedElements(const WebString& name, - WebVector<WebNode>& result) -{ - Vector<RefPtr<Node> > temp_vector; - unwrap<HTMLFormElement>()->getNamedElements(name, temp_vector); - result.assign(temp_vector); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebFrameImpl.cpp b/webkit/api/src/WebFrameImpl.cpp deleted file mode 100644 index 6d51235..0000000 --- a/webkit/api/src/WebFrameImpl.cpp +++ /dev/null @@ -1,1887 +0,0 @@ -/* - * 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. - */ - -// How ownership works -// ------------------- -// -// Big oh represents a refcounted relationship: owner O--- ownee -// -// WebView (for the toplevel frame only) -// O -// | -// Page O------- Frame (m_mainFrame) O-------O FrameView -// || -// || -// FrameLoader O-------- WebFrame (via FrameLoaderClient) -// -// FrameLoader and Frame are formerly one object that was split apart because -// it got too big. They basically have the same lifetime, hence the double line. -// -// WebFrame is refcounted and has one ref on behalf of the FrameLoader/Frame. -// This is not a normal reference counted pointer because that would require -// changing WebKit code that we don't control. Instead, it is created with this -// ref initially and it is removed when the FrameLoader is getting destroyed. -// -// WebFrames are created in two places, first in WebViewImpl when the root -// frame is created, and second in WebFrame::CreateChildFrame when sub-frames -// are created. WebKit will hook up this object to the FrameLoader/Frame -// and the refcount will be correct. -// -// How frames are destroyed -// ------------------------ -// -// The main frame is never destroyed and is re-used. The FrameLoader is re-used -// and a reference to the main frame is kept by the Page. -// -// When frame content is replaced, all subframes are destroyed. This happens -// in FrameLoader::detachFromParent for each subframe. -// -// Frame going away causes the FrameLoader to get deleted. In FrameLoader's -// destructor, it notifies its client with frameLoaderDestroyed. This calls -// WebFrame::Closing and then derefs the WebFrame and will cause it to be -// deleted (unless an external someone is also holding a reference). - -#include "config.h" -#include "WebFrameImpl.h" - -#include "Chrome.h" -#include "ChromiumBridge.h" -#include "ClipboardUtilitiesChromium.h" -#include "Console.h" -#include "Document.h" -#include "DocumentFragment.h" // Only needed for ReplaceSelectionCommand.h :( -#include "DocumentLoader.h" -#include "DocumentMarker.h" -#include "DOMUtilitiesPrivate.h" -#include "DOMWindow.h" -#include "Editor.h" -#include "EventHandler.h" -#include "FormState.h" -#include "FrameChromium.h" -#include "FrameLoader.h" -#include "FrameLoadRequest.h" -#include "FrameTree.h" -#include "FrameView.h" -#include "GraphicsContext.h" -#include "HistoryItem.h" -#include "HTMLCollection.h" -#include "HTMLFormElement.h" -#include "HTMLFrameOwnerElement.h" -#include "HTMLHeadElement.h" -#include "HTMLInputElement.h" -#include "HTMLLinkElement.h" -#include "HTMLNames.h" -#include "InspectorController.h" -#include "markup.h" -#include "Page.h" -#include "PlatformContextSkia.h" -#include "PrintContext.h" -#include "RenderFrame.h" -#include "RenderView.h" -#include "RenderWidget.h" -#include "ReplaceSelectionCommand.h" -#include "ResourceHandle.h" -#include "ResourceRequest.h" -#include "ScriptController.h" -#include "ScriptSourceCode.h" -#include "ScriptValue.h" -#include "ScrollbarTheme.h" -#include "ScrollTypes.h" -#include "SelectionController.h" -#include "Settings.h" -#include "SkiaUtils.h" -#include "SubstituteData.h" -#include "TextAffinity.h" -#include "TextIterator.h" -#include "WebConsoleMessage.h" -#include "WebDataSourceImpl.h" -#include "WebFindOptions.h" -#include "WebFormElement.h" -#include "WebFrameClient.h" -#include "WebHistoryItem.h" -#include "WebInputElement.h" -#include "WebPasswordAutocompleteListener.h" -#include "WebRange.h" -#include "WebRect.h" -#include "WebScriptSource.h" -#include "WebSecurityOrigin.h" -#include "WebSize.h" -#include "WebURLError.h" -#include "WebVector.h" -#include "WebViewImpl.h" -#include "XPathResult.h" - -#include <algorithm> -#include <wtf/CurrentTime.h> - - -#if PLATFORM(DARWIN) -#include "LocalCurrentGraphicsContext.h" -#endif - -#if PLATFORM(LINUX) -#include <gdk/gdk.h> -#endif - -using namespace WebCore; - -namespace WebKit { - -// Key for a StatsCounter tracking how many WebFrames are active. -static const char* const webFrameActiveCount = "WebFrameActiveCount"; - -static const char* const osdType = "application/opensearchdescription+xml"; -static const char* const osdRel = "search"; - -// Backend for contentAsPlainText, this is a recursive function that gets -// the text for the current frame and all of its subframes. It will append -// the text of each frame in turn to the |output| up to |maxChars| length. -// -// The |frame| must be non-null. -static void frameContentAsPlainText(size_t maxChars, Frame* frame, - Vector<UChar>* output) -{ - Document* doc = frame->document(); - if (!doc) - return; - - if (!frame->view()) - return; - - // TextIterator iterates over the visual representation of the DOM. As such, - // it requires you to do a layout before using it (otherwise it'll crash). - if (frame->view()->needsLayout()) - frame->view()->layout(); - - // Select the document body. - RefPtr<Range> range(doc->createRange()); - ExceptionCode exception = 0; - range->selectNodeContents(doc->body(), exception); - - if (!exception) { - // The text iterator will walk nodes giving us text. This is similar to - // the plainText() function in TextIterator.h, but we implement the maximum - // size and also copy the results directly into a wstring, avoiding the - // string conversion. - for (TextIterator it(range.get()); !it.atEnd(); it.advance()) { - const UChar* chars = it.characters(); - if (!chars) { - if (it.length()) { - // It appears from crash reports that an iterator can get into a state - // where the character count is nonempty but the character pointer is - // null. advance()ing it will then just add that many to the null - // pointer which won't be caught in a null check but will crash. - // - // A null pointer and 0 length is common for some nodes. - // - // IF YOU CATCH THIS IN A DEBUGGER please let brettw know. We don't - // currently understand the conditions for this to occur. Ideally, the - // iterators would never get into the condition so we should fix them - // if we can. - ASSERT_NOT_REACHED(); - break; - } - - // Just got a null node, we can forge ahead! - continue; - } - size_t toAppend = - std::min(static_cast<size_t>(it.length()), maxChars - output->size()); - output->append(chars, toAppend); - if (output->size() >= maxChars) - return; // Filled up the buffer. - } - } - - // The separator between frames when the frames are converted to plain text. - const UChar frameSeparator[] = { '\n', '\n' }; - const size_t frameSeparatorLen = 2; - - // Recursively walk the children. - FrameTree* frameTree = frame->tree(); - for (Frame* curChild = frameTree->firstChild(); curChild; curChild = curChild->tree()->nextSibling()) { - // Make sure the frame separator won't fill up the buffer, and give up if - // it will. The danger is if the separator will make the buffer longer than - // maxChars. This will cause the computation above: - // maxChars - output->size() - // to be a negative number which will crash when the subframe is added. - if (output->size() >= maxChars - frameSeparatorLen) - return; - - output->append(frameSeparator, frameSeparatorLen); - frameContentAsPlainText(maxChars, curChild, output); - if (output->size() >= maxChars) - return; // Filled up the buffer. - } -} - -// Simple class to override some of PrintContext behavior. -class ChromePrintContext : public PrintContext, public Noncopyable { -public: - ChromePrintContext(Frame* frame) - : PrintContext(frame) - , m_printedPageWidth(0) - { - } - - void begin(float width) - { - ASSERT(!m_printedPageWidth); - m_printedPageWidth = width; - PrintContext::begin(m_printedPageWidth); - } - - float getPageShrink(int pageNumber) const - { - IntRect pageRect = m_pageRects[pageNumber]; - return m_printedPageWidth / pageRect.width(); - } - - // Spools the printed page, a subrect of m_frame. Skip the scale step. - // NativeTheme doesn't play well with scaling. Scaling is done browser side - // instead. Returns the scale to be applied. - float spoolPage(GraphicsContext& ctx, int pageNumber) - { - IntRect pageRect = m_pageRects[pageNumber]; - float scale = m_printedPageWidth / pageRect.width(); - - ctx.save(); - ctx.translate(static_cast<float>(-pageRect.x()), - static_cast<float>(-pageRect.y())); - ctx.clip(pageRect); - m_frame->view()->paintContents(&ctx, pageRect); - ctx.restore(); - return scale; - } - -private: - // Set when printing. - float m_printedPageWidth; -}; - -static WebDataSource* DataSourceForDocLoader(DocumentLoader* loader) -{ - return loader ? WebDataSourceImpl::fromDocumentLoader(loader) : 0; -} - - -// WebFrame ------------------------------------------------------------------- - -class WebFrameImpl::DeferredScopeStringMatches { -public: - DeferredScopeStringMatches(WebFrameImpl* webFrame, - int identifier, - const WebString& searchText, - const WebFindOptions& options, - bool reset) - : m_timer(this, &DeferredScopeStringMatches::doTimeout) - , m_webFrame(webFrame) - , m_identifier(identifier) - , m_searchText(searchText) - , m_options(options) - , m_reset(reset) - { - m_timer.startOneShot(0.0); - } - -private: - void doTimeout(Timer<DeferredScopeStringMatches>*) - { - m_webFrame->callScopeStringMatches( - this, m_identifier, m_searchText, m_options, m_reset); - } - - Timer<DeferredScopeStringMatches> m_timer; - RefPtr<WebFrameImpl> m_webFrame; - int m_identifier; - WebString m_searchText; - WebFindOptions m_options; - bool m_reset; -}; - - -// WebFrame ------------------------------------------------------------------- - -WebFrame* WebFrame::frameForEnteredContext() -{ - Frame* frame = - ScriptController::retrieveFrameForEnteredContext(); - return WebFrameImpl::fromFrame(frame); -} - -WebFrame* WebFrame::frameForCurrentContext() -{ - Frame* frame = - ScriptController::retrieveFrameForCurrentContext(); - return WebFrameImpl::fromFrame(frame); -} - -WebString WebFrameImpl::name() const -{ - return m_frame->tree()->name(); -} - -WebURL WebFrameImpl::url() const -{ - const WebDataSource* ds = dataSource(); - if (!ds) - return WebURL(); - return ds->request().url(); -} - -WebURL WebFrameImpl::favIconURL() const -{ - FrameLoader* frameLoader = m_frame->loader(); - // The URL to the favicon may be in the header. As such, only - // ask the loader for the favicon if it's finished loading. - if (frameLoader->state() == FrameStateComplete) { - const KURL& url = frameLoader->iconURL(); - if (!url.isEmpty()) - return url; - } - return WebURL(); -} - -WebURL WebFrameImpl::openSearchDescriptionURL() const -{ - FrameLoader* frameLoader = m_frame->loader(); - if (frameLoader->state() == FrameStateComplete - && m_frame->document() && m_frame->document()->head() - && !m_frame->tree()->parent()) { - HTMLHeadElement* head = m_frame->document()->head(); - if (head) { - RefPtr<HTMLCollection> children = head->children(); - for (Node* child = children->firstItem(); child; child = children->nextItem()) { - HTMLLinkElement* linkElement = toHTMLLinkElement(child); - if (linkElement - && linkElement->type() == osdType - && linkElement->rel() == osdRel - && !linkElement->href().isEmpty()) - return linkElement->href(); - } - } - } - return WebURL(); -} - -WebSize WebFrameImpl::scrollOffset() const -{ - FrameView* view = frameView(); - if (view) - return view->scrollOffset(); - - return WebSize(); -} - -WebSize WebFrameImpl::contentsSize() const -{ - return frame()->view()->contentsSize(); -} - -int WebFrameImpl::contentsPreferredWidth() const -{ - if (m_frame->document() && m_frame->document()->renderView()) - return m_frame->document()->renderView()->minPrefWidth(); - return 0; -} - -bool WebFrameImpl::hasVisibleContent() const -{ - return frame()->view()->visibleWidth() > 0 && frame()->view()->visibleHeight() > 0; -} - -WebView* WebFrameImpl::view() const -{ - return viewImpl(); -} - -WebFrame* WebFrameImpl::opener() const -{ - Frame* opener = 0; - if (m_frame) - opener = m_frame->loader()->opener(); - return fromFrame(opener); -} - -WebFrame* WebFrameImpl::parent() const -{ - Frame* parent = 0; - if (m_frame) - parent = m_frame->tree()->parent(); - return fromFrame(parent); -} - -WebFrame* WebFrameImpl::top() const -{ - if (m_frame) - return fromFrame(m_frame->tree()->top()); - - return 0; -} - -WebFrame* WebFrameImpl::firstChild() const -{ - return fromFrame(frame()->tree()->firstChild()); -} - -WebFrame* WebFrameImpl::lastChild() const -{ - return fromFrame(frame()->tree()->lastChild()); -} - -WebFrame* WebFrameImpl::nextSibling() const -{ - return fromFrame(frame()->tree()->nextSibling()); -} - -WebFrame* WebFrameImpl::previousSibling() const -{ - return fromFrame(frame()->tree()->previousSibling()); -} - -WebFrame* WebFrameImpl::traverseNext(bool wrap) const -{ - return fromFrame(frame()->tree()->traverseNextWithWrap(wrap)); -} - -WebFrame* WebFrameImpl::traversePrevious(bool wrap) const -{ - return fromFrame(frame()->tree()->traversePreviousWithWrap(wrap)); -} - -WebFrame* WebFrameImpl::findChildByName(const WebString& name) const -{ - return fromFrame(frame()->tree()->child(name)); -} - -WebFrame* WebFrameImpl::findChildByExpression(const WebString& xpath) const -{ - if (xpath.isEmpty()) - return 0; - - Document* document = m_frame->document(); - - ExceptionCode ec = 0; - PassRefPtr<XPathResult> xpathResult = - document->evaluate(xpath, - document, - 0, // namespace - XPathResult::ORDERED_NODE_ITERATOR_TYPE, - 0, // XPathResult object - ec); - if (!xpathResult.get()) - return 0; - - Node* node = xpathResult->iterateNext(ec); - - if (!node || !node->isFrameOwnerElement()) - return 0; - HTMLFrameOwnerElement* frameElement = - static_cast<HTMLFrameOwnerElement*>(node); - return fromFrame(frameElement->contentFrame()); -} - -void WebFrameImpl::forms(WebVector<WebFormElement>& results) const -{ - if (!m_frame) - return; - - RefPtr<HTMLCollection> forms = m_frame->document()->forms(); - size_t formCount = forms->length(); - - WebVector<WebFormElement> temp(formCount); - for (size_t i = 0; i < formCount; ++i) { - Node* node = forms->item(i); - // Strange but true, sometimes item can be 0. - if (node) - temp[i] = static_cast<HTMLFormElement*>(node); - } - results.swap(temp); -} - -WebSecurityOrigin WebFrameImpl::securityOrigin() const -{ - if (!m_frame || !m_frame->document()) - return WebSecurityOrigin(); - - return WebSecurityOrigin(m_frame->document()->securityOrigin()); -} - -void WebFrameImpl::grantUniversalAccess() -{ - ASSERT(m_frame && m_frame->document()); - if (m_frame && m_frame->document()) - m_frame->document()->securityOrigin()->grantUniversalAccess(); -} - -NPObject* WebFrameImpl::windowObject() const -{ - if (!m_frame) - return 0; - - return m_frame->script()->windowScriptNPObject(); -} - -void WebFrameImpl::bindToWindowObject(const WebString& name, NPObject* object) -{ - ASSERT(m_frame); - if (!m_frame || !m_frame->script()->isEnabled()) - return; - - String key = name; -#if USE(V8) - m_frame->script()->bindToWindowObject(m_frame, key, object); -#else - notImplemented(); -#endif -} - -void WebFrameImpl::executeScript(const WebScriptSource& source) -{ - m_frame->script()->executeScript( - ScriptSourceCode(source.code, source.url, source.startLine)); -} - -void WebFrameImpl::executeScriptInNewContext( - const WebScriptSource* sourcesIn, unsigned numSources, int extensionGroup) -{ - Vector<ScriptSourceCode> sources; - - for (unsigned i = 0; i < numSources; ++i) { - sources.append(ScriptSourceCode( - sourcesIn[i].code, sourcesIn[i].url, sourcesIn[i].startLine)); - } - - m_frame->script()->evaluateInNewContext(sources, extensionGroup); -} - -void WebFrameImpl::executeScriptInIsolatedWorld( - int worldId, const WebScriptSource* sourcesIn, unsigned numSources, - int extensionGroup) -{ - Vector<ScriptSourceCode> sources; - - for (unsigned i = 0; i < numSources; ++i) { - sources.append(ScriptSourceCode( - sourcesIn[i].code, sourcesIn[i].url, sourcesIn[i].startLine)); - } - - m_frame->script()->evaluateInIsolatedWorld(worldId, sources, extensionGroup); -} - -void WebFrameImpl::addMessageToConsole(const WebConsoleMessage& message) -{ - ASSERT(frame()); - - MessageLevel webCoreMessageLevel; - switch (message.level) { - case WebConsoleMessage::LevelTip: - webCoreMessageLevel = TipMessageLevel; - break; - case WebConsoleMessage::LevelLog: - webCoreMessageLevel = LogMessageLevel; - break; - case WebConsoleMessage::LevelWarning: - webCoreMessageLevel = WarningMessageLevel; - break; - case WebConsoleMessage::LevelError: - webCoreMessageLevel = ErrorMessageLevel; - break; - default: - ASSERT_NOT_REACHED(); - return; - } - - frame()->domWindow()->console()->addMessage( - OtherMessageSource, LogMessageType, webCoreMessageLevel, message.text, - 1, String()); -} - -void WebFrameImpl::collectGarbage() -{ - if (!m_frame) - return; - if (!m_frame->settings()->isJavaScriptEnabled()) - return; - // FIXME: Move this to the ScriptController and make it JS neutral. -#if USE(V8) - m_frame->script()->collectGarbage(); -#else - notImplemented(); -#endif -} - -#if USE(V8) -// Returns the V8 context for this frame, or an empty handle if there is none. -v8::Local<v8::Context> WebFrameImpl::mainWorldScriptContext() const -{ - if (!m_frame) - return v8::Local<v8::Context>(); - - return V8Proxy::mainWorldContext(m_frame); -} -#endif - -bool WebFrameImpl::insertStyleText( - const WebString& css, const WebString& id) { - Document* document = frame()->document(); - if (!document) - return false; - Element* documentElement = document->documentElement(); - if (!documentElement) - return false; - - ExceptionCode err = 0; - - if (!id.isEmpty()) { - Element* oldElement = document->getElementById(id); - if (oldElement) { - Node* parent = oldElement->parent(); - if (!parent) - return false; - parent->removeChild(oldElement, err); - } - } - - RefPtr<Element> stylesheet = document->createElement( - HTMLNames::styleTag, false); - if (!id.isEmpty()) - stylesheet->setAttribute(HTMLNames::idAttr, id); - stylesheet->setTextContent(css, err); - ASSERT(!err); - Node* first = documentElement->firstChild(); - bool success = documentElement->insertBefore(stylesheet, first, err); - ASSERT(success); - return success; -} - -void WebFrameImpl::reload() -{ - m_frame->loader()->history()->saveDocumentAndScrollState(); - - stopLoading(); // Make sure existing activity stops. - m_frame->loader()->reload(); -} - -void WebFrameImpl::loadRequest(const WebURLRequest& request) -{ - ASSERT(!request.isNull()); - const ResourceRequest& resourceRequest = request.toResourceRequest(); - - if (resourceRequest.url().protocolIs("javascript")) { - loadJavaScriptURL(resourceRequest.url()); - return; - } - - stopLoading(); // Make sure existing activity stops. - m_frame->loader()->load(resourceRequest, false); -} - -void WebFrameImpl::loadHistoryItem(const WebHistoryItem& item) -{ - RefPtr<HistoryItem> historyItem = PassRefPtr<HistoryItem>(item); - ASSERT(historyItem.get()); - - stopLoading(); // Make sure existing activity stops. - - // If there is no currentItem, which happens when we are navigating in - // session history after a crash, we need to manufacture one otherwise WebKit - // hoarks. This is probably the wrong thing to do, but it seems to work. - RefPtr<HistoryItem> currentItem = m_frame->loader()->history()->currentItem(); - if (!currentItem) { - currentItem = HistoryItem::create(); - currentItem->setLastVisitWasFailure(true); - m_frame->loader()->history()->setCurrentItem(currentItem.get()); - viewImpl()->setCurrentHistoryItem(currentItem.get()); - } - - m_frame->loader()->history()->goToItem( - historyItem.get(), FrameLoadTypeIndexedBackForward); -} - -void WebFrameImpl::loadData(const WebData& data, - const WebString& mimeType, - const WebString& textEncoding, - const WebURL& baseURL, - const WebURL& unreachableURL, - bool replace) -{ - SubstituteData substData(data, mimeType, textEncoding, unreachableURL); - ASSERT(substData.isValid()); - - stopLoading(); // Make sure existing activity stops. - m_frame->loader()->load(ResourceRequest(baseURL), substData, false); - if (replace) { - // Do this to force WebKit to treat the load as replacing the currently - // loaded page. - m_frame->loader()->setReplacing(); - } -} - -void WebFrameImpl::loadHTMLString(const WebData& data, - const WebURL& baseURL, - const WebURL& unreachableURL, - bool replace) -{ - loadData(data, - WebString::fromUTF8("text/html"), - WebString::fromUTF8("UTF-8"), - baseURL, - unreachableURL, - replace); -} - -bool WebFrameImpl::isLoading() const -{ - if (!m_frame) - return false; - return m_frame->loader()->isLoading(); -} - -void WebFrameImpl::stopLoading() -{ - if (!m_frame) - return; - - // FIXME: Figure out what we should really do here. It seems like a bug - // that FrameLoader::stopLoading doesn't call stopAllLoaders. - m_frame->loader()->stopAllLoaders(); - m_frame->loader()->stopLoading(UnloadEventPolicyNone); -} - -WebDataSource* WebFrameImpl::provisionalDataSource() const -{ - FrameLoader* frameLoader = m_frame->loader(); - - // We regard the policy document loader as still provisional. - DocumentLoader* docLoader = frameLoader->provisionalDocumentLoader(); - if (!docLoader) - docLoader = frameLoader->policyDocumentLoader(); - - return DataSourceForDocLoader(docLoader); -} - -WebDataSource* WebFrameImpl::dataSource() const -{ - return DataSourceForDocLoader(m_frame->loader()->documentLoader()); -} - -WebHistoryItem WebFrameImpl::previousHistoryItem() const -{ - // We use the previous item here because documentState (filled-out forms) - // only get saved to history when it becomes the previous item. The caller - // is expected to query the history item after a navigation occurs, after - // the desired history item has become the previous entry. - return WebHistoryItem(viewImpl()->previousHistoryItem()); -} - -WebHistoryItem WebFrameImpl::currentHistoryItem() const -{ - m_frame->loader()->history()->saveDocumentAndScrollState(); - - return WebHistoryItem(m_frame->page()->backForwardList()->currentItem()); -} - -void WebFrameImpl::enableViewSourceMode(bool enable) -{ - if (m_frame) - m_frame->setInViewSourceMode(enable); -} - -bool WebFrameImpl::isViewSourceModeEnabled() const -{ - if (m_frame) - return m_frame->inViewSourceMode(); - - return false; -} - -void WebFrameImpl::setReferrerForRequest( - WebURLRequest& request, const WebURL& referrerURL) { - String referrer; - if (referrerURL.isEmpty()) - referrer = m_frame->loader()->outgoingReferrer(); - else - referrer = referrerURL.spec().utf16(); - if (SecurityOrigin::shouldHideReferrer(request.url(), referrer)) - return; - request.setHTTPHeaderField(WebString::fromUTF8("Referer"), referrer); -} - -void WebFrameImpl::dispatchWillSendRequest(WebURLRequest& request) -{ - ResourceResponse response; - m_frame->loader()->client()->dispatchWillSendRequest( - 0, 0, request.toMutableResourceRequest(), response); -} - -void WebFrameImpl::commitDocumentData(const char* data, size_t dataLen) -{ - DocumentLoader* documentLoader = m_frame->loader()->documentLoader(); - - // Set the text encoding. This calls begin() for us. It is safe to call - // this multiple times (Mac does: page/mac/WebCoreFrameBridge.mm). - bool userChosen = true; - String encoding = documentLoader->overrideEncoding(); - if (encoding.isNull()) { - userChosen = false; - encoding = documentLoader->response().textEncodingName(); - } - m_frame->loader()->setEncoding(encoding, userChosen); - - // NOTE: mac only does this if there is a document - m_frame->loader()->addData(data, dataLen); -} - -unsigned WebFrameImpl::unloadListenerCount() const -{ - return frame()->domWindow()->pendingUnloadEventListeners(); -} - -bool WebFrameImpl::isProcessingUserGesture() const -{ - return frame()->loader()->isProcessingUserGesture(); -} - -bool WebFrameImpl::willSuppressOpenerInNewFrame() const -{ - return frame()->loader()->suppressOpenerInNewFrame(); -} - -void WebFrameImpl::replaceSelection(const WebString& text) -{ - RefPtr<DocumentFragment> fragment = createFragmentFromText( - frame()->selection()->toNormalizedRange().get(), text); - applyCommand(ReplaceSelectionCommand::create( - frame()->document(), fragment.get(), false, true, true)); -} - -void WebFrameImpl::insertText(const WebString& text) -{ - frame()->editor()->insertText(text, 0); -} - -void WebFrameImpl::setMarkedText( - const WebString& text, unsigned location, unsigned length) -{ - Editor* editor = frame()->editor(); - - editor->confirmComposition(text); - - Vector<CompositionUnderline> decorations; - editor->setComposition(text, decorations, location, length); -} - -void WebFrameImpl::unmarkText() -{ - frame()->editor()->confirmCompositionWithoutDisturbingSelection(); -} - -bool WebFrameImpl::hasMarkedText() const -{ - return frame()->editor()->hasComposition(); -} - -WebRange WebFrameImpl::markedRange() const -{ - return frame()->editor()->compositionRange(); -} - -bool WebFrameImpl::executeCommand(const WebString& name) -{ - ASSERT(frame()); - - if (name.length() <= 2) - return false; - - // Since we don't have NSControl, we will convert the format of command - // string and call the function on Editor directly. - String command = name; - - // Make sure the first letter is upper case. - command.replace(0, 1, command.substring(0, 1).upper()); - - // Remove the trailing ':' if existing. - if (command[command.length() - 1] == UChar(':')) - command = command.substring(0, command.length() - 1); - - bool rv = true; - - // Specially handling commands that Editor::execCommand does not directly - // support. - if (command == "DeleteToEndOfParagraph") { - Editor* editor = frame()->editor(); - if (!editor->deleteWithDirection(SelectionController::FORWARD, - ParagraphBoundary, - true, - false)) { - editor->deleteWithDirection(SelectionController::FORWARD, - CharacterGranularity, - true, - false); - } - } else if (command == "Indent") - frame()->editor()->indent(); - else if (command == "Outdent") - frame()->editor()->outdent(); - else if (command == "DeleteBackward") - rv = frame()->editor()->command(AtomicString("BackwardDelete")).execute(); - else if (command == "DeleteForward") - rv = frame()->editor()->command(AtomicString("ForwardDelete")).execute(); - else if (command == "AdvanceToNextMisspelling") { - // False must be passed here, or the currently selected word will never be - // skipped. - frame()->editor()->advanceToNextMisspelling(false); - } else if (command == "ToggleSpellPanel") - frame()->editor()->showSpellingGuessPanel(); - else - rv = frame()->editor()->command(command).execute(); - return rv; -} - -bool WebFrameImpl::executeCommand(const WebString& name, const WebString& value) -{ - ASSERT(frame()); - String webName = name; - - // moveToBeginningOfDocument and moveToEndfDocument are only handled by WebKit - // for editable nodes. - if (!frame()->editor()->canEdit() && webName == "moveToBeginningOfDocument") - return viewImpl()->propagateScroll(ScrollUp, ScrollByDocument); - - if (!frame()->editor()->canEdit() && webName == "moveToEndOfDocument") - return viewImpl()->propagateScroll(ScrollDown, ScrollByDocument); - - return frame()->editor()->command(webName).execute(value); -} - -bool WebFrameImpl::isCommandEnabled(const WebString& name) const -{ - ASSERT(frame()); - return frame()->editor()->command(name).isEnabled(); -} - -void WebFrameImpl::enableContinuousSpellChecking(bool enable) -{ - if (enable == isContinuousSpellCheckingEnabled()) - return; - frame()->editor()->toggleContinuousSpellChecking(); -} - -bool WebFrameImpl::isContinuousSpellCheckingEnabled() const -{ - return frame()->editor()->isContinuousSpellCheckingEnabled(); -} - -bool WebFrameImpl::hasSelection() const -{ - // frame()->selection()->isNone() never returns true. - return (frame()->selection()->start() != frame()->selection()->end()); -} - -WebRange WebFrameImpl::selectionRange() const -{ - return frame()->selection()->toNormalizedRange(); -} - -WebString WebFrameImpl::selectionAsText() const -{ - RefPtr<Range> range = frame()->selection()->toNormalizedRange(); - if (!range.get()) - return WebString(); - - String text = range->text(); -#if PLATFORM(WIN_OS) - replaceNewlinesWithWindowsStyleNewlines(text); -#endif - replaceNBSPWithSpace(text); - return text; -} - -WebString WebFrameImpl::selectionAsMarkup() const -{ - RefPtr<Range> range = frame()->selection()->toNormalizedRange(); - if (!range.get()) - return WebString(); - - return createMarkup(range.get(), 0); -} - -int WebFrameImpl::printBegin(const WebSize& pageSize) -{ - ASSERT(!frame()->document()->isFrameSet()); - - m_printContext.set(new ChromePrintContext(frame())); - FloatRect rect(0, 0, static_cast<float>(pageSize.width), - static_cast<float>(pageSize.height)); - m_printContext->begin(rect.width()); - float pageHeight; - // We ignore the overlays calculation for now since they are generated in the - // browser. pageHeight is actually an output parameter. - m_printContext->computePageRects(rect, 0, 0, 1.0, pageHeight); - return m_printContext->pageCount(); -} - -float WebFrameImpl::getPrintPageShrink(int page) -{ - // Ensure correct state. - if (!m_printContext.get() || page < 0) { - ASSERT_NOT_REACHED(); - return 0; - } - - return m_printContext->getPageShrink(page); -} - -float WebFrameImpl::printPage(int page, WebCanvas* canvas) -{ - // Ensure correct state. - if (!m_printContext.get() || page < 0 || !frame() || !frame()->document()) { - ASSERT_NOT_REACHED(); - return 0; - } - -#if PLATFORM(WIN_OS) || PLATFORM(LINUX) || PLATFORM(FREEBSD) - PlatformContextSkia context(canvas); - GraphicsContext spool(&context); -#elif PLATFORM(DARWIN) - GraphicsContext spool(canvas); - LocalCurrentGraphicsContext localContext(&spool); -#endif - - return m_printContext->spoolPage(spool, page); -} - -void WebFrameImpl::printEnd() -{ - ASSERT(m_printContext.get()); - if (m_printContext.get()) - m_printContext->end(); - m_printContext.clear(); -} - -bool WebFrameImpl::find(int identifier, - const WebString& searchText, - const WebFindOptions& options, - bool wrapWithinFrame, - WebRect* selectionRect) -{ - WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl(); - - if (!options.findNext) - frame()->page()->unmarkAllTextMatches(); - else - setMarkerActive(m_activeMatch.get(), false); // Active match is changing. - - // Starts the search from the current selection. - bool startInSelection = true; - - // If the user has selected something since the last Find operation we want - // to start from there. Otherwise, we start searching from where the last Find - // operation left off (either a Find or a FindNext operation). - VisibleSelection selection(frame()->selection()->selection()); - bool activeSelection = !selection.isNone(); - if (!activeSelection && m_activeMatch) { - selection = VisibleSelection(m_activeMatch.get()); - frame()->selection()->setSelection(selection); - } - - ASSERT(frame() && frame()->view()); - bool found = frame()->findString( - searchText, options.forward, options.matchCase, wrapWithinFrame, - startInSelection); - if (found) { - // Store which frame was active. This will come in handy later when we - // change the active match ordinal below. - WebFrameImpl* oldActiveFrame = mainFrameImpl->m_activeMatchFrame; - // Set this frame as the active frame (the one with the active highlight). - mainFrameImpl->m_activeMatchFrame = this; - - // We found something, so we can now query the selection for its position. - VisibleSelection newSelection(frame()->selection()->selection()); - IntRect currSelectionRect; - - // If we thought we found something, but it couldn't be selected (perhaps - // because it was marked -webkit-user-select: none), we can't set it to - // be active but we still continue searching. This matches Safari's - // behavior, including some oddities when selectable and un-selectable text - // are mixed on a page: see https://bugs.webkit.org/show_bug.cgi?id=19127. - if (newSelection.isNone() || (newSelection.start() == newSelection.end())) - m_activeMatch = 0; - else { - m_activeMatch = newSelection.toNormalizedRange(); - currSelectionRect = m_activeMatch->boundingBox(); - setMarkerActive(m_activeMatch.get(), true); // Active. - // WebKit draws the highlighting for all matches. - executeCommand(WebString::fromUTF8("Unselect")); - } - - if (!options.findNext || activeSelection) { - // This is either a Find operation or a Find-next from a new start point - // due to a selection, so we set the flag to ask the scoping effort - // to find the active rect for us so we can update the ordinal (n of m). - m_locatingActiveRect = true; - } else { - if (oldActiveFrame != this) { - // If the active frame has changed it means that we have a multi-frame - // page and we just switch to searching in a new frame. Then we just - // want to reset the index. - if (options.forward) - m_activeMatchIndex = 0; - else - m_activeMatchIndex = m_lastMatchCount - 1; - } else { - // We are still the active frame, so increment (or decrement) the - // |m_activeMatchIndex|, wrapping if needed (on single frame pages). - options.forward ? ++m_activeMatchIndex : --m_activeMatchIndex; - if (m_activeMatchIndex + 1 > m_lastMatchCount) - m_activeMatchIndex = 0; - if (m_activeMatchIndex == -1) - m_activeMatchIndex = m_lastMatchCount - 1; - } - if (selectionRect) { - WebRect rect = frame()->view()->convertToContainingWindow(currSelectionRect); - rect.x -= frameView()->scrollOffset().width(); - rect.y -= frameView()->scrollOffset().height(); - *selectionRect = rect; - - reportFindInPageSelection(rect, m_activeMatchIndex + 1, identifier); - } - } - } else { - // Nothing was found in this frame. - m_activeMatch = 0; - - // Erase all previous tickmarks and highlighting. - invalidateArea(InvalidateAll); - } - - return found; -} - -void WebFrameImpl::stopFinding(bool clearSelection) -{ - if (!clearSelection) - setFindEndstateFocusAndSelection(); - cancelPendingScopingEffort(); - - // Remove all markers for matches found and turn off the highlighting. - if (!parent()) - frame()->document()->removeMarkers(DocumentMarker::TextMatch); - frame()->setMarkedTextMatchesAreHighlighted(false); - - // Let the frame know that we don't want tickmarks or highlighting anymore. - invalidateArea(InvalidateAll); -} - -void WebFrameImpl::scopeStringMatches(int identifier, - const WebString& searchText, - const WebFindOptions& options, - bool reset) -{ - if (!shouldScopeMatches(searchText)) - return; - - WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl(); - - if (reset) { - // This is a brand new search, so we need to reset everything. - // Scoping is just about to begin. - m_scopingComplete = false; - // Clear highlighting for this frame. - if (frame()->markedTextMatchesAreHighlighted()) - frame()->page()->unmarkAllTextMatches(); - // Clear the counters from last operation. - m_lastMatchCount = 0; - m_nextInvalidateAfter = 0; - - m_resumeScopingFromRange = 0; - - mainFrameImpl->m_framesScopingCount++; - - // Now, defer scoping until later to allow find operation to finish quickly. - scopeStringMatchesSoon( - identifier, - searchText, - options, - false); // false=we just reset, so don't do it again. - return; - } - - RefPtr<Range> searchRange(rangeOfContents(frame()->document())); - - ExceptionCode ec = 0, ec2 = 0; - if (m_resumeScopingFromRange.get()) { - // This is a continuation of a scoping operation that timed out and didn't - // complete last time around, so we should start from where we left off. - searchRange->setStart(m_resumeScopingFromRange->startContainer(), - m_resumeScopingFromRange->startOffset(ec2) + 1, - ec); - if (ec || ec2) { - if (ec2) // A non-zero |ec| happens when navigating during search. - ASSERT_NOT_REACHED(); - return; - } - } - - // This timeout controls how long we scope before releasing control. This - // value does not prevent us from running for longer than this, but it is - // periodically checked to see if we have exceeded our allocated time. - const double maxScopingDuration = 0.1; // seconds - - int matchCount = 0; - bool timedOut = false; - double startTime = currentTime(); - do { - // Find next occurrence of the search string. - // FIXME: (http://b/1088245) This WebKit operation may run for longer - // than the timeout value, and is not interruptible as it is currently - // written. We may need to rewrite it with interruptibility in mind, or - // find an alternative. - RefPtr<Range> resultRange(findPlainText(searchRange.get(), - searchText, - true, - options.matchCase)); - if (resultRange->collapsed(ec)) { - if (!resultRange->startContainer()->isInShadowTree()) - break; - - searchRange = rangeOfContents(frame()->document()); - searchRange->setStartAfter( - resultRange->startContainer()->shadowAncestorNode(), ec); - continue; - } - - // A non-collapsed result range can in some funky whitespace cases still not - // advance the range's start position (4509328). Break to avoid infinite - // loop. (This function is based on the implementation of - // Frame::markAllMatchesForText, which is where this safeguard comes from). - VisiblePosition newStart = endVisiblePosition(resultRange.get(), DOWNSTREAM); - if (newStart == startVisiblePosition(searchRange.get(), DOWNSTREAM)) - break; - - // Only treat the result as a match if it is visible - if (frame()->editor()->insideVisibleArea(resultRange.get())) { - ++matchCount; - - setStart(searchRange.get(), newStart); - Node* shadowTreeRoot = searchRange->shadowTreeRootNode(); - if (searchRange->collapsed(ec) && shadowTreeRoot) - searchRange->setEnd(shadowTreeRoot, shadowTreeRoot->childNodeCount(), ec); - - // Catch a special case where Find found something but doesn't know what - // the bounding box for it is. In this case we set the first match we find - // as the active rect. - IntRect resultBounds = resultRange->boundingBox(); - IntRect activeSelectionRect; - if (m_locatingActiveRect) { - activeSelectionRect = m_activeMatch.get() ? - m_activeMatch->boundingBox() : resultBounds; - } - - // If the Find function found a match it will have stored where the - // match was found in m_activeSelectionRect on the current frame. If we - // find this rect during scoping it means we have found the active - // tickmark. - bool foundActiveMatch = false; - if (m_locatingActiveRect && (activeSelectionRect == resultBounds)) { - // We have found the active tickmark frame. - mainFrameImpl->m_activeMatchFrame = this; - foundActiveMatch = true; - // We also know which tickmark is active now. - m_activeMatchIndex = matchCount - 1; - // To stop looking for the active tickmark, we set this flag. - m_locatingActiveRect = false; - - // Notify browser of new location for the selected rectangle. - resultBounds.move(-frameView()->scrollOffset().width(), - -frameView()->scrollOffset().height()); - reportFindInPageSelection( - frame()->view()->convertToContainingWindow(resultBounds), - m_activeMatchIndex + 1, - identifier); - } - - addMarker(resultRange.get(), foundActiveMatch); - } - - m_resumeScopingFromRange = resultRange; - timedOut = (currentTime() - startTime) >= maxScopingDuration; - } while (!timedOut); - - // Remember what we search for last time, so we can skip searching if more - // letters are added to the search string (and last outcome was 0). - m_lastSearchString = searchText; - - if (matchCount > 0) { - frame()->setMarkedTextMatchesAreHighlighted(true); - - m_lastMatchCount += matchCount; - - // Let the mainframe know how much we found during this pass. - mainFrameImpl->increaseMatchCount(matchCount, identifier); - } - - if (timedOut) { - // If we found anything during this pass, we should redraw. However, we - // don't want to spam too much if the page is extremely long, so if we - // reach a certain point we start throttling the redraw requests. - if (matchCount > 0) - invalidateIfNecessary(); - - // Scoping effort ran out of time, lets ask for another time-slice. - scopeStringMatchesSoon( - identifier, - searchText, - options, - false); // don't reset. - return; // Done for now, resume work later. - } - - // This frame has no further scoping left, so it is done. Other frames might, - // of course, continue to scope matches. - m_scopingComplete = true; - mainFrameImpl->m_framesScopingCount--; - - // If this is the last frame to finish scoping we need to trigger the final - // update to be sent. - if (!mainFrameImpl->m_framesScopingCount) - mainFrameImpl->increaseMatchCount(0, identifier); - - // This frame is done, so show any scrollbar tickmarks we haven't drawn yet. - invalidateArea(InvalidateScrollbar); -} - -void WebFrameImpl::cancelPendingScopingEffort() -{ - deleteAllValues(m_deferredScopingWork); - m_deferredScopingWork.clear(); - - m_activeMatchIndex = -1; -} - -void WebFrameImpl::increaseMatchCount(int count, int identifier) -{ - // This function should only be called on the mainframe. - ASSERT(!parent()); - - m_totalMatchCount += count; - - // Update the UI with the latest findings. - if (client()) - client()->reportFindInPageMatchCount(identifier, m_totalMatchCount, !m_framesScopingCount); -} - -void WebFrameImpl::reportFindInPageSelection(const WebRect& selectionRect, - int activeMatchOrdinal, - int identifier) -{ - // Update the UI with the latest selection rect. - if (client()) - client()->reportFindInPageSelection(identifier, ordinalOfFirstMatchForFrame(this) + activeMatchOrdinal, selectionRect); -} - -void WebFrameImpl::resetMatchCount() -{ - m_totalMatchCount = 0; - m_framesScopingCount = 0; -} - -WebURL WebFrameImpl::completeURL(const WebString& url) const -{ - if (!m_frame || !m_frame->document()) - return WebURL(); - - return m_frame->document()->completeURL(url); -} - -WebString WebFrameImpl::contentAsText(size_t maxChars) const -{ - if (!m_frame) - return WebString(); - - Vector<UChar> text; - frameContentAsPlainText(maxChars, m_frame, &text); - return String::adopt(text); -} - -WebString WebFrameImpl::contentAsMarkup() const -{ - return createFullMarkup(m_frame->document()); -} - -// WebFrameImpl public --------------------------------------------------------- - -int WebFrameImpl::m_liveObjectCount = 0; - -PassRefPtr<WebFrameImpl> WebFrameImpl::create(WebFrameClient* client) -{ - return adoptRef(new WebFrameImpl(ClientHandle::create(client))); -} - -WebFrameImpl::WebFrameImpl(PassRefPtr<ClientHandle> clientHandle) - : m_frameLoaderClient(this) - , m_clientHandle(clientHandle) - , m_activeMatchFrame(0) - , m_activeMatchIndex(-1) - , m_locatingActiveRect(false) - , m_resumeScopingFromRange(0) - , m_lastMatchCount(-1) - , m_totalMatchCount(-1) - , m_framesScopingCount(-1) - , m_scopingComplete(false) - , m_nextInvalidateAfter(0) -{ - ChromiumBridge::incrementStatsCounter(webFrameActiveCount); - m_liveObjectCount++; -} - -WebFrameImpl::~WebFrameImpl() -{ - ChromiumBridge::decrementStatsCounter(webFrameActiveCount); - m_liveObjectCount--; - - cancelPendingScopingEffort(); - clearPasswordListeners(); -} - -void WebFrameImpl::initializeAsMainFrame(WebViewImpl* webViewImpl) -{ - RefPtr<Frame> frame = Frame::create(webViewImpl->page(), 0, &m_frameLoaderClient); - m_frame = frame.get(); - - // Add reference on behalf of FrameLoader. See comments in - // WebFrameLoaderClient::frameLoaderDestroyed for more info. - ref(); - - // We must call init() after m_frame is assigned because it is referenced - // during init(). - m_frame->init(); -} - -PassRefPtr<Frame> WebFrameImpl::createChildFrame( - const FrameLoadRequest& request, HTMLFrameOwnerElement* ownerElement) -{ - RefPtr<WebFrameImpl> webframe(adoptRef(new WebFrameImpl(m_clientHandle))); - - // Add an extra ref on behalf of the Frame/FrameLoader, which references the - // WebFrame via the FrameLoaderClient interface. See the comment at the top - // of this file for more info. - webframe->ref(); - - RefPtr<Frame> childFrame = Frame::create( - m_frame->page(), ownerElement, &webframe->m_frameLoaderClient); - webframe->m_frame = childFrame.get(); - - childFrame->tree()->setName(request.frameName()); - - m_frame->tree()->appendChild(childFrame); - - // Frame::init() can trigger onload event in the parent frame, - // which may detach this frame and trigger a null-pointer access - // in FrameTree::removeChild. Move init() after appendChild call - // so that webframe->mFrame is in the tree before triggering - // onload event handler. - // Because the event handler may set webframe->mFrame to null, - // it is necessary to check the value after calling init() and - // return without loading URL. - // (b:791612) - childFrame->init(); // create an empty document - if (!childFrame->tree()->parent()) - return 0; - - m_frame->loader()->loadURLIntoChildFrame( - request.resourceRequest().url(), - request.resourceRequest().httpReferrer(), - childFrame.get()); - - // A synchronous navigation (about:blank) would have already processed - // onload, so it is possible for the frame to have already been destroyed by - // script in the page. - if (!childFrame->tree()->parent()) - return 0; - - return childFrame.release(); -} - -void WebFrameImpl::layout() -{ - // layout this frame - FrameView* view = m_frame->view(); - if (view) - view->layoutIfNeededRecursive(); -} - -void WebFrameImpl::paint(WebCanvas* canvas, const WebRect& rect) -{ - if (rect.isEmpty()) - return; - IntRect dirtyRect(rect); -#if WEBKIT_USING_CG - GraphicsContext gc(canvas); - LocalCurrentGraphicsContext localContext(&gc); -#elif WEBKIT_USING_SKIA - PlatformContextSkia context(canvas); - - // PlatformGraphicsContext is actually a pointer to PlatformContextSkia - GraphicsContext gc(reinterpret_cast<PlatformGraphicsContext*>(&context)); -#else - notImplemented(); -#endif - gc.save(); - if (m_frame->document() && frameView()) { - gc.clip(dirtyRect); - frameView()->paint(&gc, dirtyRect); - m_frame->page()->inspectorController()->drawNodeHighlight(gc); - } else - gc.fillRect(dirtyRect, Color::white, DeviceColorSpace); - gc.restore(); -} - -void WebFrameImpl::createFrameView() -{ - ASSERT(m_frame); // If m_frame doesn't exist, we probably didn't init properly. - - Page* page = m_frame->page(); - ASSERT(page); - ASSERT(page->mainFrame()); - - bool isMainFrame = m_frame == page->mainFrame(); - if (isMainFrame && m_frame->view()) - m_frame->view()->setParentVisible(false); - - m_frame->setView(0); - - WebViewImpl* webView = viewImpl(); - - RefPtr<FrameView> view; - if (isMainFrame) - view = FrameView::create(m_frame, webView->size()); - else - view = FrameView::create(m_frame); - - m_frame->setView(view); - - if (webView->isTransparent()) - view->setTransparent(true); - - // FIXME: The Mac code has a comment about this possibly being unnecessary. - // See installInFrame in WebCoreFrameBridge.mm - if (m_frame->ownerRenderer()) - m_frame->ownerRenderer()->setWidget(view.get()); - - if (HTMLFrameOwnerElement* owner = m_frame->ownerElement()) - view->setCanHaveScrollbars(owner->scrollingMode() != ScrollbarAlwaysOff); - - if (isMainFrame) - view->setParentVisible(true); -} - -WebFrameImpl* WebFrameImpl::fromFrame(Frame* frame) -{ - if (!frame) - return 0; - - return static_cast<FrameLoaderClientImpl*>(frame->loader()->client())->webFrame(); -} - -WebViewImpl* WebFrameImpl::viewImpl() const -{ - if (!m_frame) - return 0; - - return WebViewImpl::fromPage(m_frame->page()); -} - -WebDataSourceImpl* WebFrameImpl::dataSourceImpl() const -{ - return static_cast<WebDataSourceImpl*>(dataSource()); -} - -WebDataSourceImpl* WebFrameImpl::provisionalDataSourceImpl() const -{ - return static_cast<WebDataSourceImpl*>(provisionalDataSource()); -} - -void WebFrameImpl::setFindEndstateFocusAndSelection() -{ - WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl(); - - if (this == mainFrameImpl->activeMatchFrame() && m_activeMatch.get()) { - // If the user has set the selection since the match was found, we - // don't focus anything. - VisibleSelection selection(frame()->selection()->selection()); - if (!selection.isNone()) - return; - - // Try to find the first focusable node up the chain, which will, for - // example, focus links if we have found text within the link. - Node* node = m_activeMatch->firstNode(); - while (node && !node->isFocusable() && node != frame()->document()) - node = node->parent(); - - if (node && node != frame()->document()) { - // Found a focusable parent node. Set focus to it. - frame()->document()->setFocusedNode(node); - } else { - // Iterate over all the nodes in the range until we find a focusable node. - // This, for example, sets focus to the first link if you search for - // text and text that is within one or more links. - node = m_activeMatch->firstNode(); - while (node && node != m_activeMatch->pastLastNode()) { - if (node->isFocusable()) { - frame()->document()->setFocusedNode(node); - break; - } - node = node->traverseNextNode(); - } - } - } -} - -void WebFrameImpl::didFail(const ResourceError& error, bool wasProvisional) -{ - if (!client()) - return; - WebURLError webError = error; - if (wasProvisional) - client()->didFailProvisionalLoad(this, webError); - else - client()->didFailLoad(this, webError); -} - -void WebFrameImpl::setAllowsScrolling(bool flag) -{ - m_frame->view()->setCanHaveScrollbars(flag); -} - -void WebFrameImpl::registerPasswordListener( - WebInputElement inputElement, - WebPasswordAutocompleteListener* listener) -{ - RefPtr<HTMLInputElement> element = inputElement.operator PassRefPtr<HTMLInputElement>(); - ASSERT(m_passwordListeners.find(element) == m_passwordListeners.end()); - m_passwordListeners.set(element, listener); -} - -WebPasswordAutocompleteListener* WebFrameImpl::getPasswordListener( - HTMLInputElement* inputElement) -{ - return m_passwordListeners.get(RefPtr<HTMLInputElement>(inputElement)); -} - -// WebFrameImpl private -------------------------------------------------------- - -void WebFrameImpl::closing() -{ - m_frame = 0; -} - -void WebFrameImpl::invalidateArea(AreaToInvalidate area) -{ - ASSERT(frame() && frame()->view()); - FrameView* view = frame()->view(); - - if ((area & InvalidateAll) == InvalidateAll) - view->invalidateRect(view->frameRect()); - else { - if ((area & InvalidateContentArea) == InvalidateContentArea) { - IntRect contentArea( - view->x(), view->y(), view->visibleWidth(), view->visibleHeight()); - view->invalidateRect(contentArea); - } - - if ((area & InvalidateScrollbar) == InvalidateScrollbar) { - // Invalidate the vertical scroll bar region for the view. - IntRect scrollBarVert( - view->x() + view->visibleWidth(), view->y(), - ScrollbarTheme::nativeTheme()->scrollbarThickness(), - view->visibleHeight()); - view->invalidateRect(scrollBarVert); - } - } -} - -void WebFrameImpl::addMarker(Range* range, bool activeMatch) -{ - // Use a TextIterator to visit the potentially multiple nodes the range - // covers. - TextIterator markedText(range); - for (; !markedText.atEnd(); markedText.advance()) { - RefPtr<Range> textPiece = markedText.range(); - int exception = 0; - - DocumentMarker marker = { - DocumentMarker::TextMatch, - textPiece->startOffset(exception), - textPiece->endOffset(exception), - "", - activeMatch - }; - - if (marker.endOffset > marker.startOffset) { - // Find the node to add a marker to and add it. - Node* node = textPiece->startContainer(exception); - frame()->document()->addMarker(node, marker); - - // Rendered rects for markers in WebKit are not populated until each time - // the markers are painted. However, we need it to happen sooner, because - // the whole purpose of tickmarks on the scrollbar is to show where - // matches off-screen are (that haven't been painted yet). - Vector<DocumentMarker> markers = frame()->document()->markersForNode(node); - frame()->document()->setRenderedRectForMarker( - textPiece->startContainer(exception), - markers[markers.size() - 1], - range->boundingBox()); - } - } -} - -void WebFrameImpl::setMarkerActive(Range* range, bool active) -{ - if (!range) - return; - - frame()->document()->setMarkersActive(range, active); -} - -int WebFrameImpl::ordinalOfFirstMatchForFrame(WebFrameImpl* frame) const -{ - int ordinal = 0; - WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl(); - // Iterate from the main frame up to (but not including) |frame| and - // add up the number of matches found so far. - for (WebFrameImpl* it = mainFrameImpl; - it != frame; - it = static_cast<WebFrameImpl*>(it->traverseNext(true))) { - if (it->m_lastMatchCount > 0) - ordinal += it->m_lastMatchCount; - } - return ordinal; -} - -bool WebFrameImpl::shouldScopeMatches(const String& searchText) -{ - // Don't scope if we can't find a frame or if the frame is not visible. - // The user may have closed the tab/application, so abort. - if (!frame() || !hasVisibleContent()) - return false; - - ASSERT(frame()->document() && frame()->view()); - - // If the frame completed the scoping operation and found 0 matches the last - // time it was searched, then we don't have to search it again if the user is - // just adding to the search string or sending the same search string again. - if (m_scopingComplete && !m_lastSearchString.isEmpty() && !m_lastMatchCount) { - // Check to see if the search string prefixes match. - String previousSearchPrefix = - searchText.substring(0, m_lastSearchString.length()); - - if (previousSearchPrefix == m_lastSearchString) - return false; // Don't search this frame, it will be fruitless. - } - - return true; -} - -void WebFrameImpl::scopeStringMatchesSoon(int identifier, const WebString& searchText, - const WebFindOptions& options, bool reset) -{ - m_deferredScopingWork.append(new DeferredScopeStringMatches( - this, identifier, searchText, options, reset)); -} - -void WebFrameImpl::callScopeStringMatches(DeferredScopeStringMatches* caller, - int identifier, const WebString& searchText, - const WebFindOptions& options, bool reset) -{ - m_deferredScopingWork.remove(m_deferredScopingWork.find(caller)); - - scopeStringMatches(identifier, searchText, options, reset); - - // This needs to happen last since searchText is passed by reference. - delete caller; -} - -void WebFrameImpl::invalidateIfNecessary() -{ - if (m_lastMatchCount > m_nextInvalidateAfter) { - // FIXME: (http://b/1088165) Optimize the drawing of the tickmarks and - // remove this. This calculation sets a milestone for when next to - // invalidate the scrollbar and the content area. We do this so that we - // don't spend too much time drawing the scrollbar over and over again. - // Basically, up until the first 500 matches there is no throttle. - // After the first 500 matches, we set set the milestone further and - // further out (750, 1125, 1688, 2K, 3K). - static const int startSlowingDownAfter = 500; - static const int slowdown = 750; - int i = (m_lastMatchCount / startSlowingDownAfter); - m_nextInvalidateAfter += i * slowdown; - - invalidateArea(InvalidateScrollbar); - } -} - -void WebFrameImpl::clearPasswordListeners() -{ - deleteAllValues(m_passwordListeners); - m_passwordListeners.clear(); -} - -void WebFrameImpl::loadJavaScriptURL(const KURL& url) -{ - // This is copied from FrameLoader::executeIfJavaScriptURL. Unfortunately, - // we cannot just use that method since it is private, and it also doesn't - // quite behave as we require it to for bookmarklets. The key difference is - // that we need to suppress loading the string result from evaluating the JS - // URL if executing the JS URL resulted in a location change. We also allow - // a JS URL to be loaded even if scripts on the page are otherwise disabled. - - if (!m_frame->document() || !m_frame->page()) - return; - - String script = decodeURLEscapeSequences(url.string().substring(strlen("javascript:"))); - ScriptValue result = m_frame->script()->executeScript(script, true); - - String scriptResult; - if (!result.getString(scriptResult)) - return; - - SecurityOrigin* securityOrigin = m_frame->document()->securityOrigin(); - - if (!m_frame->redirectScheduler()->locationChangePending()) { - m_frame->loader()->stopAllLoaders(); - m_frame->loader()->begin(m_frame->loader()->url(), true, securityOrigin); - m_frame->loader()->write(scriptResult); - m_frame->loader()->end(); - } -} - -} // namespace WebKit diff --git a/webkit/api/src/WebFrameImpl.h b/webkit/api/src/WebFrameImpl.h deleted file mode 100644 index 6c07ee8..0000000 --- a/webkit/api/src/WebFrameImpl.h +++ /dev/null @@ -1,370 +0,0 @@ -/* - * 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. - */ - -#ifndef WebFrameImpl_h -#define WebFrameImpl_h - -// FIXME: remove this relative path once consumers from glue are removed. -#include "../public/WebFrame.h" -#include "Frame.h" -#include "FrameLoaderClientImpl.h" -#include "PlatformString.h" -#include <wtf/OwnPtr.h> -#include <wtf/RefCounted.h> - -namespace WebCore { -class HistoryItem; -class KURL; -class Node; -class Range; -class SubstituteData; -struct WindowFeatures; -} - -namespace WebKit { -class ChromePrintContext; -class WebDataSourceImpl; -class WebInputElement; -class WebFrameClient; -class WebPasswordAutocompleteListener; -class WebView; -class WebViewImpl; - -// Implementation of WebFrame, note that this is a reference counted object. -class WebFrameImpl : public WebFrame, public RefCounted<WebFrameImpl> { -public: - // WebFrame methods: - virtual WebString name() const; - virtual WebURL url() const; - virtual WebURL favIconURL() const; - virtual WebURL openSearchDescriptionURL() const; - virtual WebSize scrollOffset() const; - virtual WebSize contentsSize() const; - virtual int contentsPreferredWidth() const; - virtual bool hasVisibleContent() const; - virtual WebView* view() const; - virtual WebFrame* opener() const; - virtual WebFrame* parent() const; - virtual WebFrame* top() const; - virtual WebFrame* firstChild() const; - virtual WebFrame* lastChild() const; - virtual WebFrame* nextSibling() const; - virtual WebFrame* previousSibling() const; - virtual WebFrame* traverseNext(bool wrap) const; - virtual WebFrame* traversePrevious(bool wrap) const; - virtual WebFrame* findChildByName(const WebString&) const; - virtual WebFrame* findChildByExpression(const WebString&) const; - virtual void forms(WebVector<WebFormElement>&) const; - virtual WebSecurityOrigin securityOrigin() const; - virtual void grantUniversalAccess(); - virtual NPObject* windowObject() const; - virtual void bindToWindowObject(const WebString& name, NPObject*); - virtual void executeScript(const WebScriptSource&); - virtual void executeScriptInNewContext( - const WebScriptSource* sources, unsigned numSources, int extensionGroup); - virtual void executeScriptInIsolatedWorld( - int worldId, const WebScriptSource* sources, unsigned numSources, - int extensionGroup); - virtual void addMessageToConsole(const WebConsoleMessage&); - virtual void collectGarbage(); -#if WEBKIT_USING_V8 - virtual v8::Local<v8::Context> mainWorldScriptContext() const; -#endif - virtual bool insertStyleText(const WebString& css, const WebString& id); - virtual void reload(); - virtual void loadRequest(const WebURLRequest&); - virtual void loadHistoryItem(const WebHistoryItem&); - virtual void loadData( - const WebData&, const WebString& mimeType, const WebString& textEncoding, - const WebURL& baseURL, const WebURL& unreachableURL, bool replace); - virtual void loadHTMLString( - const WebData& html, const WebURL& baseURL, const WebURL& unreachableURL, - bool replace); - virtual bool isLoading() const; - virtual void stopLoading(); - virtual WebDataSource* provisionalDataSource() const; - virtual WebDataSource* dataSource() const; - virtual WebHistoryItem previousHistoryItem() const; - virtual WebHistoryItem currentHistoryItem() const; - virtual void enableViewSourceMode(bool enable); - virtual bool isViewSourceModeEnabled() const; - virtual void setReferrerForRequest(WebURLRequest&, const WebURL& referrer); - virtual void dispatchWillSendRequest(WebURLRequest&); - virtual void commitDocumentData(const char* data, size_t length); - virtual unsigned unloadListenerCount() const; - virtual bool isProcessingUserGesture() const; - virtual bool willSuppressOpenerInNewFrame() const; - virtual void replaceSelection(const WebString&); - virtual void insertText(const WebString&); - virtual void setMarkedText(const WebString&, unsigned location, unsigned length); - virtual void unmarkText(); - virtual bool hasMarkedText() const; - virtual WebRange markedRange() const; - virtual bool executeCommand(const WebString&); - virtual bool executeCommand(const WebString&, const WebString& value); - virtual bool isCommandEnabled(const WebString&) const; - virtual void enableContinuousSpellChecking(bool); - virtual bool isContinuousSpellCheckingEnabled() const; - virtual bool hasSelection() const; - virtual WebRange selectionRange() const; - virtual WebString selectionAsText() const; - virtual WebString selectionAsMarkup() const; - virtual int printBegin(const WebSize& pageSize); - virtual float printPage(int pageToPrint, WebCanvas*); - virtual float getPrintPageShrink(int page); - virtual void printEnd(); - virtual bool find( - int identifier, const WebString& searchText, const WebFindOptions&, - bool wrapWithinFrame, WebRect* selectionRect); - virtual void stopFinding(bool clearSelection); - virtual void scopeStringMatches( - int identifier, const WebString& searchText, const WebFindOptions&, - bool reset); - virtual void cancelPendingScopingEffort(); - virtual void increaseMatchCount(int count, int identifier); - virtual void resetMatchCount(); - virtual void registerPasswordListener( - WebInputElement, WebPasswordAutocompleteListener*); - - virtual WebURL completeURL(const WebString& url) const; - virtual WebString contentAsText(size_t maxChars) const; - virtual WebString contentAsMarkup() const; - - static PassRefPtr<WebFrameImpl> create(WebFrameClient* client); - ~WebFrameImpl(); - - static int liveObjectCount() { return m_liveObjectCount; } - - // Called by the WebViewImpl to initialize its main frame: - void initializeAsMainFrame(WebViewImpl*); - - PassRefPtr<WebCore::Frame> createChildFrame( - const WebCore::FrameLoadRequest&, WebCore::HTMLFrameOwnerElement*); - - void layout(); - void paint(WebCanvas*, const WebRect&); - void createFrameView(); - - static WebFrameImpl* fromFrame(WebCore::Frame* frame); - - WebViewImpl* viewImpl() const; - - WebCore::Frame* frame() const { return m_frame; } - WebCore::FrameView* frameView() const { return m_frame ? m_frame->view() : 0; } - - // Getters for the impls corresponding to Get(Provisional)DataSource. They - // may return 0 if there is no corresponding data source. - WebDataSourceImpl* dataSourceImpl() const; - WebDataSourceImpl* provisionalDataSourceImpl() const; - - // Returns which frame has an active match. This function should only be - // called on the main frame, as it is the only frame keeping track. Returned - // value can be 0 if no frame has an active match. - const WebFrameImpl* activeMatchFrame() const { return m_activeMatchFrame; } - - // When a Find operation ends, we want to set the selection to what was active - // and set focus to the first focusable node we find (starting with the first - // node in the matched range and going up the inheritance chain). If we find - // nothing to focus we focus the first focusable node in the range. This - // allows us to set focus to a link (when we find text inside a link), which - // allows us to navigate by pressing Enter after closing the Find box. - void setFindEndstateFocusAndSelection(); - - void didFail(const WebCore::ResourceError&, bool wasProvisional); - - // Sets whether the WebFrameImpl allows its document to be scrolled. - // If the parameter is true, allow the document to be scrolled. - // Otherwise, disallow scrolling. - void setAllowsScrolling(bool); - - // Returns the password autocomplete listener associated with the passed - // user name input element, or 0 if none available. - // Note that the returned listener is owner by the WebFrameImpl and should not - // be kept around as it is deleted when the page goes away. - WebPasswordAutocompleteListener* getPasswordListener(WebCore::HTMLInputElement*); - - WebFrameClient* client() const { return m_clientHandle->client(); } - void dropClient() { m_clientHandle->dropClient(); } - -private: - class DeferredScopeStringMatches; - friend class DeferredScopeStringMatches; - friend class FrameLoaderClientImpl; - - // A weak reference to the WebFrameClient. Each WebFrame in the hierarchy - // owns a reference to a ClientHandle. When the main frame is destroyed, it - // clears the WebFrameClient. - class ClientHandle : public RefCounted<ClientHandle> { - public: - static PassRefPtr<ClientHandle> create(WebFrameClient* client) - { - return adoptRef(new ClientHandle(client)); - } - WebFrameClient* client() { return m_client; } - void dropClient() { m_client = 0; } - private: - ClientHandle(WebFrameClient* client) : m_client(client) {} - WebFrameClient* m_client; - }; - - // A bit mask specifying area of the frame to invalidate. - enum AreaToInvalidate { - InvalidateNothing, - InvalidateContentArea, - InvalidateScrollbar, // Vertical scrollbar only. - InvalidateAll // Both content area and the scrollbar. - }; - - WebFrameImpl(PassRefPtr<ClientHandle>); - - // Informs the WebFrame that the Frame is being closed, called by the - // WebFrameLoaderClient - void closing(); - - // Notifies the delegate about a new selection rect. - void reportFindInPageSelection( - const WebRect& selectionRect, int activeMatchOrdinal, int identifier); - - // Invalidates a certain area within the frame. - void invalidateArea(AreaToInvalidate); - - // Add a WebKit TextMatch-highlight marker to nodes in a range. - void addMarker(WebCore::Range*, bool activeMatch); - - // Sets the markers within a range as active or inactive. - void setMarkerActive(WebCore::Range*, bool active); - - // Returns the ordinal of the first match in the frame specified. This - // function enumerates the frames, starting with the main frame and up to (but - // not including) the frame passed in as a parameter and counts how many - // matches have been found. - int ordinalOfFirstMatchForFrame(WebFrameImpl*) const; - - // Determines whether the scoping effort is required for a particular frame. - // It is not necessary if the frame is invisible, for example, or if this - // is a repeat search that already returned nothing last time the same prefix - // was searched. - bool shouldScopeMatches(const WebCore::String& searchText); - - // Queue up a deferred call to scopeStringMatches. - void scopeStringMatchesSoon( - int identifier, const WebString& searchText, const WebFindOptions&, - bool reset); - - // Called by a DeferredScopeStringMatches instance. - void callScopeStringMatches( - DeferredScopeStringMatches*, int identifier, const WebString& searchText, - const WebFindOptions&, bool reset); - - // Determines whether to invalidate the content area and scrollbar. - void invalidateIfNecessary(); - - // Clears the map of password listeners. - void clearPasswordListeners(); - - void loadJavaScriptURL(const WebCore::KURL&); - - // Used to check for leaks of this object. - static int m_liveObjectCount; - - FrameLoaderClientImpl m_frameLoaderClient; - - RefPtr<ClientHandle> m_clientHandle; - - // This is a weak pointer to our corresponding WebCore frame. A reference to - // ourselves is held while frame_ is valid. See our Closing method. - WebCore::Frame* m_frame; - - // A way for the main frame to keep track of which frame has an active - // match. Should be 0 for all other frames. - WebFrameImpl* m_activeMatchFrame; - - // The range of the active match for the current frame. - RefPtr<WebCore::Range> m_activeMatch; - - // The index of the active match. - int m_activeMatchIndex; - - // This flag is used by the scoping effort to determine if we need to figure - // out which rectangle is the active match. Once we find the active - // rectangle we clear this flag. - bool m_locatingActiveRect; - - // The scoping effort can time out and we need to keep track of where we - // ended our last search so we can continue from where we left of. - RefPtr<WebCore::Range> m_resumeScopingFromRange; - - // Keeps track of the last string this frame searched for. This is used for - // short-circuiting searches in the following scenarios: When a frame has - // been searched and returned 0 results, we don't need to search that frame - // again if the user is just adding to the search (making it more specific). - WebCore::String m_lastSearchString; - - // Keeps track of how many matches this frame has found so far, so that we - // don't loose count between scoping efforts, and is also used (in conjunction - // with m_lastSearchString and m_scopingComplete) to figure out if we need to - // search the frame again. - int m_lastMatchCount; - - // This variable keeps a cumulative total of matches found so far for ALL the - // frames on the page, and is only incremented by calling IncreaseMatchCount - // (on the main frame only). It should be -1 for all other frames. - size_t m_totalMatchCount; - - // This variable keeps a cumulative total of how many frames are currently - // scoping, and is incremented/decremented on the main frame only. - // It should be -1 for all other frames. - int m_framesScopingCount; - - // Keeps track of whether the scoping effort was completed (the user may - // interrupt it before it completes by submitting a new search). - bool m_scopingComplete; - - // Keeps track of when the scoping effort should next invalidate the scrollbar - // and the frame area. - int m_nextInvalidateAfter; - - // A list of all of the pending calls to scopeStringMatches. - Vector<DeferredScopeStringMatches*> m_deferredScopingWork; - - // Valid between calls to BeginPrint() and EndPrint(). Containts the print - // information. Is used by PrintPage(). - OwnPtr<ChromePrintContext> m_printContext; - - // The input fields that are interested in edit events and their associated - // listeners. - typedef HashMap<RefPtr<WebCore::HTMLInputElement>, - WebPasswordAutocompleteListener*> PasswordListenerMap; - PasswordListenerMap m_passwordListeners; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebHTTPBody.cpp b/webkit/api/src/WebHTTPBody.cpp deleted file mode 100644 index 335ed5c..0000000 --- a/webkit/api/src/WebHTTPBody.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* - * 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 "WebHTTPBody.h" - -#include "FormData.h" - -using namespace WebCore; - -namespace WebKit { - -class WebHTTPBodyPrivate : public FormData { -}; - -void WebHTTPBody::initialize() -{ - assign(static_cast<WebHTTPBodyPrivate*>(FormData::create().releaseRef())); -} - -void WebHTTPBody::reset() -{ - assign(0); -} - -void WebHTTPBody::assign(const WebHTTPBody& other) -{ - WebHTTPBodyPrivate* p = const_cast<WebHTTPBodyPrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -size_t WebHTTPBody::elementCount() const -{ - ASSERT(!isNull()); - return m_private->elements().size(); -} - -bool WebHTTPBody::elementAt(size_t index, Element& result) const -{ - ASSERT(!isNull()); - - if (index >= m_private->elements().size()) - return false; - - const FormDataElement& element = m_private->elements()[index]; - - switch (element.m_type) { - case FormDataElement::data: - result.type = Element::TypeData; - result.data.assign(element.m_data.data(), element.m_data.size()); - result.filePath.reset(); - break; - case FormDataElement::encodedFile: - result.type = Element::TypeFile; - result.data.reset(); - result.filePath = element.m_filename; - break; - default: - ASSERT_NOT_REACHED(); - return false; - } - - return true; -} - -void WebHTTPBody::appendData(const WebData& data) -{ - ensureMutable(); - // FIXME: FormDataElement::m_data should be a SharedBuffer<char>. Then we - // could avoid this buffer copy. - m_private->appendData(data.data(), data.size()); -} - -void WebHTTPBody::appendFile(const WebString& filePath) -{ - ensureMutable(); - m_private->appendFile(filePath); -} - -long long WebHTTPBody::identifier() const -{ - ASSERT(!isNull()); - return m_private->identifier(); -} - -void WebHTTPBody::setIdentifier(long long identifier) -{ - ensureMutable(); - return m_private->setIdentifier(identifier); -} - -WebHTTPBody::WebHTTPBody(const PassRefPtr<FormData>& data) - : m_private(static_cast<WebHTTPBodyPrivate*>(data.releaseRef())) -{ -} - -WebHTTPBody& WebHTTPBody::operator=(const PassRefPtr<FormData>& data) -{ - assign(static_cast<WebHTTPBodyPrivate*>(data.releaseRef())); - return *this; -} - -WebHTTPBody::operator PassRefPtr<FormData>() const -{ - return m_private; -} - -void WebHTTPBody::assign(WebHTTPBodyPrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -void WebHTTPBody::ensureMutable() -{ - ASSERT(!isNull()); - if (!m_private->hasOneRef()) - assign(static_cast<WebHTTPBodyPrivate*>(m_private->copy().releaseRef())); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebHistoryItem.cpp b/webkit/api/src/WebHistoryItem.cpp deleted file mode 100644 index d4ee50a..0000000 --- a/webkit/api/src/WebHistoryItem.cpp +++ /dev/null @@ -1,296 +0,0 @@ -/* - * 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 "WebHistoryItem.h" - -#include "FormData.h" -#include "HistoryItem.h" -#include "KURL.h" - -#include "WebHTTPBody.h" -#include "WebPoint.h" -#include "WebString.h" -#include "WebVector.h" - -using namespace WebCore; - -namespace WebKit { - -class WebHistoryItemPrivate : public HistoryItem { -}; - -void WebHistoryItem::initialize() -{ - assign(static_cast<WebHistoryItemPrivate*>(HistoryItem::create().releaseRef())); -} - -void WebHistoryItem::reset() -{ - assign(0); -} - -void WebHistoryItem::assign(const WebHistoryItem& other) -{ - WebHistoryItemPrivate* p = const_cast<WebHistoryItemPrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -WebString WebHistoryItem::urlString() const -{ - ASSERT(!isNull()); - return m_private->urlString(); -} - -void WebHistoryItem::setURLString(const WebString& url) -{ - ensureMutable(); - m_private->setURLString(KURL(ParsedURLString, url).string()); -} - -WebString WebHistoryItem::originalURLString() const -{ - ASSERT(!isNull()); - return m_private->originalURLString(); -} - -void WebHistoryItem::setOriginalURLString(const WebString& originalURLString) -{ - ensureMutable(); - m_private->setOriginalURLString(originalURLString); -} - -WebString WebHistoryItem::referrer() const -{ - ASSERT(!isNull()); - return m_private->referrer(); -} - -void WebHistoryItem::setReferrer(const WebString& referrer) -{ - ensureMutable(); - m_private->setReferrer(referrer); -} - -WebString WebHistoryItem::target() const -{ - ASSERT(!isNull()); - return m_private->target(); -} - -void WebHistoryItem::setTarget(const WebString& target) -{ - ensureMutable(); - m_private->setTarget(target); -} - -WebString WebHistoryItem::parent() const -{ - ASSERT(!isNull()); - return m_private->parent(); -} - -void WebHistoryItem::setParent(const WebString& parent) -{ - ensureMutable(); - m_private->setParent(parent); -} - -WebString WebHistoryItem::title() const -{ - ASSERT(!isNull()); - return m_private->title(); -} - -void WebHistoryItem::setTitle(const WebString& title) -{ - ensureMutable(); - m_private->setTitle(title); -} - -WebString WebHistoryItem::alternateTitle() const -{ - ASSERT(!isNull()); - return m_private->alternateTitle(); -} - -void WebHistoryItem::setAlternateTitle(const WebString& alternateTitle) -{ - ensureMutable(); - m_private->setAlternateTitle(alternateTitle); -} - -double WebHistoryItem::lastVisitedTime() const -{ - ASSERT(!isNull()); - return m_private->lastVisitedTime(); -} - -void WebHistoryItem::setLastVisitedTime(double lastVisitedTime) -{ - ensureMutable(); - // FIXME: setLastVisitedTime increments the visit count, so we have to - // correct for that. Instead, we should have a back-door to just mutate - // the last visited time directly. - int count = m_private->visitCount(); - m_private->setLastVisitedTime(lastVisitedTime); - m_private->setVisitCount(count); -} - -WebPoint WebHistoryItem::scrollOffset() const -{ - ASSERT(!isNull()); - return m_private->scrollPoint(); -} - -void WebHistoryItem::setScrollOffset(const WebPoint& scrollOffset) -{ - ensureMutable(); - m_private->setScrollPoint(scrollOffset); -} - -bool WebHistoryItem::isTargetItem() const -{ - ASSERT(!isNull()); - return m_private->isTargetItem(); -} - -void WebHistoryItem::setIsTargetItem(bool isTargetItem) -{ - ensureMutable(); - m_private->setIsTargetItem(isTargetItem); -} - -int WebHistoryItem::visitCount() const -{ - ASSERT(!isNull()); - return m_private->visitCount(); -} - -void WebHistoryItem::setVisitCount(int count) -{ - ensureMutable(); - m_private->setVisitCount(count); -} - -WebVector<WebString> WebHistoryItem::documentState() const -{ - ASSERT(!isNull()); - return m_private->documentState(); -} - -void WebHistoryItem::setDocumentState(const WebVector<WebString>& state) -{ - ensureMutable(); - // FIXME: would be nice to avoid the intermediate copy - Vector<String> ds; - for (size_t i = 0; i < state.size(); ++i) - ds.append(state[i]); - m_private->setDocumentState(ds); -} - -WebString WebHistoryItem::httpContentType() const -{ - ASSERT(!isNull()); - return m_private->formContentType(); -} - -void WebHistoryItem::setHTTPContentType(const WebString& httpContentType) -{ - ensureMutable(); - m_private->setFormContentType(httpContentType); -} - -WebHTTPBody WebHistoryItem::httpBody() const -{ - ASSERT(!isNull()); - return WebHTTPBody(m_private->formData()); -} - -void WebHistoryItem::setHTTPBody(const WebHTTPBody& httpBody) -{ - ensureMutable(); - m_private->setFormData(httpBody); -} - -WebVector<WebHistoryItem> WebHistoryItem::children() const -{ - ASSERT(!isNull()); - return m_private->children(); -} - -void WebHistoryItem::setChildren(const WebVector<WebHistoryItem>& items) -{ - ensureMutable(); - m_private->clearChildren(); - for (size_t i = 0; i < items.size(); ++i) - m_private->addChildItem(items[i]); -} - -void WebHistoryItem::appendToChildren(const WebHistoryItem& item) -{ - ensureMutable(); - m_private->addChildItem(item); -} - -WebHistoryItem::WebHistoryItem(const PassRefPtr<HistoryItem>& item) - : m_private(static_cast<WebHistoryItemPrivate*>(item.releaseRef())) -{ -} - -WebHistoryItem& WebHistoryItem::operator=(const PassRefPtr<HistoryItem>& item) -{ - assign(static_cast<WebHistoryItemPrivate*>(item.releaseRef())); - return *this; -} - -WebHistoryItem::operator PassRefPtr<HistoryItem>() const -{ - return m_private; -} - -void WebHistoryItem::assign(WebHistoryItemPrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -void WebHistoryItem::ensureMutable() -{ - ASSERT(!isNull()); - if (!m_private->hasOneRef()) - assign(static_cast<WebHistoryItemPrivate*>(m_private->copy().releaseRef())); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebImageCG.cpp b/webkit/api/src/WebImageCG.cpp deleted file mode 100644 index 60b2449..0000000 --- a/webkit/api/src/WebImageCG.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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 "WebImage.h" - -#include "Image.h" -#include "ImageSource.h" -#include "SharedBuffer.h" - -#include "WebData.h" -#include "WebSize.h" - -#include <CoreGraphics/CGImage.h> - -#include <wtf/PassRefPtr.h> -#include <wtf/RetainPtr.h> - -using namespace WebCore; - -namespace WebKit { - -WebImage WebImage::fromData(const WebData& data, const WebSize& desiredSize) -{ - // FIXME: Do something like what WebImageSkia.cpp does to enumerate frames. - // Not sure whether the CG decoder uses the same frame ordering rules (if so - // we can just use the same logic). - - ImageSource source; - source.setData(PassRefPtr<SharedBuffer>(data).get(), true); - if (!source.isSizeAvailable()) - return WebImage(); - - RetainPtr<CGImageRef> frame0(AdoptCF, source.createFrameAtIndex(0)); - if (!frame0) - return WebImage(); - - return WebImage(frame0.get()); -} - -void WebImage::reset() -{ - CGImageRelease(m_imageRef); - m_imageRef = 0; -} - -void WebImage::assign(const WebImage& image) -{ - assign(image.m_imageRef); -} - -bool WebImage::isNull() const -{ - return !m_imageRef; -} - -WebSize WebImage::size() const -{ - return WebSize(CGImageGetWidth(m_imageRef), CGImageGetHeight(m_imageRef)); -} - -WebImage::WebImage(const PassRefPtr<Image>& image) - : m_imageRef(0) -{ - if (image.get()) - assign(image->nativeImageForCurrentFrame()); -} - -WebImage& WebImage::operator=(const PassRefPtr<Image>& image) -{ - if (image.get()) - assign(image->nativeImageForCurrentFrame()); - else - reset(); - return *this; -} - -void WebImage::assign(CGImageRef imageRef) -{ - // Make sure to retain the imageRef first incase m_imageRef == imageRef. - CGImageRetain(imageRef); - CGImageRelease(m_imageRef); - m_imageRef = imageRef; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebImageSkia.cpp b/webkit/api/src/WebImageSkia.cpp deleted file mode 100644 index 0684b58..0000000 --- a/webkit/api/src/WebImageSkia.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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 "WebImage.h" - -#include "Image.h" -#include "ImageSource.h" -#include "NativeImageSkia.h" -#include "SharedBuffer.h" - -#include "WebData.h" -#include "WebSize.h" - -#include <wtf/OwnPtr.h> -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -WebImage WebImage::fromData(const WebData& data, const WebSize& desiredSize) -{ - ImageSource source; - source.setData(PassRefPtr<SharedBuffer>(data).get(), true); - if (!source.isSizeAvailable()) - return WebImage(); - - // Frames are arranged by decreasing size, then decreasing bit depth. - // Pick the frame closest to |desiredSize|'s area without being smaller, - // which has the highest bit depth. - const size_t frameCount = source.frameCount(); - size_t index = 0; // Default to first frame if none are large enough. - int frameAreaAtIndex = 0; - for (size_t i = 0; i < frameCount; ++i) { - const IntSize frameSize = source.frameSizeAtIndex(i); - if (WebSize(frameSize) == desiredSize) { - index = i; - break; // Perfect match. - } - - const int frameArea = frameSize.width() * frameSize.height(); - if (frameArea < (desiredSize.width * desiredSize.height)) - break; // No more frames that are large enough. - - if (!i || (frameArea < frameAreaAtIndex)) { - index = i; // Closer to desired area than previous best match. - frameAreaAtIndex = frameArea; - } - } - - OwnPtr<NativeImageSkia> frame(source.createFrameAtIndex(index)); - if (!frame.get()) - return WebImage(); - - return WebImage(*frame); -} - -void WebImage::reset() -{ - m_bitmap.reset(); -} - -void WebImage::assign(const WebImage& image) -{ - m_bitmap = image.m_bitmap; -} - -bool WebImage::isNull() const -{ - return m_bitmap.isNull(); -} - -WebSize WebImage::size() const -{ - return WebSize(m_bitmap.width(), m_bitmap.height()); -} - -WebImage::WebImage(const PassRefPtr<Image>& image) -{ - operator=(image); -} - -WebImage& WebImage::operator=(const PassRefPtr<Image>& image) -{ - NativeImagePtr p; - if (image.get() && (p = image->nativeImageForCurrentFrame())) - assign(*p); - else - reset(); - return *this; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebInputElement.cpp b/webkit/api/src/WebInputElement.cpp deleted file mode 100644 index 947e4cc0..0000000 --- a/webkit/api/src/WebInputElement.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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 "WebInputElement.h" - -#include "HTMLInputElement.h" -#include "WebString.h" -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -WebInputElement::WebInputElement(const WTF::PassRefPtr<HTMLInputElement>& elem) - : WebElement(elem.releaseRef()) -{ -} - -WebInputElement& WebInputElement::operator=(const WTF::PassRefPtr<HTMLInputElement>& elem) -{ - WebNode::assign(elem.releaseRef()); - return *this; -} - -WebInputElement::operator WTF::PassRefPtr<HTMLInputElement>() const -{ - return PassRefPtr<HTMLInputElement>(static_cast<HTMLInputElement*>(m_private)); -} - -void WebInputElement::setActivatedSubmit(bool activated) -{ - unwrap<HTMLInputElement>()->setActivatedSubmit(activated); -} - - -void WebInputElement::setValue(const WebString& value) -{ - unwrap<HTMLInputElement>()->setValue(value); -} - -WebString WebInputElement::value() -{ - return unwrap<HTMLInputElement>()->value(); -} - - -void WebInputElement::setAutofilled(bool autoFilled) -{ - unwrap<HTMLInputElement>()->setAutofilled(autoFilled); -} - -void WebInputElement::dispatchFormControlChangeEvent() -{ - unwrap<HTMLInputElement>()->dispatchFormControlChangeEvent(); -} // namespace WebKit - -void WebInputElement::setSelectionRange(size_t start, size_t end) -{ - unwrap<HTMLInputElement>()->setSelectionRange(start, end); -} -} // namespace WebKit diff --git a/webkit/api/src/WebInputEvent.cpp b/webkit/api/src/WebInputEvent.cpp deleted file mode 100644 index b5c56fa..0000000 --- a/webkit/api/src/WebInputEvent.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* - * 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 "WebInputEvent.h" - -#include "KeyboardCodes.h" - -#include <ctype.h> -#include <stdio.h> - -#include <wtf/Assertions.h> -#include <wtf/StringExtras.h> - -using namespace WebCore; - -namespace WebKit { - -static const char* staticKeyIdentifiers(unsigned short keyCode) -{ - switch (keyCode) { - case VKEY_MENU: - return "Alt"; - case VKEY_CONTROL: - return "Control"; - case VKEY_SHIFT: - return "Shift"; - case VKEY_CAPITAL: - return "CapsLock"; - case VKEY_LWIN: - case VKEY_RWIN: - return "Win"; - case VKEY_CLEAR: - return "Clear"; - case VKEY_DOWN: - return "Down"; - case VKEY_END: - return "End"; - case VKEY_RETURN: - return "Enter"; - case VKEY_EXECUTE: - return "Execute"; - case VKEY_F1: - return "F1"; - case VKEY_F2: - return "F2"; - case VKEY_F3: - return "F3"; - case VKEY_F4: - return "F4"; - case VKEY_F5: - return "F5"; - case VKEY_F6: - return "F6"; - case VKEY_F7: - return "F7"; - case VKEY_F8: - return "F8"; - case VKEY_F9: - return "F9"; - case VKEY_F10: - return "F11"; - case VKEY_F12: - return "F12"; - case VKEY_F13: - return "F13"; - case VKEY_F14: - return "F14"; - case VKEY_F15: - return "F15"; - case VKEY_F16: - return "F16"; - case VKEY_F17: - return "F17"; - case VKEY_F18: - return "F18"; - case VKEY_F19: - return "F19"; - case VKEY_F20: - return "F20"; - case VKEY_F21: - return "F21"; - case VKEY_F22: - return "F22"; - case VKEY_F23: - return "F23"; - case VKEY_F24: - return "F24"; - case VKEY_HELP: - return "Help"; - case VKEY_HOME: - return "Home"; - case VKEY_INSERT: - return "Insert"; - case VKEY_LEFT: - return "Left"; - case VKEY_NEXT: - return "PageDown"; - case VKEY_PRIOR: - return "PageUp"; - case VKEY_PAUSE: - return "Pause"; - case VKEY_SNAPSHOT: - return "PrintScreen"; - case VKEY_RIGHT: - return "Right"; - case VKEY_SCROLL: - return "Scroll"; - case VKEY_SELECT: - return "Select"; - case VKEY_UP: - return "Up"; - case VKEY_DELETE: - return "U+007F"; // Standard says that DEL becomes U+007F. - default: - return 0; - } -} - -void WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode() -{ - const char* id = staticKeyIdentifiers(windowsKeyCode); - if (id) { - strncpy(keyIdentifier, id, sizeof(keyIdentifier) - 1); - keyIdentifier[sizeof(keyIdentifier) - 1] = '\0'; - } else - snprintf(keyIdentifier, sizeof(keyIdentifier), "U+%04X", toupper(windowsKeyCode)); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebInputEventConversion.cpp b/webkit/api/src/WebInputEventConversion.cpp deleted file mode 100644 index 1500129..0000000 --- a/webkit/api/src/WebInputEventConversion.cpp +++ /dev/null @@ -1,256 +0,0 @@ -/* - * 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 "WebInputEventConversion.h" - -#include "EventNames.h" -#include "KeyboardCodes.h" -#include "KeyboardEvent.h" -#include "MouseEvent.h" -#include "PlatformKeyboardEvent.h" -#include "PlatformMouseEvent.h" -#include "PlatformWheelEvent.h" -#include "ScrollView.h" -#include "WebInputEvent.h" -#include "Widget.h" - -using namespace WebCore; - -namespace WebKit { - -// MakePlatformMouseEvent ----------------------------------------------------- - -PlatformMouseEventBuilder::PlatformMouseEventBuilder(Widget* widget, const WebMouseEvent& e) -{ - // FIXME: widget is always toplevel, unless it's a popup. We may be able - // to get rid of this once we abstract popups into a WebKit API. - m_position = widget->convertFromContainingWindow(IntPoint(e.x, e.y)); - m_globalPosition = IntPoint(e.globalX, e.globalY); - m_button = static_cast<MouseButton>(e.button); - m_shiftKey = (e.modifiers & WebInputEvent::ShiftKey); - m_ctrlKey = (e.modifiers & WebInputEvent::ControlKey); - m_altKey = (e.modifiers & WebInputEvent::AltKey); - m_metaKey = (e.modifiers & WebInputEvent::MetaKey); - m_modifierFlags = e.modifiers; - m_timestamp = e.timeStampSeconds; - m_clickCount = e.clickCount; - - switch (e.type) { - case WebInputEvent::MouseMove: - case WebInputEvent::MouseLeave: // synthesize a move event - m_eventType = MouseEventMoved; - break; - - case WebInputEvent::MouseDown: - m_eventType = MouseEventPressed; - break; - - case WebInputEvent::MouseUp: - m_eventType = MouseEventReleased; - break; - - default: - ASSERT_NOT_REACHED(); - } -} - -// PlatformWheelEventBuilder -------------------------------------------------- - -PlatformWheelEventBuilder::PlatformWheelEventBuilder(Widget* widget, const WebMouseWheelEvent& e) -{ - m_position = widget->convertFromContainingWindow(IntPoint(e.x, e.y)); - m_globalPosition = IntPoint(e.globalX, e.globalY); - m_deltaX = e.deltaX; - m_deltaY = e.deltaY; - m_wheelTicksX = e.wheelTicksX; - m_wheelTicksY = e.wheelTicksY; - m_isAccepted = false; - m_granularity = e.scrollByPage ? - ScrollByPageWheelEvent : ScrollByPixelWheelEvent; - m_shiftKey = (e.modifiers & WebInputEvent::ShiftKey); - m_ctrlKey = (e.modifiers & WebInputEvent::ControlKey); - m_altKey = (e.modifiers & WebInputEvent::AltKey); - m_metaKey = (e.modifiers & WebInputEvent::MetaKey); -} - -// MakePlatformKeyboardEvent -------------------------------------------------- - -static inline const PlatformKeyboardEvent::Type toPlatformKeyboardEventType(WebInputEvent::Type type) -{ - switch (type) { - case WebInputEvent::KeyUp: - return PlatformKeyboardEvent::KeyUp; - case WebInputEvent::KeyDown: - return PlatformKeyboardEvent::KeyDown; - case WebInputEvent::RawKeyDown: - return PlatformKeyboardEvent::RawKeyDown; - case WebInputEvent::Char: - return PlatformKeyboardEvent::Char; - default: - ASSERT_NOT_REACHED(); - } - return PlatformKeyboardEvent::KeyDown; -} - -PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(const WebKeyboardEvent& e) -{ - m_type = toPlatformKeyboardEventType(e.type); - m_text = String(e.text); - m_unmodifiedText = String(e.unmodifiedText); - m_keyIdentifier = String(e.keyIdentifier); - m_autoRepeat = (e.modifiers & WebInputEvent::IsAutoRepeat); - m_windowsVirtualKeyCode = e.windowsKeyCode; - m_nativeVirtualKeyCode = e.nativeKeyCode; - m_isKeypad = (e.modifiers & WebInputEvent::IsKeyPad); - m_shiftKey = (e.modifiers & WebInputEvent::ShiftKey); - m_ctrlKey = (e.modifiers & WebInputEvent::ControlKey); - m_altKey = (e.modifiers & WebInputEvent::AltKey); - m_metaKey = (e.modifiers & WebInputEvent::MetaKey); - m_isSystemKey = e.isSystemKey; -} - -void PlatformKeyboardEventBuilder::setKeyType(Type type) -{ - // According to the behavior of Webkit in Windows platform, - // we need to convert KeyDown to RawKeydown and Char events - // See WebKit/WebKit/Win/WebView.cpp - ASSERT(m_type == KeyDown); - ASSERT(type == RawKeyDown || type == Char); - m_type = type; - - if (type == RawKeyDown) { - m_text = String(); - m_unmodifiedText = String(); - } else { - m_keyIdentifier = String(); - m_windowsVirtualKeyCode = 0; - } -} - -// Please refer to bug http://b/issue?id=961192, which talks about Webkit -// keyboard event handling changes. It also mentions the list of keys -// which don't have associated character events. -bool PlatformKeyboardEventBuilder::isCharacterKey() const -{ - switch (windowsVirtualKeyCode()) { - case VKEY_BACK: - case VKEY_ESCAPE: - return false; - } - return true; -} - -static int getWebInputModifiers(const UIEventWithKeyState& event) -{ - int modifiers = 0; - if (event.ctrlKey()) - modifiers |= WebInputEvent::ControlKey; - if (event.shiftKey()) - modifiers |= WebInputEvent::ShiftKey; - if (event.altKey()) - modifiers |= WebInputEvent::AltKey; - if (event.metaKey()) - modifiers |= WebInputEvent::MetaKey; - return modifiers; -} - -WebMouseEventBuilder::WebMouseEventBuilder(const ScrollView* view, const MouseEvent& event) -{ - if (event.type() == eventNames().mousemoveEvent) - type = WebInputEvent::MouseMove; - else if (event.type() == eventNames().mouseoutEvent) - type = WebInputEvent::MouseLeave; - else if (event.type() == eventNames().mouseoverEvent) - type = WebInputEvent::MouseEnter; - else if (event.type() == eventNames().mousedownEvent) - type = WebInputEvent::MouseDown; - else if (event.type() == eventNames().mouseupEvent) - type = WebInputEvent::MouseUp; - else - return; // Skip all other mouse events. - timeStampSeconds = event.timeStamp() * 1.0e-3; - switch (event.button()) { - case LeftButton: - button = WebMouseEvent::ButtonLeft; - break; - case MiddleButton: - button = WebMouseEvent::ButtonMiddle; - break; - case RightButton: - button = WebMouseEvent::ButtonRight; - break; - } - modifiers = getWebInputModifiers(event); - if (event.buttonDown()) { - switch (event.button()) { - case LeftButton: - modifiers |= WebInputEvent::LeftButtonDown; - break; - case MiddleButton: - modifiers |= WebInputEvent::MiddleButtonDown; - break; - case RightButton: - modifiers |= WebInputEvent::RightButtonDown; - break; - } - } - IntPoint p = view->contentsToWindow(IntPoint(event.pageX(), event.pageY())); - globalX = event.screenX(); - globalY = event.screenY(); - windowX = p.x(); - windowY = p.y(); - x = event.offsetX(); - y = event.offsetY(); -} - -WebKeyboardEventBuilder::WebKeyboardEventBuilder(const KeyboardEvent& event) -{ - if (event.type() == eventNames().keydownEvent) - type = KeyDown; - else if (event.type() == eventNames().keyupEvent) - type = WebInputEvent::KeyUp; - else if (event.type() == eventNames().keypressEvent) - type = WebInputEvent::Char; - else - return; // Skip all other keyboard events. - modifiers = getWebInputModifiers(event); - timeStampSeconds = event.timeStamp() * 1.0e-3; - windowsKeyCode = event.keyCode(); - nativeKeyCode = event.keyEvent()->nativeVirtualKeyCode(); - unsigned int numChars = std::min(event.keyEvent()->text().length(), - static_cast<unsigned int>(WebKeyboardEvent::textLengthCap)); - for (unsigned int i = 0; i < numChars; i++) { - text[i] = event.keyEvent()->text()[i]; - unmodifiedText[i] = event.keyEvent()->unmodifiedText()[i]; - } -} - -} // namespace WebKit diff --git a/webkit/api/src/WebInputEventConversion.h b/webkit/api/src/WebInputEventConversion.h deleted file mode 100644 index 4c9cf82..0000000 --- a/webkit/api/src/WebInputEventConversion.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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. - */ - -#ifndef WebInputEventConversion_h -#define WebInputEventConversion_h - -// FIXME: This relative path is a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebInputEvent.h" - -#include "PlatformKeyboardEvent.h" -#include "PlatformMouseEvent.h" -#include "PlatformWheelEvent.h" - -namespace WebCore { -class KeyboardEvent; -class MouseEvent; -class ScrollView; -class Widget; -} - -namespace WebKit { - -class WebMouseEvent; -class WebMouseWheelEvent; -class WebKeyboardEvent; - -// These classes are used to convert from WebInputEvent subclasses to -// corresponding WebCore events. - -class PlatformMouseEventBuilder : public WebCore::PlatformMouseEvent { -public: - PlatformMouseEventBuilder(WebCore::Widget*, const WebMouseEvent&); -}; - -class PlatformWheelEventBuilder : public WebCore::PlatformWheelEvent { -public: - PlatformWheelEventBuilder(WebCore::Widget*, const WebMouseWheelEvent&); -}; - -class PlatformKeyboardEventBuilder : public WebCore::PlatformKeyboardEvent { -public: - PlatformKeyboardEventBuilder(const WebKeyboardEvent&); - void setKeyType(Type); - bool isCharacterKey() const; -}; - -// Converts a WebCore::MouseEvent to a corresponding WebMouseEvent. view is -// the ScrollView corresponding to the event. Returns true if successful. -// NOTE: This is only implemented for mousemove, mouseover, mouseout, -// mousedown and mouseup. If the event mapping fails, the event type will -// be set to Undefined. -class WebMouseEventBuilder : public WebMouseEvent { -public: - WebMouseEventBuilder(const WebCore::ScrollView*, const WebCore::MouseEvent&); -}; - -// Converts a WebCore::KeyboardEvent to a corresponding WebKeyboardEvent. -// Returns true if successful. NOTE: This is only implemented for keydown -// and keyup. If the event mapping fails, the event type will be set to -// Undefined. -class WebKeyboardEventBuilder : public WebKeyboardEvent { -public: - WebKeyboardEventBuilder(const WebCore::KeyboardEvent&); -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebKit.cpp b/webkit/api/src/WebKit.cpp deleted file mode 100644 index a129f85..0000000 --- a/webkit/api/src/WebKit.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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 "WebKit.h" - -#include "AtomicString.h" -#include "DOMTimer.h" -#include "Page.h" -#include "RuntimeEnabledFeatures.h" -#include "TextEncoding.h" -#include "WebMediaPlayerClientImpl.h" -#include "WebSocket.h" -#include "WorkerContextExecutionProxy.h" - -#include <wtf/Assertions.h> -#include <wtf/Threading.h> - -namespace WebKit { - -static WebKitClient* s_webKitClient = 0; -static bool s_layoutTestMode = false; - -void initialize(WebKitClient* webKitClient) -{ - ASSERT(webKitClient); - ASSERT(!s_webKitClient); - s_webKitClient = webKitClient; - - WTF::initializeThreading(); - WebCore::AtomicString::init(); - - // Chromium sets the minimum interval timeout to 4ms, overriding the - // default of 10ms. We'd like to go lower, however there are poorly - // coded websites out there which do create CPU-spinning loops. Using - // 4ms prevents the CPU from spinning too busily and provides a balance - // between CPU spinning and the smallest possible interval timer. - WebCore::DOMTimer::setMinTimerInterval(0.004); - - // There are some code paths (for example, running WebKit in the browser - // process and calling into LocalStorage before anything else) where the - // UTF8 string encoding tables are used on a background thread before - // they're set up. This is a problem because their set up routines assert - // they're running on the main WebKitThread. It might be possible to make - // the initialization thread-safe, but given that so many code paths use - // this, initializing this lazily probably doesn't buy us much. - WebCore::UTF8Encoding(); -} - -void shutdown() -{ - s_webKitClient = 0; -} - -WebKitClient* webKitClient() -{ - return s_webKitClient; -} - -void setLayoutTestMode(bool value) -{ - s_layoutTestMode = value; -} - -bool layoutTestMode() -{ - return s_layoutTestMode; -} - -void resetPluginCache(bool reloadPages) -{ - WebCore::Page::refreshPlugins(reloadPages); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebMediaPlayerClientImpl.cpp b/webkit/api/src/WebMediaPlayerClientImpl.cpp deleted file mode 100644 index c2a3535..0000000 --- a/webkit/api/src/WebMediaPlayerClientImpl.cpp +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "config.h" -#include "WebMediaPlayerClientImpl.h" - -#if ENABLE(VIDEO) - -#include "CString.h" -#include "Frame.h" -#include "GraphicsContext.h" -#include "HTMLMediaElement.h" -#include "IntSize.h" -#include "KURL.h" -#include "MediaPlayer.h" -#include "NotImplemented.h" -#include "TimeRanges.h" - -#include "WebCanvas.h" -#include "WebCString.h" -#include "WebFrameClient.h" -#include "WebFrameImpl.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebMediaPlayer.h" -#include "WebMimeRegistry.h" -#include "WebRect.h" -#include "WebSize.h" -#include "WebString.h" -#include "WebURL.h" - -// WebCommon.h defines WEBKIT_USING_SKIA so this has to be included last. -#if WEBKIT_USING_SKIA -#include "PlatformContextSkia.h" -#endif - -#include <wtf/Assertions.h> - -using namespace WebCore; - -namespace WebKit { - -static WebMediaPlayer* createWebMediaPlayer( - WebMediaPlayerClient* client, Frame* frame) -{ - WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame); - if (!webFrame->client()) - return 0; - return webFrame->client()->createMediaPlayer(webFrame, client); -} - -bool WebMediaPlayerClientImpl::m_isEnabled = false; - -bool WebMediaPlayerClientImpl::isEnabled() -{ - return m_isEnabled; -} - -void WebMediaPlayerClientImpl::setIsEnabled(bool isEnabled) -{ - m_isEnabled = isEnabled; -} - -void WebMediaPlayerClientImpl::registerSelf(MediaEngineRegistrar registrar) -{ - if (m_isEnabled) { - registrar(WebMediaPlayerClientImpl::create, - WebMediaPlayerClientImpl::getSupportedTypes, - WebMediaPlayerClientImpl::supportsType); - } -} - -// WebMediaPlayerClient -------------------------------------------------------- - -void WebMediaPlayerClientImpl::networkStateChanged() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->networkStateChanged(); -} - -void WebMediaPlayerClientImpl::readyStateChanged() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->readyStateChanged(); -} - -void WebMediaPlayerClientImpl::volumeChanged() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->volumeChanged(); -} - -void WebMediaPlayerClientImpl::timeChanged() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->timeChanged(); -} - -void WebMediaPlayerClientImpl::repaint() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->repaint(); -} - -void WebMediaPlayerClientImpl::durationChanged() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->durationChanged(); -} - -void WebMediaPlayerClientImpl::rateChanged() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->rateChanged(); -} - -void WebMediaPlayerClientImpl::sizeChanged() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->sizeChanged(); -} - -void WebMediaPlayerClientImpl::sawUnsupportedTracks() -{ - ASSERT(m_mediaPlayer); - m_mediaPlayer->mediaPlayerClient()->mediaPlayerSawUnsupportedTracks(m_mediaPlayer); -} - -// MediaPlayerPrivateInterface ------------------------------------------------- - -void WebMediaPlayerClientImpl::load(const String& url) -{ - Frame* frame = static_cast<HTMLMediaElement*>( - m_mediaPlayer->mediaPlayerClient())->document()->frame(); - m_webMediaPlayer.set(createWebMediaPlayer(this, frame)); - if (m_webMediaPlayer.get()) - m_webMediaPlayer->load(KURL(ParsedURLString, url)); -} - -void WebMediaPlayerClientImpl::cancelLoad() -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->cancelLoad(); -} - -void WebMediaPlayerClientImpl::play() -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->play(); -} - -void WebMediaPlayerClientImpl::pause() -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->pause(); -} - -IntSize WebMediaPlayerClientImpl::naturalSize() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->naturalSize(); - return IntSize(); -} - -bool WebMediaPlayerClientImpl::hasVideo() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->hasVideo(); - return false; -} - -bool WebMediaPlayerClientImpl::hasAudio() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->hasAudio(); - return false; -} - -void WebMediaPlayerClientImpl::setVisible(bool visible) -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->setVisible(visible); -} - -float WebMediaPlayerClientImpl::duration() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->duration(); - return 0.0f; -} - -float WebMediaPlayerClientImpl::currentTime() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->currentTime(); - return 0.0f; -} - -void WebMediaPlayerClientImpl::seek(float time) -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->seek(time); -} - -bool WebMediaPlayerClientImpl::seeking() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->seeking(); - return false; -} - -void WebMediaPlayerClientImpl::setEndTime(float time) -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->setEndTime(time); -} - -void WebMediaPlayerClientImpl::setRate(float rate) -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->setRate(rate); -} - -bool WebMediaPlayerClientImpl::paused() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->paused(); - return false; -} - -bool WebMediaPlayerClientImpl::supportsFullscreen() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->supportsFullscreen(); - return false; -} - -bool WebMediaPlayerClientImpl::supportsSave() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->supportsSave(); - return false; -} - -void WebMediaPlayerClientImpl::setVolume(float volume) -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->setVolume(volume); -} - -MediaPlayer::NetworkState WebMediaPlayerClientImpl::networkState() const -{ - if (m_webMediaPlayer.get()) - return static_cast<MediaPlayer::NetworkState>(m_webMediaPlayer->networkState()); - return MediaPlayer::Empty; -} - -MediaPlayer::ReadyState WebMediaPlayerClientImpl::readyState() const -{ - if (m_webMediaPlayer.get()) - return static_cast<MediaPlayer::ReadyState>(m_webMediaPlayer->readyState()); - return MediaPlayer::HaveNothing; -} - -float WebMediaPlayerClientImpl::maxTimeSeekable() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->maxTimeSeekable(); - return 0.0f; -} - -PassRefPtr<TimeRanges> WebMediaPlayerClientImpl::buffered() const -{ - if (m_webMediaPlayer.get()) { - const WebTimeRanges& webRanges = m_webMediaPlayer->buffered(); - - // FIXME: Save the time ranges in a member variable and update it when needed. - RefPtr<TimeRanges> ranges = TimeRanges::create(); - for (size_t i = 0; i < webRanges.size(); ++i) - ranges->add(webRanges[i].start, webRanges[i].end); - return ranges.release(); - } - return TimeRanges::create(); -} - -int WebMediaPlayerClientImpl::dataRate() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->dataRate(); - return 0; -} - -bool WebMediaPlayerClientImpl::totalBytesKnown() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->totalBytesKnown(); - return false; -} - -unsigned WebMediaPlayerClientImpl::totalBytes() const -{ - if (m_webMediaPlayer.get()) - return static_cast<unsigned>(m_webMediaPlayer->totalBytes()); - return 0; -} - -unsigned WebMediaPlayerClientImpl::bytesLoaded() const -{ - if (m_webMediaPlayer.get()) - return static_cast<unsigned>(m_webMediaPlayer->bytesLoaded()); - return 0; -} - -void WebMediaPlayerClientImpl::setSize(const IntSize& size) -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->setSize(WebSize(size.width(), size.height())); -} - -void WebMediaPlayerClientImpl::paint(GraphicsContext* context, const IntRect& rect) -{ - // Normally GraphicsContext operations do nothing when painting is disabled. - // Since we're accessing platformContext() directly we have to manually - // check. - if (m_webMediaPlayer.get() && !context->paintingDisabled()) { -#if WEBKIT_USING_SKIA - m_webMediaPlayer->paint(context->platformContext()->canvas(), rect); -#elif WEBKIT_USING_CG - m_webMediaPlayer->paint(context->platformContext(), rect); -#else - notImplemented(); -#endif - } -} - -void WebMediaPlayerClientImpl::setAutobuffer(bool autoBuffer) -{ - if (m_webMediaPlayer.get()) - m_webMediaPlayer->setAutoBuffer(autoBuffer); -} - -bool WebMediaPlayerClientImpl::hasSingleSecurityOrigin() const -{ - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->hasSingleSecurityOrigin(); - return false; -} - -MediaPlayer::MovieLoadType WebMediaPlayerClientImpl::movieLoadType() const -{ - if (m_webMediaPlayer.get()) - return static_cast<MediaPlayer::MovieLoadType>( - m_webMediaPlayer->movieLoadType()); - return MediaPlayer::Unknown; -} - -MediaPlayerPrivateInterface* WebMediaPlayerClientImpl::create(MediaPlayer* player) -{ - WebMediaPlayerClientImpl* client = new WebMediaPlayerClientImpl(); - client->m_mediaPlayer = player; - return client; -} - -void WebMediaPlayerClientImpl::getSupportedTypes(HashSet<String>& supportedTypes) -{ - // FIXME: integrate this list with WebMediaPlayerClientImpl::supportsType. - notImplemented(); -} - -MediaPlayer::SupportsType WebMediaPlayerClientImpl::supportsType(const String& type, - const String& codecs) -{ - WebMimeRegistry::SupportsType supportsType = - webKitClient()->mimeRegistry()->supportsMediaMIMEType(type, codecs); - - switch (supportsType) { - default: - ASSERT_NOT_REACHED(); - case WebMimeRegistry::IsNotSupported: - return MediaPlayer::IsNotSupported; - case WebMimeRegistry::IsSupported: - return MediaPlayer::IsSupported; - case WebMimeRegistry::MayBeSupported: - return MediaPlayer::MayBeSupported; - } - return MediaPlayer::IsNotSupported; -} - -WebMediaPlayerClientImpl::WebMediaPlayerClientImpl() - : m_mediaPlayer(0) -{ -} - -} // namespace WebKit - -#endif // ENABLE(VIDEO) diff --git a/webkit/api/src/WebMediaPlayerClientImpl.h b/webkit/api/src/WebMediaPlayerClientImpl.h deleted file mode 100644 index 7f087d0..0000000 --- a/webkit/api/src/WebMediaPlayerClientImpl.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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. - */ - -#ifndef WebMediaPlayerClientImpl_h -#define WebMediaPlayerClientImpl_h - -#if ENABLE(VIDEO) - -#include "MediaPlayerPrivate.h" -#include "WebMediaPlayerClient.h" -#include <wtf/OwnPtr.h> - -namespace WebKit { - -class WebMediaPlayer; - -// This class serves as a bridge between WebCore::MediaPlayer and -// WebKit::WebMediaPlayer. -class WebMediaPlayerClientImpl : public WebMediaPlayerClient - , public WebCore::MediaPlayerPrivateInterface { -public: - static bool isEnabled(); - static void setIsEnabled(bool); - static void registerSelf(WebCore::MediaEngineRegistrar); - - // WebMediaPlayerClient methods: - virtual void networkStateChanged(); - virtual void readyStateChanged(); - virtual void volumeChanged(); - virtual void timeChanged(); - virtual void repaint(); - virtual void durationChanged(); - virtual void rateChanged(); - virtual void sizeChanged(); - virtual void sawUnsupportedTracks(); - - // MediaPlayerPrivateInterface methods: - virtual void load(const WebCore::String& url); - virtual void cancelLoad(); - virtual void play(); - virtual void pause(); - virtual bool supportsFullscreen() const; - virtual bool supportsSave() const; - virtual WebCore::IntSize naturalSize() const; - virtual bool hasVideo() const; - virtual bool hasAudio() const; - virtual void setVisible(bool); - virtual float duration() const; - virtual float currentTime() const; - virtual void seek(float time); - virtual bool seeking() const; - virtual void setEndTime(float time); - virtual void setRate(float); - virtual bool paused() const; - virtual void setVolume(float); - virtual WebCore::MediaPlayer::NetworkState networkState() const; - virtual WebCore::MediaPlayer::ReadyState readyState() const; - virtual float maxTimeSeekable() const; - virtual WTF::PassRefPtr<WebCore::TimeRanges> buffered() const; - virtual int dataRate() const; - virtual void setAutobuffer(bool); - virtual bool totalBytesKnown() const; - virtual unsigned totalBytes() const; - virtual unsigned bytesLoaded() const; - virtual void setSize(const WebCore::IntSize&); - virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&); - virtual bool hasSingleSecurityOrigin() const; - virtual WebCore::MediaPlayer::MovieLoadType movieLoadType() const; - -private: - WebMediaPlayerClientImpl(); - - static WebCore::MediaPlayerPrivateInterface* create(WebCore::MediaPlayer*); - static void getSupportedTypes(WTF::HashSet<WebCore::String>&); - static WebCore::MediaPlayer::SupportsType supportsType( - const WebCore::String& type, const WebCore::String& codecs); - - WebCore::MediaPlayer* m_mediaPlayer; - OwnPtr<WebMediaPlayer> m_webMediaPlayer; - static bool m_isEnabled; -}; - -} // namespace WebKit - -#endif - -#endif diff --git a/webkit/api/src/WebNode.cpp b/webkit/api/src/WebNode.cpp deleted file mode 100644 index de676c3..0000000 --- a/webkit/api/src/WebNode.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* - * 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 "WebNode.h" - -#include "Document.h" -#include "Frame.h" -#include "FrameLoaderClientImpl.h" -#include "Node.h" - -#include "WebFrameImpl.h" -#include "WebString.h" - -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -class WebNodePrivate : public Node { -}; - -void WebNode::reset() -{ - assign(0); -} - -void WebNode::assign(const WebNode& other) -{ - WebNodePrivate* p = const_cast<WebNodePrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -WebNode WebNode::parentNode() const -{ - return PassRefPtr<Node>(const_cast<Node*>(m_private->parentNode())); -} - -WebString WebNode::nodeName() const -{ - return m_private->nodeName(); -} - -WebNode::WebNode(const WTF::PassRefPtr<WebCore::Node>& node) - : m_private(static_cast<WebNodePrivate*>(node.releaseRef())) -{ -} - -WebNode& WebNode::operator=(const WTF::PassRefPtr<WebCore::Node>& node) -{ - assign(static_cast<WebNodePrivate*>(node.releaseRef())); - return *this; -} - -WebNode::operator WTF::PassRefPtr<WebCore::Node>() const -{ - return PassRefPtr<Node>(const_cast<WebNodePrivate*>(m_private)); -} - -void WebNode::assign(WebNodePrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -WebFrame* WebNode::frame() -{ - FrameLoaderClientImpl* frame_loader_client = - static_cast<FrameLoaderClientImpl*>(m_private->document()-> - frame()->loader()->client()); - return static_cast<WebFrame*>(frame_loader_client->webFrame()); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebNotification.cpp b/webkit/api/src/WebNotification.cpp deleted file mode 100644 index 1f6916e..0000000 --- a/webkit/api/src/WebNotification.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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 "WebNotification.h" - -#if ENABLE(NOTIFICATIONS) - -#include "Notification.h" - -#include "WebString.h" -#include "WebURL.h" - -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -class WebNotificationPrivate : public Notification { -}; - -void WebNotification::reset() -{ - assign(0); -} - -void WebNotification::assign(const WebNotification& other) -{ - WebNotificationPrivate* p = const_cast<WebNotificationPrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -bool WebNotification::lessThan(const WebNotification& other) const -{ - return reinterpret_cast<uintptr_t>(m_private) < reinterpret_cast<uintptr_t>(other.m_private); -} - -bool WebNotification::isHTML() const -{ - return m_private->isHTML(); -} - -WebURL WebNotification::url() const -{ - ASSERT(isHTML()); - return m_private->url(); -} - -WebString WebNotification::icon() const -{ - ASSERT(!isHTML()); - return m_private->contents().icon(); -} - -WebString WebNotification::title() const -{ - ASSERT(!isHTML()); - return m_private->contents().title(); -} - -WebString WebNotification::body() const -{ - ASSERT(!isHTML()); - return m_private->contents().body(); -} - -void WebNotification::dispatchDisplayEvent() -{ - RefPtr<Event> event = Event::create("display", false, true); - m_private->dispatchEvent(event.release()); -} - -void WebNotification::dispatchErrorEvent(const WebKit::WebString& /* errorMessage */) -{ - // FIXME: errorMessage not supported by WebCore yet - RefPtr<Event> event = Event::create(eventNames().errorEvent, false, true); - m_private->dispatchEvent(event.release()); -} - -void WebNotification::dispatchCloseEvent(bool /* byUser */) -{ - // FIXME: byUser flag not supported by WebCore yet - RefPtr<Event> event = Event::create(eventNames().closeEvent, false, true); - m_private->dispatchEvent(event.release()); -} - -WebNotification::WebNotification(const WTF::PassRefPtr<Notification>& notification) - : m_private(static_cast<WebNotificationPrivate*>(notification.releaseRef())) -{ -} - -WebNotification& WebNotification::operator=(const WTF::PassRefPtr<Notification>& notification) -{ - assign(static_cast<WebNotificationPrivate*>(notification.releaseRef())); - return *this; -} - -WebNotification::operator WTF::PassRefPtr<Notification>() const -{ - return WTF::PassRefPtr<Notification>(const_cast<WebNotificationPrivate*>(m_private)); -} - -void WebNotification::assign(WebNotificationPrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -} // namespace WebKit - -#endif // ENABLE(NOTIFICATIONS) diff --git a/webkit/api/src/WebPasswordFormData.cpp b/webkit/api/src/WebPasswordFormData.cpp deleted file mode 100644 index 64b1754..0000000 --- a/webkit/api/src/WebPasswordFormData.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* - * 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 "WebPasswordFormData.h" - -#include "Document.h" -#include "DocumentLoader.h" -#include "Frame.h" -#include "FrameLoader.h" -#include "HTMLFormElement.h" -#include "HTMLInputElement.h" -#include "HTMLNames.h" -#include "KURL.h" - -#include "DOMUtilitiesPrivate.h" -#include "WebPasswordFormUtils.h" - -using namespace WebCore; - -namespace WebKit { - -namespace { - -// Helper to determine which password is the main one, and which is -// an old password (e.g on a "make new password" form), if any. -bool locateSpecificPasswords(PasswordFormFields* fields, - HTMLInputElement** password, - HTMLInputElement** oldPassword) -{ - ASSERT(fields); - ASSERT(password); - ASSERT(oldPassword); - switch (fields->passwords.size()) { - case 1: - // Single password, easy. - *password = fields->passwords[0]; - break; - case 2: - if (fields->passwords[0]->value() == fields->passwords[1]->value()) - // Treat two identical passwords as a single password. - *password = fields->passwords[0]; - else { - // Assume first is old password, second is new (no choice but to guess). - *oldPassword = fields->passwords[0]; - *password = fields->passwords[1]; - } - break; - case 3: - if (fields->passwords[0]->value() == fields->passwords[1]->value() - && fields->passwords[0]->value() == fields->passwords[2]->value()) { - // All three passwords the same? Just treat as one and hope. - *password = fields->passwords[0]; - } else if (fields->passwords[0]->value() == fields->passwords[1]->value()) { - // Two the same and one different -> old password is duplicated one. - *oldPassword = fields->passwords[0]; - *password = fields->passwords[2]; - } else if (fields->passwords[1]->value() == fields->passwords[2]->value()) { - *oldPassword = fields->passwords[0]; - *password = fields->passwords[1]; - } else { - // Three different passwords, or first and last match with middle - // different. No idea which is which, so no luck. - return false; - } - break; - default: - return false; - } - return true; -} - -// Helped method to clear url of unneeded parts. -KURL stripURL(const KURL& url) -{ - KURL strippedURL = url; - strippedURL.setUser(String()); - strippedURL.setPass(String()); - strippedURL.setQuery(String()); - strippedURL.setFragmentIdentifier(String()); - return strippedURL; -} - -// Helper to gather up the final form data and create a PasswordForm. -void assemblePasswordFormResult(const KURL& fullOrigin, - const KURL& fullAction, - HTMLFormControlElement* submit, - HTMLInputElement* userName, - HTMLInputElement* oldPassword, - HTMLInputElement* password, - WebPasswordFormData* result) -{ - // We want to keep the path but strip any authentication data, as well as - // query and ref portions of URL, for the form action and form origin. - result->action = stripURL(fullAction); - result->origin = stripURL(fullOrigin); - - // Naming is confusing here because we have both the HTML form origin URL - // the page where the form was seen), and the "origin" components of the url - // (scheme, host, and port). - KURL signonRealmURL = stripURL(fullOrigin); - signonRealmURL.setPath(""); - result->signonRealm = signonRealmURL; - - if (submit) - result->submitElement = submit->name(); - if (userName) { - result->userNameElement = userName->name(); - result->userNameValue = userName->value(); - } - if (password) { - result->passwordElement = password->name(); - result->passwordValue = password->value(); - } - if (oldPassword) { - result->oldPasswordElement = oldPassword->name(); - result->oldPasswordValue = oldPassword->value(); - } -} - -} // namespace - -WebPasswordFormData::WebPasswordFormData(const WebFormElement& webForm) -{ - RefPtr<HTMLFormElement> form = webForm.operator PassRefPtr<HTMLFormElement>(); - - Frame* frame = form->document()->frame(); - if (!frame) - return; - - PasswordFormFields fields; - findPasswordFormFields(form.get(), &fields); - - // Get the document URL - KURL fullOrigin(ParsedURLString, form->document()->documentURI()); - - // Calculate the canonical action URL - KURL fullAction = frame->loader()->completeURL(form->action()); - if (!fullAction.isValid()) - return; - - // Determine the types of the password fields - HTMLInputElement* password = 0; - HTMLInputElement* oldPassword = 0; - if (!locateSpecificPasswords(&fields, &password, &oldPassword)) - return; - - assemblePasswordFormResult(fullOrigin, fullAction, - fields.submit, fields.userName, - oldPassword, password, this); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebPasswordFormUtils.cpp b/webkit/api/src/WebPasswordFormUtils.cpp deleted file mode 100644 index 766dc63..0000000 --- a/webkit/api/src/WebPasswordFormUtils.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** -* Version: MPL 1.1/GPL 2.0/LGPL 2.1 -* -* The contents of this file are subject to the Mozilla Public License Version -* 1.1 (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* http://www.mozilla.org/MPL/ -* -* Software distributed under the License is distributed on an "AS IS" basis, -* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -* for the specific language governing rights and limitations under the -* License. -* -* The Original Code is Mozilla Password Manager. -* -* The Initial Developer of the Original Code is -* Brian Ryner. -* Portions created by the Initial Developer are Copyright (C) 2003 -* the Initial Developer. All Rights Reserved. -* -* Contributor(s): -* Brian Ryner <bryner@brianryner.com> -* -* Alternatively, the contents of this file may be used under the terms of -* either the GNU General Public License Version 2 or later (the "GPL"), or -* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -* in which case the provisions of the GPL or the LGPL are applicable instead -* of those above. If you wish to allow use of your version of this file only -* under the terms of either the GPL or the LGPL, and not to allow others to -* use your version of this file under the terms of the MPL, indicate your -* decision by deleting the provisions above and replace them with the notice -* and other provisions required by the GPL or the LGPL. If you do not delete -* the provisions above, a recipient may use your version of this file under -* the terms of any one of the MPL, the GPL or the LGPL. -* -* ***** END LICENSE BLOCK ***** */ - -// Helper to WebPasswordFormData to do the locating of username/password -// fields. -// This method based on Firefox2 code in -// toolkit/components/passwordmgr/base/nsPasswordManager.cpp - -#include "config.h" -#include "WebPasswordFormUtils.h" - -#include "HTMLFormElement.h" -#include "HTMLInputElement.h" -#include "HTMLNames.h" -#include "KURL.h" - -#include "DOMUtilitiesPrivate.h" - -using namespace WebCore; - -namespace WebKit { - -// Maximum number of password fields we will observe before throwing our -// hands in the air and giving up with a given form. -static const size_t maxPasswords = 3; - -void findPasswordFormFields(HTMLFormElement* form, PasswordFormFields* fields) -{ - ASSERT(form); - ASSERT(fields); - - int firstPasswordIndex = 0; - // First, find the password fields and activated submit button - const Vector<HTMLFormControlElement*>& formElements = form->formElements; - for (size_t i = 0; i < formElements.size(); i++) { - HTMLFormControlElement* formElement = formElements[i]; - if (formElement->isActivatedSubmit()) - fields->submit = formElement; - - if (!formElement->hasLocalName(HTMLNames::inputTag)) - continue; - - HTMLInputElement* inputElement = toHTMLInputElement(formElement); - if (!inputElement->isEnabledFormControl()) - continue; - - if ((fields->passwords.size() < maxPasswords) - && (inputElement->inputType() == HTMLInputElement::PASSWORD) - && (inputElement->autoComplete())) { - if (fields->passwords.isEmpty()) - firstPasswordIndex = i; - fields->passwords.append(inputElement); - } - } - - if (!fields->passwords.isEmpty()) { - // Then, search backwards for the username field - for (int i = firstPasswordIndex - 1; i >= 0; i--) { - HTMLFormControlElement* formElement = formElements[i]; - if (!formElement->hasLocalName(HTMLNames::inputTag)) - continue; - - HTMLInputElement* inputElement = toHTMLInputElement(formElement); - if (!inputElement->isEnabledFormControl()) - continue; - - if ((inputElement->inputType() == HTMLInputElement::TEXT) - && (inputElement->autoComplete())) { - fields->userName = inputElement; - break; - } - } - } -} - -} // namespace WebKit diff --git a/webkit/api/src/WebPasswordFormUtils.h b/webkit/api/src/WebPasswordFormUtils.h deleted file mode 100644 index fd503b4..0000000 --- a/webkit/api/src/WebPasswordFormUtils.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPasswordFormUtils_h -#define WebPasswordFormUtils_h - -#include <wtf/Vector.h> - -namespace WebCore { -class HTMLInputElement; -class HTMLFormControlElement; -class HTMLFormElement; -} - -namespace WebKit { - -// Helper structure to locate username, passwords and submit fields. -struct PasswordFormFields { - WebCore::HTMLInputElement* userName; - Vector<WebCore::HTMLInputElement*> passwords; - WebCore::HTMLFormControlElement* submit; - PasswordFormFields() : userName(0), submit(0) { } -}; - -void findPasswordFormFields(WebCore::HTMLFormElement* form, - PasswordFormFields* fields); - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebPluginContainerImpl.cpp b/webkit/api/src/WebPluginContainerImpl.cpp deleted file mode 100644 index 43f3cef..0000000 --- a/webkit/api/src/WebPluginContainerImpl.cpp +++ /dev/null @@ -1,556 +0,0 @@ -/* - * 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 "WebPluginContainerImpl.h" - -#include "ChromeClientImpl.h" -#include "WebCursorInfo.h" -#include "WebDataSourceImpl.h" -#include "WebInputEvent.h" -#include "WebInputEventConversion.h" -#include "WebKit.h" -#include "WebPlugin.h" -#include "WebRect.h" -#include "WebURLError.h" -#include "WebURLRequest.h" -#include "WebVector.h" -#include "WrappedResourceResponse.h" - -#include "EventNames.h" -#include "FocusController.h" -#include "FormState.h" -#include "Frame.h" -#include "FrameLoadRequest.h" -#include "FrameView.h" -#include "GraphicsContext.h" -#include "HostWindow.h" -#include "HTMLFormElement.h" -#include "HTMLNames.h" -#include "HTMLPlugInElement.h" -#include "KeyboardEvent.h" -#include "MouseEvent.h" -#include "Page.h" -#include "ScrollView.h" - -#if WEBKIT_USING_SKIA -#include "PlatformContextSkia.h" -#endif - -using namespace WebCore; - -namespace WebKit { - -// Public methods -------------------------------------------------------------- - -void WebPluginContainerImpl::setFrameRect(const IntRect& frameRect) -{ - Widget::setFrameRect(frameRect); - reportGeometry(); -} - -void WebPluginContainerImpl::paint(GraphicsContext* gc, const IntRect& damageRect) -{ - if (gc->paintingDisabled()) - return; - - if (!parent()) - return; - - // Don't paint anything if the plugin doesn't intersect the damage rect. - if (!frameRect().intersects(damageRect)) - return; - - gc->save(); - - ASSERT(parent()->isFrameView()); - ScrollView* view = parent(); - - // The plugin is positioned in window coordinates, so it needs to be painted - // in window coordinates. - IntPoint origin = view->windowToContents(IntPoint(0, 0)); - gc->translate(static_cast<float>(origin.x()), static_cast<float>(origin.y())); - -#if WEBKIT_USING_SKIA - WebCanvas* canvas = gc->platformContext()->canvas(); -#elif WEBKIT_USING_CG - WebCanvas* canvas = gc->platformContext(); -#endif - - IntRect windowRect = - IntRect(view->contentsToWindow(damageRect.location()), damageRect.size()); - m_webPlugin->paint(canvas, windowRect); - - gc->restore(); -} - -void WebPluginContainerImpl::invalidateRect(const IntRect& rect) -{ - if (!parent()) - return; - - IntRect damageRect = convertToContainingWindow(rect); - - // Get our clip rect and intersect with it to ensure we don't invalidate - // too much. - IntRect clipRect = parent()->windowClipRect(); - damageRect.intersect(clipRect); - - parent()->hostWindow()->repaint(damageRect, true); -} - -void WebPluginContainerImpl::setFocus() -{ - Widget::setFocus(); - m_webPlugin->updateFocus(true); -} - -void WebPluginContainerImpl::show() -{ - setSelfVisible(true); - m_webPlugin->updateVisibility(true); - - Widget::show(); -} - -void WebPluginContainerImpl::hide() -{ - setSelfVisible(false); - m_webPlugin->updateVisibility(false); - - Widget::hide(); -} - -void WebPluginContainerImpl::handleEvent(Event* event) -{ - if (!m_webPlugin->acceptsInputEvents()) - return; - - // The events we pass are defined at: - // http://devedge-temp.mozilla.org/library/manuals/2002/plugin/1.0/structures5.html#1000000 - // Don't take the documentation as truth, however. There are many cases - // where mozilla behaves differently than the spec. - if (event->isMouseEvent()) - handleMouseEvent(static_cast<MouseEvent*>(event)); - else if (event->isKeyboardEvent()) - handleKeyboardEvent(static_cast<KeyboardEvent*>(event)); -} - -void WebPluginContainerImpl::frameRectsChanged() -{ - Widget::frameRectsChanged(); - reportGeometry(); -} - -void WebPluginContainerImpl::setParentVisible(bool parentVisible) -{ - // We override this function to make sure that geometry updates are sent - // over to the plugin. For e.g. when a plugin is instantiated it does not - // have a valid parent. As a result the first geometry update from webkit - // is ignored. This function is called when the plugin eventually gets a - // parent. - - if (isParentVisible() == parentVisible) - return; // No change. - - Widget::setParentVisible(parentVisible); - if (!isSelfVisible()) - return; // This widget has explicitely been marked as not visible. - - m_webPlugin->updateVisibility(isVisible()); -} - -void WebPluginContainerImpl::setParent(ScrollView* view) -{ - // We override this function so that if the plugin is windowed, we can call - // NPP_SetWindow at the first possible moment. This ensures that - // NPP_SetWindow is called before the manual load data is sent to a plugin. - // If this order is reversed, Flash won't load videos. - - Widget::setParent(view); - if (view) - reportGeometry(); -} - -void WebPluginContainerImpl::invalidate() -{ - Widget::invalidate(); -} - -void WebPluginContainerImpl::invalidateRect(const WebRect& rect) -{ - invalidateRect(static_cast<IntRect>(rect)); -} - -void WebPluginContainerImpl::reportGeometry() -{ - if (!parent()) - return; - - IntRect windowRect, clipRect; - Vector<IntRect> cutOutRects; - calculateGeometry(frameRect(), windowRect, clipRect, cutOutRects); - - m_webPlugin->updateGeometry(windowRect, clipRect, cutOutRects, isVisible()); -} - -void WebPluginContainerImpl::clearScriptObjects() -{ - Frame* frame = m_element->document()->frame(); - if (!frame) - return; - frame->script()->cleanupScriptObjectsForPlugin(this); -} - -NPObject* WebPluginContainerImpl::scriptableObjectForElement() -{ - return m_element->getNPObject(); -} - -WebString WebPluginContainerImpl::executeScriptURL(const WebURL& url, bool popupsAllowed) -{ - Frame* frame = m_element->document()->frame(); - if (!frame) - return WebString(); - - const KURL& kurl = url; - ASSERT(kurl.protocolIs("javascript")); - - String script = decodeURLEscapeSequences( - kurl.string().substring(strlen("javascript:"))); - - ScriptValue result = frame->script()->executeScript(script, popupsAllowed); - - // Failure is reported as a null string. - String resultStr; - result.getString(resultStr); - return resultStr; -} - -void WebPluginContainerImpl::loadFrameRequest( - const WebURLRequest& request, const WebString& target, bool notifyNeeded, void* notifyData) -{ - Frame* frame = m_element->document()->frame(); - if (!frame) - return; // FIXME: send a notification in this case? - - if (notifyNeeded) { - // FIXME: This is a bit of hack to allow us to observe completion of - // our frame request. It would be better to evolve FrameLoader to - // support a completion callback instead. - WebPluginLoadObserver* observer = - new WebPluginLoadObserver(this, request.url(), notifyData); - m_pluginLoadObservers.append(observer); - WebDataSourceImpl::setNextPluginLoadObserver(observer); - } - - FrameLoadRequest frameRequest(request.toResourceRequest()); - frameRequest.setFrameName(target); - - frame->loader()->loadFrameRequest( - frameRequest, - false, // lock history - false, // lock back forward list - 0, // event - 0, // form state - SendReferrer); -} - -void WebPluginContainerImpl::didReceiveResponse(const ResourceResponse& response) -{ - // Make sure that the plugin receives window geometry before data, or else - // plugins misbehave. - frameRectsChanged(); - - WrappedResourceResponse urlResponse(response); - m_webPlugin->didReceiveResponse(urlResponse); -} - -void WebPluginContainerImpl::didReceiveData(const char *data, int dataLength) -{ - m_webPlugin->didReceiveData(data, dataLength); -} - -void WebPluginContainerImpl::didFinishLoading() -{ - m_webPlugin->didFinishLoading(); -} - -void WebPluginContainerImpl::didFailLoading(const ResourceError& error) -{ - m_webPlugin->didFailLoading(error); -} - -NPObject* WebPluginContainerImpl::scriptableObject() -{ - return m_webPlugin->scriptableObject(); -} - -void WebPluginContainerImpl::willDestroyPluginLoadObserver(WebPluginLoadObserver* observer) -{ - size_t pos = m_pluginLoadObservers.find(observer); - if (pos == notFound) - return; - m_pluginLoadObservers.remove(pos); -} - -// Private methods ------------------------------------------------------------- - -WebPluginContainerImpl::~WebPluginContainerImpl() -{ - for (size_t i = 0; i < m_pluginLoadObservers.size(); ++i) - m_pluginLoadObservers[i]->clearPluginContainer(); - m_webPlugin->destroy(); -} - -void WebPluginContainerImpl::handleMouseEvent(MouseEvent* event) -{ - ASSERT(parent()->isFrameView()); - - // We cache the parent FrameView here as the plugin widget could be deleted - // in the call to HandleEvent. See http://b/issue?id=1362948 - FrameView* parentView = static_cast<FrameView*>(parent()); - - WebMouseEventBuilder webEvent(parentView, *event); - if (webEvent.type == WebInputEvent::Undefined) - return; - - if (event->type() == eventNames().mousedownEvent) { - // Ensure that the frame containing the plugin has focus. - Frame* containingFrame = parentView->frame(); - if (Page* currentPage = containingFrame->page()) - currentPage->focusController()->setFocusedFrame(containingFrame); - // Give focus to our containing HTMLPluginElement. - containingFrame->document()->setFocusedNode(m_element); - } - - WebCursorInfo cursorInfo; - bool handled = m_webPlugin->handleInputEvent(webEvent, cursorInfo); -#if !PLATFORM(DARWIN) - // TODO(pkasting): http://b/1119691 This conditional seems exactly - // backwards, but if I reverse it, giving focus to a transparent - // (windowless) plugin fails. - handled = !handled; - // TODO(awalker): oddly, the above is not true in Mac builds. Looking - // at Apple's corresponding code for Mac and Windows (PluginViewMac and - // PluginViewWin), setDefaultHandled() gets called when handleInputEvent() - // returns true, which then indicates to WebCore that the plugin wants to - // swallow the event--which is what we want. Calling setDefaultHandled() - // fixes several Mac Chromium bugs, but does indeed prevent windowless plugins - // from getting focus in Windows builds, as pkasting notes above. So for - // now, we only do so in Mac builds. -#endif - if (handled) - event->setDefaultHandled(); - - // A windowless plugin can change the cursor in response to a mouse move - // event. We need to reflect the changed cursor in the frame view as the - // mouse is moved in the boundaries of the windowless plugin. - Page* page = parentView->frame()->page(); - if (!page) - return; - ChromeClientImpl* chromeClient = - static_cast<ChromeClientImpl*>(page->chrome()->client()); - chromeClient->setCursorForPlugin(cursorInfo); -} - -void WebPluginContainerImpl::handleKeyboardEvent(KeyboardEvent* event) -{ - WebKeyboardEventBuilder webEvent(*event); - if (webEvent.type == WebInputEvent::Undefined) - return; - - WebCursorInfo cursor_info; - bool handled = m_webPlugin->handleInputEvent(webEvent, cursor_info); -#if !PLATFORM(DARWIN) - // TODO(pkasting): http://b/1119691 See above. - handled = !handled; -#endif - if (handled) - event->setDefaultHandled(); -} - -void WebPluginContainerImpl::calculateGeometry(const IntRect& frameRect, - IntRect& windowRect, - IntRect& clipRect, - Vector<IntRect>& cutOutRects) -{ - windowRect = IntRect( - parent()->contentsToWindow(frameRect.location()), frameRect.size()); - - // Calculate a clip-rect so that we don't overlap the scrollbars, etc. - clipRect = windowClipRect(); - clipRect.move(-windowRect.x(), -windowRect.y()); - - windowCutOutRects(frameRect, cutOutRects); - // Convert to the plugin position. - for (size_t i = 0; i < cutOutRects.size(); i++) - cutOutRects[i].move(-frameRect.x(), -frameRect.y()); -} - -WebCore::IntRect WebPluginContainerImpl::windowClipRect() const -{ - // Start by clipping to our bounds. - IntRect clipRect = - convertToContainingWindow(IntRect(0, 0, width(), height())); - - // document()->renderer() can be 0 when we receive messages from the - // plugins while we are destroying a frame. - if (m_element->renderer()->document()->renderer()) { - // Take our element and get the clip rect from the enclosing layer and - // frame view. - RenderLayer* layer = m_element->renderer()->enclosingLayer(); - clipRect.intersect( - m_element->document()->view()->windowClipRectForLayer(layer, true)); - } - - return clipRect; -} - -static void getObjectStack(const RenderObject* ro, - Vector<const RenderObject*>* roStack) -{ - roStack->clear(); - while (ro) { - roStack->append(ro); - ro = ro->parent(); - } -} - -// Returns true if stack1 is at or above stack2 -static bool checkStackOnTop( - const Vector<const RenderObject*>& iframeZstack, - const Vector<const RenderObject*>& pluginZstack) -{ - for (size_t i1 = 0, i2 = 0; - i1 < iframeZstack.size() && i2 < pluginZstack.size(); - i1++, i2++) { - // The root is at the end of these stacks. We want to iterate - // root-downwards so we index backwards from the end. - const RenderObject* ro1 = iframeZstack[iframeZstack.size() - 1 - i1]; - const RenderObject* ro2 = pluginZstack[pluginZstack.size() - 1 - i2]; - - if (ro1 != ro2) { - // When we find nodes in the stack that are not the same, then - // we've found the nodes just below the lowest comment ancestor. - // Determine which should be on top. - - // See if z-index determines an order. - if (ro1->style() && ro2->style()) { - int z1 = ro1->style()->zIndex(); - int z2 = ro2->style()->zIndex(); - if (z1 > z2) - return true; - if (z1 < z2) - return false; - } - - // For compatibility with IE: when the plugin is not positioned, - // it stacks behind the iframe, even if it's later in the - // document order. - if (ro2->style()->position() == StaticPosition) - return true; - - // Inspect the document order. Later order means higher - // stacking. - const RenderObject* parent = ro1->parent(); - if (!parent) - return false; - ASSERT(parent == ro2->parent()); - - for (const RenderObject* ro = parent->firstChild(); ro; ro = ro->nextSibling()) { - if (ro == ro1) - return false; - if (ro == ro2) - return true; - } - ASSERT(false); // We should have seen ro1 and ro2 by now. - return false; - } - } - return true; -} - -// Return a set of rectangles that should not be overdrawn by the -// plugin ("cutouts"). This helps implement the "iframe shim" -// technique of overlaying a windowed plugin with content from the -// page. In a nutshell, iframe elements should occlude plugins when -// they occur higher in the stacking order. -void WebPluginContainerImpl::windowCutOutRects(const IntRect& frameRect, - Vector<IntRect>& cutOutRects) -{ - RenderObject* pluginNode = m_element->renderer(); - ASSERT(pluginNode); - if (!pluginNode->style()) - return; - Vector<const RenderObject*> pluginZstack; - Vector<const RenderObject*> iframeZstack; - getObjectStack(pluginNode, &pluginZstack); - - // Get the parent widget - Widget* parentWidget = this->parent(); - if (!parentWidget->isFrameView()) - return; - - FrameView* parentFrameView = static_cast<FrameView*>(parentWidget); - - const HashSet<RefPtr<Widget> >* children = parentFrameView->children(); - for (HashSet<RefPtr<Widget> >::const_iterator it = children->begin(); it != children->end(); ++it) { - // We only care about FrameView's because iframes show up as FrameViews. - if (!(*it)->isFrameView()) - continue; - - const FrameView* frameView = - static_cast<const FrameView*>((*it).get()); - // Check to make sure we can get both the element and the RenderObject - // for this FrameView, if we can't just move on to the next object. - if (!frameView->frame() || !frameView->frame()->ownerElement() - || !frameView->frame()->ownerElement()->renderer()) - continue; - - HTMLElement* element = frameView->frame()->ownerElement(); - RenderObject* iframeRenderer = element->renderer(); - - if (element->hasTagName(HTMLNames::iframeTag) - && iframeRenderer->absoluteBoundingBoxRect().intersects(frameRect) - && (!iframeRenderer->style() || iframeRenderer->style()->visibility() == VISIBLE)) { - getObjectStack(iframeRenderer, &iframeZstack); - if (checkStackOnTop(iframeZstack, pluginZstack)) { - IntPoint point = - roundedIntPoint(iframeRenderer->localToAbsolute()); - RenderBox* rbox = toRenderBox(iframeRenderer); - IntSize size(rbox->width(), rbox->height()); - cutOutRects.append(IntRect(point, size)); - } - } - } -} - -} // namespace WebKit diff --git a/webkit/api/src/WebPluginContainerImpl.h b/webkit/api/src/WebPluginContainerImpl.h deleted file mode 100644 index 00450bb..0000000 --- a/webkit/api/src/WebPluginContainerImpl.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPluginContainerImpl_h -#define WebPluginContainerImpl_h - -// FIXME: This relative path is a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebPluginContainer.h" - -#include "Widget.h" -#include <wtf/PassRefPtr.h> -#include <wtf/Vector.h> - -struct NPObject; - -namespace WebCore { -class HTMLPlugInElement; -class IntRect; -class KeyboardEvent; -class MouseEvent; -class ResourceError; -class ResourceResponse; -} - -namespace WebKit { - -class WebPlugin; -class WebPluginLoadObserver; - -class WebPluginContainerImpl : public WebCore::Widget, public WebPluginContainer { -public: - static PassRefPtr<WebPluginContainerImpl> create(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin) - { - return adoptRef(new WebPluginContainerImpl(element, webPlugin)); - } - - // Widget methods - virtual void setFrameRect(const WebCore::IntRect&); - virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&); - virtual void invalidateRect(const WebCore::IntRect&); - virtual void setFocus(); - virtual void show(); - virtual void hide(); - virtual void handleEvent(WebCore::Event*); - virtual void frameRectsChanged(); - virtual void setParentVisible(bool); - virtual void setParent(WebCore::ScrollView*); - - // WebPluginContainer methods - virtual void invalidate(); - virtual void invalidateRect(const WebRect&); - virtual void reportGeometry(); - virtual void clearScriptObjects(); - virtual NPObject* scriptableObjectForElement(); - virtual WebString executeScriptURL(const WebURL&, bool popupsAllowed); - virtual void loadFrameRequest(const WebURLRequest&, const WebString& target, bool notifyNeeded, void* notifyData); - - // Resource load events for the plugin's source data: - void didReceiveResponse(const WebCore::ResourceResponse&); - void didReceiveData(const char *data, int dataLength); - void didFinishLoading(); - void didFailLoading(const WebCore::ResourceError&); - - NPObject* scriptableObject(); - - // This cannot be null. - WebPlugin* plugin() { return m_webPlugin; } - - void willDestroyPluginLoadObserver(WebPluginLoadObserver*); - -private: - WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin) - : m_element(element) - , m_webPlugin(webPlugin) { } - ~WebPluginContainerImpl(); - - void handleMouseEvent(WebCore::MouseEvent*); - void handleKeyboardEvent(WebCore::KeyboardEvent*); - - void calculateGeometry(const WebCore::IntRect& frameRect, - WebCore::IntRect& windowRect, - WebCore::IntRect& clipRect, - Vector<WebCore::IntRect>& cutOutRects); - WebCore::IntRect windowClipRect() const; - void windowCutOutRects(const WebCore::IntRect& frameRect, - Vector<WebCore::IntRect>& cutOutRects); - - WebCore::HTMLPlugInElement* m_element; - WebPlugin* m_webPlugin; - Vector<WebPluginLoadObserver*> m_pluginLoadObservers; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebPluginListBuilderImpl.cpp b/webkit/api/src/WebPluginListBuilderImpl.cpp deleted file mode 100644 index 6926a2d..0000000 --- a/webkit/api/src/WebPluginListBuilderImpl.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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 "WebPluginListBuilderImpl.h" - -#include "PluginData.h" -#include "WebString.h" -#include <wtf/Vector.h> - -using namespace WebCore; - -namespace WebKit { - -void WebPluginListBuilderImpl::addPlugin(const WebString& name, const WebString& description, const WebString& fileName) -{ - PluginInfo* info = new PluginInfo(); - info->name = name; - info->desc = description; - info->file = fileName; - m_results->append(info); -} - -void WebPluginListBuilderImpl::addMediaTypeToLastPlugin(const WebString& name, const WebString& description) -{ - MimeClassInfo* info = new MimeClassInfo(); - info->type = name; - info->desc = description; - m_results->last()->mimes.append(info); -} - -void WebPluginListBuilderImpl::addFileExtensionToLastMediaType(const WebString& extension) -{ - MimeClassInfo* info = m_results->last()->mimes.last(); - if (!info->suffixes.isEmpty()) - info->suffixes.append(','); - info->suffixes.append(extension); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebPluginListBuilderImpl.h b/webkit/api/src/WebPluginListBuilderImpl.h deleted file mode 100644 index 7a8a497..0000000 --- a/webkit/api/src/WebPluginListBuilderImpl.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPluginListBuilderImpl_h -#define WebPluginListBuilderImpl_h - -#include "WebPluginListBuilder.h" - -#include "PluginData.h" -#include <wtf/Vector.h> - -namespace WebKit { - -class WebPluginListBuilderImpl : public WebPluginListBuilder { -public: - WebPluginListBuilderImpl(Vector<WebCore::PluginInfo*>* results) : m_results(results) { } - - // WebPluginListBuilder methods: - virtual void addPlugin(const WebString& name, const WebString& description, const WebString& fileName); - virtual void addMediaTypeToLastPlugin(const WebString& name, const WebString& description); - virtual void addFileExtensionToLastMediaType(const WebString& extension); - -private: - Vector<WebCore::PluginInfo*>* m_results; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebPluginLoadObserver.cpp b/webkit/api/src/WebPluginLoadObserver.cpp deleted file mode 100644 index 5ec59a6..0000000 --- a/webkit/api/src/WebPluginLoadObserver.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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 "WebPluginLoadObserver.h" - -#include "WebPlugin.h" -#include "WebPluginContainerImpl.h" - -namespace WebKit { - -WebPluginLoadObserver::~WebPluginLoadObserver() -{ - if (m_pluginContainer) - m_pluginContainer->willDestroyPluginLoadObserver(this); -} - -void WebPluginLoadObserver::didFinishLoading() -{ - if (m_pluginContainer) - m_pluginContainer->plugin()->didFinishLoadingFrameRequest(m_notifyURL, m_notifyData); -} - -void WebPluginLoadObserver::didFailLoading(const WebURLError& error) -{ - if (m_pluginContainer) - m_pluginContainer->plugin()->didFailLoadingFrameRequest(m_notifyURL, m_notifyData, error); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebPluginLoadObserver.h b/webkit/api/src/WebPluginLoadObserver.h deleted file mode 100644 index 097d08d..0000000 --- a/webkit/api/src/WebPluginLoadObserver.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPluginLoadObserver_h -#define WebPluginLoadObserver_h - -#include "../public/WebURL.h" - -namespace WebKit { - -class WebPluginContainerImpl; -struct WebURLError; - -class WebPluginLoadObserver { -public: - WebPluginLoadObserver(WebPluginContainerImpl* pluginContainer, - const WebURL& notifyURL, void* notifyData) - : m_pluginContainer(pluginContainer) - , m_notifyURL(notifyURL) - , m_notifyData(notifyData) - { - } - - ~WebPluginLoadObserver(); - - const WebURL& url() const { return m_notifyURL; } - - void clearPluginContainer() { m_pluginContainer = 0; } - void didFinishLoading(); - void didFailLoading(const WebURLError&); - -private: - WebPluginContainerImpl* m_pluginContainer; - WebURL m_notifyURL; - void* m_notifyData; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebPopupMenuImpl.cpp b/webkit/api/src/WebPopupMenuImpl.cpp deleted file mode 100644 index f6d360e..0000000 --- a/webkit/api/src/WebPopupMenuImpl.cpp +++ /dev/null @@ -1,312 +0,0 @@ -/* - * 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 "WebPopupMenuImpl.h" - -#include "Cursor.h" -#include "FramelessScrollView.h" -#include "FrameView.h" -#include "IntRect.h" -#include "PlatformContextSkia.h" -#include "PlatformKeyboardEvent.h" -#include "PlatformMouseEvent.h" -#include "PlatformWheelEvent.h" -#include "SkiaUtils.h" - -#include "WebInputEvent.h" -#include "WebInputEventConversion.h" -#include "WebRect.h" -#include "WebWidgetClient.h" - -#include <skia/ext/platform_canvas.h> - -using namespace WebCore; - -namespace WebKit { - -// WebPopupMenu --------------------------------------------------------------- - -WebPopupMenu* WebPopupMenu::create(WebWidgetClient* client) -{ - return new WebPopupMenuImpl(client); -} - -// WebWidget ------------------------------------------------------------------ - -WebPopupMenuImpl::WebPopupMenuImpl(WebWidgetClient* client) - : m_client(client) - , m_widget(0) -{ - // set to impossible point so we always get the first mouse pos - m_lastMousePosition = WebPoint(-1, -1); -} - -WebPopupMenuImpl::~WebPopupMenuImpl() -{ - if (m_widget) - m_widget->setClient(0); -} - -void WebPopupMenuImpl::Init(FramelessScrollView* widget, const WebRect& bounds) -{ - m_widget = widget; - m_widget->setClient(this); - - if (m_client) { - m_client->setWindowRect(bounds); - m_client->show(WebNavigationPolicy()); // Policy is ignored - } -} - -void WebPopupMenuImpl::MouseMove(const WebMouseEvent& event) -{ - // don't send mouse move messages if the mouse hasn't moved. - if (event.x != m_lastMousePosition.x || event.y != m_lastMousePosition.y) { - m_lastMousePosition = WebPoint(event.x, event.y); - m_widget->handleMouseMoveEvent(PlatformMouseEventBuilder(m_widget, event)); - } -} - -void WebPopupMenuImpl::MouseLeave(const WebMouseEvent& event) -{ - m_widget->handleMouseMoveEvent(PlatformMouseEventBuilder(m_widget, event)); -} - -void WebPopupMenuImpl::MouseDown(const WebMouseEvent& event) -{ - m_widget->handleMouseDownEvent(PlatformMouseEventBuilder(m_widget, event)); -} - -void WebPopupMenuImpl::MouseUp(const WebMouseEvent& event) -{ - mouseCaptureLost(); - m_widget->handleMouseReleaseEvent(PlatformMouseEventBuilder(m_widget, event)); -} - -void WebPopupMenuImpl::MouseWheel(const WebMouseWheelEvent& event) -{ - m_widget->handleWheelEvent(PlatformWheelEventBuilder(m_widget, event)); -} - -bool WebPopupMenuImpl::KeyEvent(const WebKeyboardEvent& event) -{ - return m_widget->handleKeyEvent(PlatformKeyboardEventBuilder(event)); -} - -// WebWidget ------------------------------------------------------------------- - -void WebPopupMenuImpl::close() -{ - if (m_widget) - m_widget->hide(); - - m_client = 0; - - deref(); // Balances ref() from WebWidget::Create -} - -void WebPopupMenuImpl::resize(const WebSize& newSize) -{ - if (m_size == newSize) - return; - m_size = newSize; - - if (m_widget) { - IntRect newGeometry(0, 0, m_size.width, m_size.height); - m_widget->setFrameRect(newGeometry); - } - - if (m_client) { - WebRect damagedRect(0, 0, m_size.width, m_size.height); - m_client->didInvalidateRect(damagedRect); - } -} - -void WebPopupMenuImpl::layout() -{ -} - -void WebPopupMenuImpl::paint(WebCanvas* canvas, const WebRect& rect) -{ - if (!m_widget) - return; - - if (!rect.isEmpty()) { -#if WEBKIT_USING_CG - GraphicsContext gc(canvas); -#elif WEBKIT_USING_SKIA - PlatformContextSkia context(canvas); - // PlatformGraphicsContext is actually a pointer to PlatformContextSkia. - GraphicsContext gc(reinterpret_cast<PlatformGraphicsContext*>(&context)); -#else - notImplemented(); -#endif - m_widget->paint(&gc, rect); - } -} - -bool WebPopupMenuImpl::handleInputEvent(const WebInputEvent& inputEvent) -{ - if (!m_widget) - return false; - - // TODO (jcampan): WebKit seems to always return false on mouse events - // methods. For now we'll assume it has processed them (as we are only - // interested in whether keyboard events are processed). - switch (inputEvent.type) { - case WebInputEvent::MouseMove: - MouseMove(*static_cast<const WebMouseEvent*>(&inputEvent)); - return true; - - case WebInputEvent::MouseLeave: - MouseLeave(*static_cast<const WebMouseEvent*>(&inputEvent)); - return true; - - case WebInputEvent::MouseWheel: - MouseWheel(*static_cast<const WebMouseWheelEvent*>(&inputEvent)); - return true; - - case WebInputEvent::MouseDown: - MouseDown(*static_cast<const WebMouseEvent*>(&inputEvent)); - return true; - - case WebInputEvent::MouseUp: - MouseUp(*static_cast<const WebMouseEvent*>(&inputEvent)); - return true; - - // In Windows, RawKeyDown only has information about the physical key, but - // for "selection", we need the information about the character the key - // translated into. For English, the physical key value and the character - // value are the same, hence, "selection" works for English. But for other - // languages, such as Hebrew, the character value is different from the - // physical key value. Thus, without accepting Char event type which - // contains the key's character value, the "selection" won't work for - // non-English languages, such as Hebrew. - case WebInputEvent::RawKeyDown: - case WebInputEvent::KeyDown: - case WebInputEvent::KeyUp: - case WebInputEvent::Char: - return KeyEvent(*static_cast<const WebKeyboardEvent*>(&inputEvent)); - - default: - break; - } - return false; -} - -void WebPopupMenuImpl::mouseCaptureLost() -{ -} - -void WebPopupMenuImpl::setFocus(bool enable) -{ -} - -bool WebPopupMenuImpl::handleCompositionEvent( - WebCompositionCommand command, int cursorPosition, int targetStart, - int targetEnd, const WebString& imeString) -{ - return false; -} - -bool WebPopupMenuImpl::queryCompositionStatus(bool* enabled, WebRect* caretRect) -{ - return false; -} - -void WebPopupMenuImpl::setTextDirection(WebTextDirection direction) -{ -} - - -//----------------------------------------------------------------------------- -// WebCore::HostWindow - -void WebPopupMenuImpl::repaint(const IntRect& paintRect, - bool contentChanged, - bool immediate, - bool repaintContentOnly) -{ - // Ignore spurious calls. - if (!contentChanged || paintRect.isEmpty()) - return; - if (m_client) - m_client->didInvalidateRect(paintRect); -} - -void WebPopupMenuImpl::scroll(const IntSize& scrollDelta, - const IntRect& scrollRect, - const IntRect& clipRect) -{ - if (m_client) { - int dx = scrollDelta.width(); - int dy = scrollDelta.height(); - m_client->didScrollRect(dx, dy, clipRect); - } -} - -IntPoint WebPopupMenuImpl::screenToWindow(const IntPoint& point) const -{ - notImplemented(); - return IntPoint(); -} - -IntRect WebPopupMenuImpl::windowToScreen(const IntRect& rect) const -{ - notImplemented(); - return IntRect(); -} - -void WebPopupMenuImpl::scrollRectIntoView(const IntRect&, const ScrollView*) const -{ - // Nothing to be done here since we do not have the concept of a container - // that implements its own scrolling. -} - -void WebPopupMenuImpl::scrollbarsModeDidChange() const -{ - // Nothing to be done since we have no concept of different scrollbar modes. -} - -//----------------------------------------------------------------------------- -// WebCore::FramelessScrollViewClient - -void WebPopupMenuImpl::popupClosed(FramelessScrollView* widget) -{ - ASSERT(widget == m_widget); - if (m_widget) { - m_widget->setClient(0); - m_widget = 0; - } - m_client->closeWidgetSoon(); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebPopupMenuImpl.h b/webkit/api/src/WebPopupMenuImpl.h deleted file mode 100644 index 13eb674..0000000 --- a/webkit/api/src/WebPopupMenuImpl.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 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. - */ - -#ifndef WebPopupMenuImpl_h -#define WebPopupMenuImpl_h - -// FIXME: Add this to FramelessScrollViewClient.h -namespace WebCore { class FramelessScrollView; } - -#include "FramelessScrollViewClient.h" -// FIXME: remove the relative paths once glue/ consumers are removed. -#include "../public/WebPoint.h" -#include "../public/WebPopupMenu.h" -#include "../public/WebSize.h" -#include <wtf/RefCounted.h> - -namespace WebCore { -class Frame; -class FramelessScrollView; -class KeyboardEvent; -class Page; -class PlatformKeyboardEvent; -class Range; -class Widget; -} - -namespace WebKit { -class WebKeyboardEvent; -class WebMouseEvent; -class WebMouseWheelEvent; -struct WebRect; - -class WebPopupMenuImpl : public WebPopupMenu, - public WebCore::FramelessScrollViewClient, - public RefCounted<WebPopupMenuImpl> { -public: - // WebWidget - virtual void close(); - virtual WebSize size() { return m_size; } - virtual void resize(const WebSize&); - virtual void layout(); - virtual void paint(WebCanvas* canvas, const WebRect& rect); - virtual bool handleInputEvent(const WebInputEvent&); - virtual void mouseCaptureLost(); - virtual void setFocus(bool enable); - virtual bool handleCompositionEvent( - WebCompositionCommand command, int cursorPosition, - int targetStart, int targetEnd, const WebString& text); - virtual bool queryCompositionStatus(bool* enabled, WebRect* caretRect); - virtual void setTextDirection(WebTextDirection direction); - - // WebPopupMenuImpl - void Init(WebCore::FramelessScrollView* widget, - const WebRect& bounds); - - WebWidgetClient* client() { return m_client; } - - void MouseMove(const WebMouseEvent&); - void MouseLeave(const WebMouseEvent&); - void MouseDown(const WebMouseEvent&); - void MouseUp(const WebMouseEvent&); - void MouseDoubleClick(const WebMouseEvent&); - void MouseWheel(const WebMouseWheelEvent&); - bool KeyEvent(const WebKeyboardEvent&); - - protected: - friend class WebPopupMenu; // For WebPopupMenu::create - friend class WTF::RefCounted<WebPopupMenuImpl>; - - WebPopupMenuImpl(WebWidgetClient* client); - ~WebPopupMenuImpl(); - - // WebCore::HostWindow methods: - virtual void repaint( - const WebCore::IntRect&, bool contentChanged, bool immediate = false, - bool repaintContentOnly = false); - virtual void scroll( - const WebCore::IntSize& scrollDelta, const WebCore::IntRect& scrollRect, - const WebCore::IntRect& clipRect); - virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const; - virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const; - virtual PlatformPageClient platformPageClient() const { return 0; } - virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const; - virtual void scrollbarsModeDidChange() const; - - // WebCore::FramelessScrollViewClient methods: - virtual void popupClosed(WebCore::FramelessScrollView*); - - WebWidgetClient* m_client; - WebSize m_size; - - WebPoint m_lastMousePosition; - - // This is a non-owning ref. The popup will notify us via popupClosed() - // before it is destroyed. - WebCore::FramelessScrollView* m_widget; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebRange.cpp b/webkit/api/src/WebRange.cpp deleted file mode 100644 index 3dd000d..0000000 --- a/webkit/api/src/WebRange.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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 "WebRange.h" - -#include "Range.h" -#include "WebNode.h" -#include "WebString.h" -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -class WebRangePrivate : public Range { -}; - -void WebRange::reset() -{ - assign(0); -} - -void WebRange::assign(const WebRange& other) -{ - WebRangePrivate* p = const_cast<WebRangePrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -int WebRange::startOffset() const -{ - return m_private->startOffset(); -} - -int WebRange::endOffset() const -{ - return m_private->endOffset(); -} - -WebNode WebRange::startContainer(int& exceptionCode) const -{ - return PassRefPtr<Node>(m_private->startContainer(exceptionCode)); -} - -WebNode WebRange::endContainer(int& exceptionCode) const -{ - return PassRefPtr<Node>(m_private->endContainer(exceptionCode)); -} - -WebString WebRange::toHTMLText() const -{ - return m_private->toHTML(); -} - -WebString WebRange::toPlainText() const -{ - return m_private->text(); -} - -WebRange::WebRange(const WTF::PassRefPtr<WebCore::Range>& range) - : m_private(static_cast<WebRangePrivate*>(range.releaseRef())) -{ -} - -WebRange& WebRange::operator=(const WTF::PassRefPtr<WebCore::Range>& range) -{ - assign(static_cast<WebRangePrivate*>(range.releaseRef())); - return *this; -} - -WebRange::operator WTF::PassRefPtr<WebCore::Range>() const -{ - return PassRefPtr<Range>(const_cast<WebRangePrivate*>(m_private)); -} - -void WebRange::assign(WebRangePrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebRuntimeFeatures.cpp b/webkit/api/src/WebRuntimeFeatures.cpp deleted file mode 100644 index b630a09..0000000 --- a/webkit/api/src/WebRuntimeFeatures.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* - * 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 "WebRuntimeFeatures.h" - -#include "RuntimeEnabledFeatures.h" -#include "WebMediaPlayerClientImpl.h" -#include "WebSocket.h" - -using namespace WebCore; - -namespace WebKit { - -void WebRuntimeFeatures::enableDatabase(bool enable) -{ -#if ENABLE(DATABASE) - RuntimeEnabledFeatures::setDatabaseEnabled(enable); -#endif -} - -bool WebRuntimeFeatures::isDatabaseEnabled() -{ -#if ENABLE(DATABASE) - return RuntimeEnabledFeatures::databaseEnabled(); -#else - return false; -#endif -} - -void WebRuntimeFeatures::enableLocalStorage(bool enable) -{ -#if ENABLE(DOM_STORAGE) - RuntimeEnabledFeatures::setLocalStorageEnabled(enable); -#endif -} - -bool WebRuntimeFeatures::isLocalStorageEnabled() -{ -#if ENABLE(DOM_STORAGE) - return RuntimeEnabledFeatures::localStorageEnabled(); -#else - return false; -#endif -} - -void WebRuntimeFeatures::enableSessionStorage(bool enable) -{ -#if ENABLE(DOM_STORAGE) - RuntimeEnabledFeatures::setSessionStorageEnabled(enable); -#endif -} - -bool WebRuntimeFeatures::isSessionStorageEnabled() -{ -#if ENABLE(DOM_STORAGE) - return RuntimeEnabledFeatures::sessionStorageEnabled(); -#else - return false; -#endif -} - -void WebRuntimeFeatures::enableMediaPlayer(bool enable) -{ -#if ENABLE(VIDEO) - WebMediaPlayerClientImpl::setIsEnabled(enable); -#endif -} - -bool WebRuntimeFeatures::isMediaPlayerEnabled() -{ -#if ENABLE(VIDEO) - return WebMediaPlayerClientImpl::isEnabled(); -#else - return false; -#endif -} - -void WebRuntimeFeatures::enableSockets(bool enable) -{ -#if ENABLE(WEB_SOCKETS) - WebSocket::setIsAvailable(enable); -#endif -} - -bool WebRuntimeFeatures::isSocketsEnabled() -{ -#if ENABLE(WEB_SOCKETS) - return WebSocket::isAvailable(); -#else - return false; -#endif -} - -void WebRuntimeFeatures::enableNotifications(bool enable) -{ -#if ENABLE(NOTIFICATIONS) - RuntimeEnabledFeatures::setNotificationsEnabled(enable); -#endif -} - -bool WebRuntimeFeatures::isNotificationsEnabled() -{ -#if ENABLE(NOTIFICATIONS) - return RuntimeEnabledFeatures::notificationsEnabled(); -#else - return false; -#endif -} - -void WebRuntimeFeatures::enableApplicationCache(bool enable) -{ -#if ENABLE(OFFLINE_WEB_APPLICATIONS) - RuntimeEnabledFeatures::setApplicationCacheEnabled(enable); -#endif -} - -bool WebRuntimeFeatures::isApplicationCacheEnabled() -{ -#if ENABLE(OFFLINE_WEB_APPLICATIONS) - return RuntimeEnabledFeatures::applicationCacheEnabled(); -#else - return false; -#endif -} - -} // namespace WebKit diff --git a/webkit/api/src/WebScriptController.cpp b/webkit/api/src/WebScriptController.cpp deleted file mode 100644 index 06f47e6..0000000 --- a/webkit/api/src/WebScriptController.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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 "WebScriptController.h" - -#include "V8Binding.h" -#include "V8Proxy.h" - -#include "WebString.h" - -using namespace WebCore; - -namespace WebKit { - -void WebScriptController::registerExtension(v8::Extension* extension) -{ - V8Proxy::registerExtension(extension, WebString()); -} - -void WebScriptController::registerExtension(v8::Extension* extension, - const WebString& schemeRestriction) -{ - V8Proxy::registerExtension(extension, schemeRestriction); -} - -void WebScriptController::registerExtension(v8::Extension* extension, - int extensionGroup) -{ - V8Proxy::registerExtension(extension, extensionGroup); -} - -void WebScriptController::enableV8SingleThreadMode() -{ - enableStringImplCache(); -} - -void WebScriptController::flushConsoleMessages() -{ - WebCore::V8Proxy::processConsoleMessages(); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebSearchableFormData.cpp b/webkit/api/src/WebSearchableFormData.cpp deleted file mode 100644 index eddaffe..0000000 --- a/webkit/api/src/WebSearchableFormData.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/* - * 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 "WebSearchableFormData.h" - -#include "Document.h" -#include "FormDataBuilder.h" -#include "FormDataList.h" -#include "Frame.h" -#include "HTMLFormControlElement.h" -#include "HTMLFormElement.h" -#include "HTMLInputElement.h" -#include "HTMLNames.h" -#include "HTMLOptionElement.h" -#include "HTMLOptionsCollection.h" -#include "HTMLSelectElement.h" -#include "TextEncoding.h" -#include "WebFormElement.h" - -using namespace WebCore; - -namespace { - -// Gets the encoding for the form. -void GetFormEncoding(const HTMLFormElement* form, TextEncoding* encoding) -{ - String str(form->getAttribute(HTMLNames::accept_charsetAttr)); - str.replace(',', ' '); - Vector<String> charsets; - str.split(' ', charsets); - for (Vector<String>::const_iterator i(charsets.begin()); i != charsets.end(); ++i) { - *encoding = TextEncoding(*i); - if (encoding->isValid()) - return; - } - const Frame* frame = form->document()->frame(); - *encoding = frame ? TextEncoding(frame->loader()->encoding()) : Latin1Encoding(); -} - -// Returns true if the submit request results in an HTTP URL. -bool IsHTTPFormSubmit(const HTMLFormElement* form) -{ - String action(form->action()); - return form->document()->frame()->loader()->completeURL(action.isNull() ? "" : action).protocol() == "http"; -} - -// If the form does not have an activated submit button, the first submit -// button is returned. -HTMLFormControlElement* GetButtonToActivate(HTMLFormElement* form) -{ - HTMLFormControlElement* firstSubmitButton = 0; - for (Vector<HTMLFormControlElement*>::const_iterator i(form->formElements.begin()); i != form->formElements.end(); ++i) { - HTMLFormControlElement* formElement = *i; - if (formElement->isActivatedSubmit()) - // There's a button that is already activated for submit, return 0. - return 0; - if (!firstSubmitButton && formElement->isSuccessfulSubmitButton()) - firstSubmitButton = formElement; - } - return firstSubmitButton; -} - -// Returns true if the selected state of all the options matches the default -// selected state. -bool IsSelectInDefaultState(const HTMLSelectElement* select) -{ - const Vector<Element*>& listItems = select->listItems(); - if (select->multiple() || select->size() > 1) { - for (Vector<Element*>::const_iterator i(listItems.begin()); i != listItems.end(); ++i) { - if (!(*i)->hasLocalName(HTMLNames::optionTag)) - continue; - const HTMLOptionElement* optionElement = static_cast<const HTMLOptionElement*>(*i); - if (optionElement->selected() != optionElement->defaultSelected()) - return false; - } - return true; - } - - // The select is rendered as a combobox (called menulist in WebKit). At - // least one item is selected, determine which one. - const HTMLOptionElement* initialSelected = 0; - for (Vector<Element*>::const_iterator i(listItems.begin()); i != listItems.end(); ++i) { - if (!(*i)->hasLocalName(HTMLNames::optionTag)) - continue; - const HTMLOptionElement* optionElement = static_cast<const HTMLOptionElement*>(*i); - if (optionElement->defaultSelected()) { - // The page specified the option to select. - initialSelected = optionElement; - break; - } - if (!initialSelected) - initialSelected = optionElement; - } - return initialSelected ? initialSelected->selected() : true; -} - -// Returns true if the form element is in its default state, false otherwise. -// The default state is the state of the form element on initial load of the -// page, and varies depending upon the form element. For example, a checkbox is -// in its default state if the checked state matches the defaultChecked state. -bool IsInDefaultState(const HTMLFormControlElement* formElement) -{ - if (formElement->hasTagName(HTMLNames::inputTag)) { - const HTMLInputElement* inputElement = static_cast<const HTMLInputElement*>(formElement); - if (inputElement->inputType() == HTMLInputElement::CHECKBOX || inputElement->inputType() == HTMLInputElement::RADIO) - return inputElement->checked() == inputElement->defaultChecked(); - } else if (formElement->hasTagName(HTMLNames::selectTag)) - return IsSelectInDefaultState(static_cast<const HTMLSelectElement*>(formElement)); - return true; -} - -// If form has only one text input element, return true. If a valid input -// element is not found, return false. Additionally, the form data for all -// elements is added to enc_string and the encoding used is set in -// encoding_name. -bool HasSuitableTextElement(const HTMLFormElement* form, Vector<char>* encodedString, String* encodingName) -{ - TextEncoding encoding; - GetFormEncoding(form, &encoding); - if (!encoding.isValid()) { - // Need a valid encoding to encode the form elements. - // If the encoding isn't found webkit ends up replacing the params with - // empty strings. So, we don't try to do anything here. - return 0; - } - *encodingName = encoding.name(); - - HTMLInputElement* textElement = 0; - for (Vector<HTMLFormControlElement*>::const_iterator i(form->formElements.begin()); i != form->formElements.end(); ++i) { - HTMLFormControlElement* formElement = *i; - if (formElement->disabled() || formElement->name().isNull()) - continue; - - if (!IsInDefaultState(formElement) || formElement->hasTagName(HTMLNames::textareaTag)) - return 0; - - bool isTextElement = false; - if (formElement->hasTagName(HTMLNames::inputTag)) { - switch (static_cast<const HTMLInputElement*>(formElement)->inputType()) { - case HTMLInputElement::TEXT: - case HTMLInputElement::ISINDEX: - isTextElement = true; - break; - case HTMLInputElement::PASSWORD: - // Don't store passwords! This is most likely an https anyway. - // Fall through. - case HTMLInputElement::FILE: - // Too big, don't try to index this. - return 0; - default: - // All other input types are indexable. - break; - } - } - - FormDataList dataList(encoding); - if (!formElement->appendFormData(dataList, false)) - continue; - - const Vector<FormDataList::Item>& itemList = dataList.list(); - if (isTextElement && !itemList.isEmpty()) { - if (textElement) { - // The auto-complete bar only knows how to fill in one value. - // This form has multiple fields; don't treat it as searchable. - return false; - } - textElement = static_cast<HTMLInputElement*>(formElement); - } - for (Vector<FormDataList::Item>::const_iterator j(itemList.begin()); j != itemList.end(); ++j) { - // Handle ISINDEX / <input name=isindex> specially, but only if it's - // the first entry. - if (!encodedString->isEmpty() || j->data() != "isindex") { - if (!encodedString->isEmpty()) - encodedString->append('&'); - FormDataBuilder::encodeStringAsFormData(*encodedString, j->data()); - encodedString->append('='); - } - ++j; - if (formElement == textElement) - encodedString->append("{searchTerms}", 13); - else - FormDataBuilder::encodeStringAsFormData(*encodedString, j->data()); - } - } - - return textElement; -} - -} // namespace - -namespace WebKit { - -WebSearchableFormData::WebSearchableFormData(const WebFormElement& form) -{ - RefPtr<HTMLFormElement> formElement = form.operator PassRefPtr<HTMLFormElement>(); - const Frame* frame = formElement->document()->frame(); - if (!frame) - return; - - // Only consider forms that GET data and the action targets an http page. - if (equalIgnoringCase(formElement->getAttribute(HTMLNames::methodAttr), "post") || !IsHTTPFormSubmit(formElement.get())) - return; - - HTMLFormControlElement* firstSubmitButton = GetButtonToActivate(formElement.get()); - if (firstSubmitButton) { - // The form does not have an active submit button, make the first button - // active. We need to do this, otherwise the URL will not contain the - // name of the submit button. - firstSubmitButton->setActivatedSubmit(true); - } - Vector<char> encodedString; - String encoding; - bool hasElement = HasSuitableTextElement(formElement.get(), &encodedString, &encoding); - if (firstSubmitButton) - firstSubmitButton->setActivatedSubmit(false); - if (!hasElement) { - // Not a searchable form. - return; - } - - String action(formElement->action()); - KURL url(frame->loader()->completeURL(action.isNull() ? "" : action)); - RefPtr<FormData> formData = FormData::create(encodedString); - url.setQuery(formData->flattenToString()); - m_url = url; - m_encoding = encoding; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebSecurityOrigin.cpp b/webkit/api/src/WebSecurityOrigin.cpp deleted file mode 100644 index 2adf3db..0000000 --- a/webkit/api/src/WebSecurityOrigin.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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 "WebSecurityOrigin.h" - -#include "SecurityOrigin.h" -#include "WebString.h" -#include <wtf/PassRefPtr.h> - -using namespace WebCore; - -namespace WebKit { - -class WebSecurityOriginPrivate : public SecurityOrigin { -}; - -void WebSecurityOrigin::reset() -{ - assign(0); -} - -void WebSecurityOrigin::assign(const WebSecurityOrigin& other) -{ - WebSecurityOriginPrivate* p = const_cast<WebSecurityOriginPrivate*>(other.m_private); - if (p) - p->ref(); - assign(p); -} - -WebString WebSecurityOrigin::protocol() const -{ - ASSERT(m_private); - return m_private->protocol(); -} - -WebString WebSecurityOrigin::host() const -{ - ASSERT(m_private); - return m_private->host(); -} - -unsigned short WebSecurityOrigin::port() const -{ - ASSERT(m_private); - return m_private->port(); -} - -bool WebSecurityOrigin::isEmpty() const -{ - ASSERT(m_private); - return m_private->isEmpty(); -} - -WebString WebSecurityOrigin::toString() const -{ - // FIXME: We should not support calling this method when m_private is null. - if (m_private) - return m_private->toString(); - - return WebString::fromUTF8("null"); -} - -WebString WebSecurityOrigin::databaseIdentifier() -{ - // FIXME: We should not support calling this method when m_private is null. - if (m_private) - return m_private->databaseIdentifier(); - - return WebString::fromUTF8("null"); -} - -WebSecurityOrigin::WebSecurityOrigin(const WTF::PassRefPtr<WebCore::SecurityOrigin>& origin) - : m_private(static_cast<WebSecurityOriginPrivate*>(origin.releaseRef())) -{ -} - -WebSecurityOrigin& WebSecurityOrigin::operator=(const WTF::PassRefPtr<WebCore::SecurityOrigin>& origin) -{ - assign(static_cast<WebSecurityOriginPrivate*>(origin.releaseRef())); - return *this; -} - -WebSecurityOrigin::operator WTF::PassRefPtr<WebCore::SecurityOrigin>() const -{ - return PassRefPtr<SecurityOrigin>(const_cast<WebSecurityOriginPrivate*>(m_private)); -} - -void WebSecurityOrigin::assign(WebSecurityOriginPrivate* p) -{ - // p is already ref'd for us by the caller - if (m_private) - m_private->deref(); - m_private = p; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebSecurityPolicy.cpp b/webkit/api/src/WebSecurityPolicy.cpp deleted file mode 100755 index c66c805..0000000 --- a/webkit/api/src/WebSecurityPolicy.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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 "WebSecurityPolicy.h" - -#include "FrameLoader.h" -#include "SecurityOrigin.h" - -#include "WebString.h" -#include "WebURL.h" - -using namespace WebCore; - -namespace WebKit { - -void WebSecurityPolicy::registerURLSchemeAsLocal(const WebString& scheme) -{ - SecurityOrigin::registerURLSchemeAsLocal(scheme); -} - -void WebSecurityPolicy::registerURLSchemeAsNoAccess(const WebString& scheme) -{ - SecurityOrigin::registerURLSchemeAsNoAccess(scheme); -} - -void WebSecurityPolicy::whiteListAccessFromOrigin(const WebURL& sourceOrigin, - const WebString& destinationProtocol, - const WebString& destinationHost, - bool allowDestinationSubdomains) -{ - SecurityOrigin::whiteListAccessFromOrigin( - *SecurityOrigin::create(sourceOrigin), destinationProtocol, - destinationHost, allowDestinationSubdomains); -} - -void WebSecurityPolicy::resetOriginAccessWhiteLists() -{ - SecurityOrigin::resetOriginAccessWhiteLists(); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebSettingsImpl.cpp b/webkit/api/src/WebSettingsImpl.cpp deleted file mode 100644 index cc5c567..0000000 --- a/webkit/api/src/WebSettingsImpl.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* - * 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 "WebSettingsImpl.h" - -#include "FontRenderingMode.h" -#include "Settings.h" -#include "WebString.h" -#include "WebURL.h" - -#if defined(OS_WIN) -#include "RenderThemeChromiumWin.h" -#endif - -using namespace WebCore; - -namespace WebKit { - -WebSettingsImpl::WebSettingsImpl(Settings* settings) - : m_settings(settings) -{ - ASSERT(settings); -} - -void WebSettingsImpl::setStandardFontFamily(const WebString& font) -{ - m_settings->setStandardFontFamily(font); -} - -void WebSettingsImpl::setFixedFontFamily(const WebString& font) -{ - m_settings->setFixedFontFamily((String)font); -} - -void WebSettingsImpl::setSerifFontFamily(const WebString& font) -{ - m_settings->setSerifFontFamily((String)font); -} - -void WebSettingsImpl::setSansSerifFontFamily(const WebString& font) -{ - m_settings->setSansSerifFontFamily((String)font); -} - -void WebSettingsImpl::setCursiveFontFamily(const WebString& font) -{ - m_settings->setCursiveFontFamily((String)font); -} - -void WebSettingsImpl::setFantasyFontFamily(const WebString& font) -{ - m_settings->setFantasyFontFamily((String)font); -} - -void WebSettingsImpl::setDefaultFontSize(int size) -{ - m_settings->setDefaultFontSize(size); -#if defined(OS_WIN) - // RenderTheme is a singleton that needs to know the default font size to - // draw some form controls. We let it know each time the size changes. - WebCore::RenderThemeChromiumWin::setDefaultFontSize(size); -#endif -} - -void WebSettingsImpl::setDefaultFixedFontSize(int size) -{ - m_settings->setDefaultFixedFontSize(size); -} - -void WebSettingsImpl::setMinimumFontSize(int size) -{ - m_settings->setMinimumFontSize(size); -} - -void WebSettingsImpl::setMinimumLogicalFontSize(int size) -{ - m_settings->setMinimumLogicalFontSize(size); -} - -void WebSettingsImpl::setDefaultTextEncodingName(const WebString& encoding) -{ - m_settings->setDefaultTextEncodingName((String)encoding); -} - -void WebSettingsImpl::setJavaScriptEnabled(bool enabled) -{ - m_settings->setJavaScriptEnabled(enabled); -} - -void WebSettingsImpl::setWebSecurityEnabled(bool enabled) -{ - m_settings->setWebSecurityEnabled(enabled); -} - -void WebSettingsImpl::setJavaScriptCanOpenWindowsAutomatically(bool canOpenWindows) -{ - m_settings->setJavaScriptCanOpenWindowsAutomatically(canOpenWindows); -} - -void WebSettingsImpl::setLoadsImagesAutomatically(bool loadsImagesAutomatically) -{ - m_settings->setLoadsImagesAutomatically(loadsImagesAutomatically); -} - -void WebSettingsImpl::setPluginsEnabled(bool enabled) -{ - m_settings->setPluginsEnabled(enabled); -} - -void WebSettingsImpl::setDOMPasteAllowed(bool enabled) -{ - m_settings->setDOMPasteAllowed(enabled); -} - -void WebSettingsImpl::setDeveloperExtrasEnabled(bool enabled) -{ - m_settings->setDeveloperExtrasEnabled(enabled); -} - -void WebSettingsImpl::setShrinksStandaloneImagesToFit(bool shrinkImages) -{ - m_settings->setShrinksStandaloneImagesToFit(shrinkImages); -} - -void WebSettingsImpl::setUsesEncodingDetector(bool usesDetector) -{ - m_settings->setUsesEncodingDetector(usesDetector); -} - -void WebSettingsImpl::setTextAreasAreResizable(bool areResizable) -{ - m_settings->setTextAreasAreResizable(areResizable); -} - -void WebSettingsImpl::setJavaEnabled(bool enabled) -{ - m_settings->setJavaEnabled(enabled); -} - -void WebSettingsImpl::setAllowScriptsToCloseWindows(bool allow) -{ - m_settings->setAllowScriptsToCloseWindows(allow); -} - -void WebSettingsImpl::setUserStyleSheetLocation(const WebURL& location) -{ - m_settings->setUserStyleSheetLocation(location); -} - -void WebSettingsImpl::setUsesPageCache(bool usesPageCache) -{ - m_settings->setUsesPageCache(usesPageCache); -} - -void WebSettingsImpl::setDownloadableBinaryFontsEnabled(bool enabled) -{ - m_settings->setDownloadableBinaryFontsEnabled(enabled); -} - -void WebSettingsImpl::setXSSAuditorEnabled(bool enabled) -{ - m_settings->setXSSAuditorEnabled(enabled); -} - -void WebSettingsImpl::setLocalStorageEnabled(bool enabled) -{ - m_settings->setLocalStorageEnabled(enabled); -} - -void WebSettingsImpl::setEditableLinkBehaviorNeverLive() -{ - // FIXME: If you ever need more behaviors than this, then we should probably - // define an enum in WebSettings.h and have a switch statement that - // translates. Until then, this is probably fine, though. - m_settings->setEditableLinkBehavior(WebCore::EditableLinkNeverLive); -} - -void WebSettingsImpl::setFontRenderingModeNormal() -{ - // FIXME: If you ever need more behaviors than this, then we should probably - // define an enum in WebSettings.h and have a switch statement that - // translates. Until then, this is probably fine, though. - m_settings->setFontRenderingMode(WebCore::NormalRenderingMode); -} - -void WebSettingsImpl::setShouldPaintCustomScrollbars(bool enabled) -{ - m_settings->setShouldPaintCustomScrollbars(enabled); -} - -void WebSettingsImpl::setDatabasesEnabled(bool enabled) -{ - m_settings->setDatabasesEnabled(enabled); -} - -void WebSettingsImpl::setAllowUniversalAccessFromFileURLs(bool allow) -{ - m_settings->setAllowUniversalAccessFromFileURLs(allow); -} - -void WebSettingsImpl::setTextDirectionSubmenuInclusionBehaviorNeverIncluded() -{ - // FIXME: If you ever need more behaviors than this, then we should probably - // define an enum in WebSettings.h and have a switch statement that - // translates. Until then, this is probably fine, though. - m_settings->setTextDirectionSubmenuInclusionBehavior(WebCore::TextDirectionSubmenuNeverIncluded); -} - -void WebSettingsImpl::setOfflineWebApplicationCacheEnabled(bool enabled) -{ - m_settings->setOfflineWebApplicationCacheEnabled(enabled); -} - -void WebSettingsImpl::setExperimentalWebGLEnabled(bool enabled) -{ - m_settings->setWebGLEnabled(enabled); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebSettingsImpl.h b/webkit/api/src/WebSettingsImpl.h deleted file mode 100644 index 01eb631..0000000 --- a/webkit/api/src/WebSettingsImpl.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSettingsImpl_h -#define WebSettingsImpl_h - -// TODO(jorlow): Remove this hack once WebView is free of glue. -#include "../public/WebSettings.h" - -namespace WebCore { -class Settings; -} - -namespace WebKit { - -class WebSettingsImpl : public WebSettings { -public: - explicit WebSettingsImpl(WebCore::Settings*); - virtual ~WebSettingsImpl() { } - - virtual void setStandardFontFamily(const WebString&); - virtual void setFixedFontFamily(const WebString&); - virtual void setSerifFontFamily(const WebString&); - virtual void setSansSerifFontFamily(const WebString&); - virtual void setCursiveFontFamily(const WebString&); - virtual void setFantasyFontFamily(const WebString&); - virtual void setDefaultFontSize(int); - virtual void setDefaultFixedFontSize(int); - virtual void setMinimumFontSize(int); - virtual void setMinimumLogicalFontSize(int); - virtual void setDefaultTextEncodingName(const WebString&); - virtual void setJavaScriptEnabled(bool); - virtual void setWebSecurityEnabled(bool); - virtual void setJavaScriptCanOpenWindowsAutomatically(bool); - virtual void setLoadsImagesAutomatically(bool); - virtual void setPluginsEnabled(bool); - virtual void setDOMPasteAllowed(bool); - virtual void setDeveloperExtrasEnabled(bool); - virtual void setShrinksStandaloneImagesToFit(bool); - virtual void setUsesEncodingDetector(bool); - virtual void setTextAreasAreResizable(bool); - virtual void setJavaEnabled(bool); - virtual void setAllowScriptsToCloseWindows(bool); - virtual void setUserStyleSheetLocation(const WebURL&); - virtual void setUsesPageCache(bool); - virtual void setDownloadableBinaryFontsEnabled(bool); - virtual void setXSSAuditorEnabled(bool); - virtual void setLocalStorageEnabled(bool); - virtual void setEditableLinkBehaviorNeverLive(); - virtual void setFontRenderingModeNormal(); - virtual void setShouldPaintCustomScrollbars(bool); - virtual void setDatabasesEnabled(bool); - virtual void setAllowUniversalAccessFromFileURLs(bool); - virtual void setTextDirectionSubmenuInclusionBehaviorNeverIncluded(); - virtual void setOfflineWebApplicationCacheEnabled(bool); - virtual void setExperimentalWebGLEnabled(bool); - -private: - WebCore::Settings* m_settings; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebSharedWorkerImpl.cpp b/webkit/api/src/WebSharedWorkerImpl.cpp deleted file mode 100644 index 4547336..0000000 --- a/webkit/api/src/WebSharedWorkerImpl.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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 "WebSharedWorkerImpl.h" - -#include "GenericWorkerTask.h" -#include "KURL.h" -#include "MessageEvent.h" -#include "MessagePortChannel.h" -#include "PlatformMessagePortChannel.h" -#include "ScriptExecutionContext.h" -#include "SharedWorkerContext.h" -#include "SharedWorkerThread.h" - -#include "WebMessagePortChannel.h" -#include "WebString.h" -#include "WebURL.h" - -using namespace WebCore; - -namespace WebKit { - -#if ENABLE(SHARED_WORKERS) - -WebSharedWorkerImpl::WebSharedWorkerImpl(WebCommonWorkerClient* client) - : m_client(client) -{ -} - -WebSharedWorkerImpl::~WebSharedWorkerImpl() -{ -} - -bool WebSharedWorkerImpl::isStarted() -{ - // Should not ever be called from the worker thread (this API is only called on WebSharedWorkerProxy on the renderer thread). - ASSERT_NOT_REACHED(); - return workerThread(); -} - -void WebSharedWorkerImpl::connect(WebMessagePortChannel* webChannel, ConnectListener* listener) -{ - // Convert the WebMessagePortChanel to a WebCore::MessagePortChannel. - RefPtr<PlatformMessagePortChannel> platform_channel = - PlatformMessagePortChannel::create(webChannel); - webChannel->setClient(platform_channel.get()); - OwnPtr<MessagePortChannel> channel = - MessagePortChannel::create(platform_channel); - - workerThread()->runLoop().postTask( - createCallbackTask(&connectTask, this, channel.release())); - if (listener) - listener->connected(); -} - -void WebSharedWorkerImpl::connectTask(ScriptExecutionContext* context, WebSharedWorkerImpl* worker, PassOwnPtr<MessagePortChannel> channel) -{ - // Wrap the passed-in channel in a MessagePort, and send it off via a connect event. - RefPtr<MessagePort> port = MessagePort::create(*context); - port->entangle(channel.release()); - ASSERT(context->isWorkerContext()); - WorkerContext* workerContext = static_cast<WorkerContext*>(context); - ASSERT(workerContext->isSharedWorkerContext()); - workerContext->toSharedWorkerContext()->dispatchEvent(createConnectEvent(port)); -} - -void WebSharedWorkerImpl::startWorkerContext(const WebURL& url, const WebString& name, const WebString& userAgent, const WebString& sourceCode) -{ - initializeLoader(url); - setWorkerThread(SharedWorkerThread::create(name, url, userAgent, sourceCode, *this, *this)); - workerThread()->start(); -} - -void WebSharedWorkerImpl::terminateWorkerContext() -{ - stopWorkerThread(); -} - -void WebSharedWorkerImpl::clientDestroyed() -{ - m_client = 0; -} - -WebWorkerClient* WebSharedWorkerImpl::client() -{ - // We should never be asked for a WebWorkerClient (only dedicated workers have an associated WebWorkerClient). - // It should not be possible for SharedWorkerContext to generate an API call outside those supported by WebCommonWorkerClient. - ASSERT_NOT_REACHED(); - return 0; -} - -WebSharedWorker* WebSharedWorker::create(WebCommonWorkerClient* client) -{ - return new WebSharedWorkerImpl(client); -} - -#endif // ENABLE(SHARED_WORKERS) - -} // namespace WebKit diff --git a/webkit/api/src/WebSharedWorkerImpl.h b/webkit/api/src/WebSharedWorkerImpl.h deleted file mode 100644 index 7c10d76..0000000 --- a/webkit/api/src/WebSharedWorkerImpl.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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. - */ - -#ifndef WebSharedWorkerImpl_h -#define WebSharedWorkerImpl_h - -#include "WebSharedWorker.h" - -#if ENABLE(SHARED_WORKERS) - -#include "ScriptExecutionContext.h" - -#include "WebWorkerBase.h" - -namespace WebKit { - -// This class is used by the worker process code to talk to the WebCore::SharedWorker implementation. -// It can't use it directly since it uses WebKit types, so this class converts the data types. -// When the WebCore::SharedWorker object wants to call WebCore::WorkerReportingProxy, this class will -// convert to Chrome data types first and then call the supplied WebCommonWorkerClient. -class WebSharedWorkerImpl : public WebWorkerBase, public WebSharedWorker { -public: - explicit WebSharedWorkerImpl(WebCommonWorkerClient* client); - - // WebSharedWorker methods: - virtual bool isStarted(); - virtual void startWorkerContext(const WebURL&, const WebString& name, const WebString& userAgent, const WebString& sourceCode); - virtual void connect(WebMessagePortChannel*, ConnectListener*); - virtual void terminateWorkerContext(); - virtual void clientDestroyed(); - - // WebWorkerBase methods: - WebWorkerClient* client(); - WebCommonWorkerClient* commonClient() { return m_client; } - -private: - virtual ~WebSharedWorkerImpl(); - - static void connectTask(WebCore::ScriptExecutionContext*, WebSharedWorkerImpl*, PassOwnPtr<WebCore::MessagePortChannel>); - - WebCommonWorkerClient* m_client; -}; - -} // namespace WebKit - -#endif // ENABLE(SHARED_WORKERS) - -#endif diff --git a/webkit/api/src/WebStorageAreaImpl.cpp b/webkit/api/src/WebStorageAreaImpl.cpp deleted file mode 100644 index f24bee3..0000000 --- a/webkit/api/src/WebStorageAreaImpl.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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 "WebStorageAreaImpl.h" - -#if ENABLE(DOM_STORAGE) - -#include "ExceptionCode.h" - -#include "WebString.h" -#include "WebURL.h" - -namespace WebKit { - -const WebURL* WebStorageAreaImpl::storageEventURL = 0; - -WebStorageAreaImpl::WebStorageAreaImpl(PassRefPtr<WebCore::StorageArea> storageArea) - : m_storageArea(storageArea) -{ -} - -WebStorageAreaImpl::~WebStorageAreaImpl() -{ -} - -unsigned WebStorageAreaImpl::length() -{ - return m_storageArea->length(); -} - -WebString WebStorageAreaImpl::key(unsigned index) -{ - return m_storageArea->key(index); -} - -WebString WebStorageAreaImpl::getItem(const WebString& key) -{ - return m_storageArea->getItem(key); -} - -void WebStorageAreaImpl::setItem(const WebString& key, const WebString& value, const WebURL& url, bool& quotaException) -{ - int exceptionCode = 0; - - ScopedStorageEventURL scope(url); - m_storageArea->setItem(key, value, exceptionCode, 0); - - if (exceptionCode) { - ASSERT(exceptionCode == WebCore::QUOTA_EXCEEDED_ERR); - quotaException = true; - } else - quotaException = false; -} - -void WebStorageAreaImpl::removeItem(const WebString& key, const WebURL& url) -{ - ScopedStorageEventURL scope(url); - m_storageArea->removeItem(key, 0); -} - -void WebStorageAreaImpl::clear(const WebURL& url) -{ - ScopedStorageEventURL scope(url); - m_storageArea->clear(0); -} - -} // namespace WebKit - -#endif // ENABLE(DOM_STORAGE) diff --git a/webkit/api/src/WebStorageAreaImpl.h b/webkit/api/src/WebStorageAreaImpl.h deleted file mode 100644 index e1f74e0..0000000 --- a/webkit/api/src/WebStorageAreaImpl.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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. - */ - -#ifndef WebStorageAreaImpl_h -#define WebStorageAreaImpl_h - -#if ENABLE(DOM_STORAGE) - -#include "StorageAreaImpl.h" -#include "WebStorageArea.h" - -namespace WebKit { - -class WebStorageAreaImpl : public WebStorageArea { -public: - WebStorageAreaImpl(PassRefPtr<WebCore::StorageArea> storageArea); - virtual ~WebStorageAreaImpl(); - virtual unsigned length(); - virtual WebString key(unsigned index); - virtual WebString getItem(const WebString& key); - virtual void setItem(const WebString& key, const WebString& value, const WebURL& url, bool& quotaException); - virtual void removeItem(const WebString& key, const WebURL& url); - virtual void clear(const WebURL& url); - - // For storage events in single-process mode and test shell. - static const WebURL* currentStorageEventURL() { return storageEventURL; } - -private: - class ScopedStorageEventURL { - public: - ScopedStorageEventURL(const WebURL& url) - { - // FIXME: Once storage events are fired async in WebKit (as they should - // be) this can be ASSERTed to be 0 rather than saved. - m_existingStorageEventURL = storageEventURL; - storageEventURL = &url; - } - ~ScopedStorageEventURL() - { - storageEventURL = m_existingStorageEventURL; - } - - private: - const WebURL* m_existingStorageEventURL; - }; - - static const WebURL* storageEventURL; - - RefPtr<WebCore::StorageArea> m_storageArea; -}; - -} // namespace WebKit - -#endif // ENABLE(DOM_STORAGE) - -#endif // WebStorageAreaImpl_h diff --git a/webkit/api/src/WebStorageEventDispatcherImpl.cpp b/webkit/api/src/WebStorageEventDispatcherImpl.cpp deleted file mode 100644 index 515a423..0000000 --- a/webkit/api/src/WebStorageEventDispatcherImpl.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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 "WebStorageEventDispatcherImpl.h" - -#if ENABLE(DOM_STORAGE) - -#include "KURL.h" -#include "SecurityOrigin.h" - -#include "WebStorageAreaImpl.h" -#include "WebURL.h" - -namespace WebKit { - -extern const char* pageGroupName; - -WebStorageEventDispatcher* WebStorageEventDispatcher::create() -{ - return new WebStorageEventDispatcherImpl(); -} - -WebStorageEventDispatcherImpl::WebStorageEventDispatcherImpl() - : m_eventDispatcher(new WebCore::StorageEventDispatcherImpl(pageGroupName)) -{ - ASSERT(m_eventDispatcher); -} - -void WebStorageEventDispatcherImpl::dispatchStorageEvent(const WebString& key, const WebString& oldValue, - const WebString& newValue, const WebString& origin, - const WebURL& passedInURL, bool isLocalStorage) -{ - // Hack for single-process mode and test shell. - const WebURL* storageAreaImplURL = WebStorageAreaImpl::currentStorageEventURL(); - const WebURL& url = storageAreaImplURL ? *storageAreaImplURL : passedInURL; - - WebCore::StorageType storageType = isLocalStorage ? WebCore::LocalStorage : WebCore::SessionStorage; - RefPtr<WebCore::SecurityOrigin> securityOrigin = WebCore::SecurityOrigin::createFromString(origin); - m_eventDispatcher->dispatchStorageEvent(key, oldValue, newValue, securityOrigin.get(), url, storageType); -} - -} // namespace WebKit - -#endif // ENABLE(DOM_STORAGE) diff --git a/webkit/api/src/WebStorageEventDispatcherImpl.h b/webkit/api/src/WebStorageEventDispatcherImpl.h deleted file mode 100644 index 6848b999..0000000 --- a/webkit/api/src/WebStorageEventDispatcherImpl.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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. - */ - -#ifndef WebStorageEventDispatcherImpl_h -#define WebStorageEventDispatcherImpl_h - -#if ENABLE(DOM_STORAGE) - -#include "StorageEventDispatcherImpl.h" -#include "WebStorageEventDispatcher.h" -#include <wtf/OwnPtr.h> - -namespace WebKit { - -class WebStorageEventDispatcherImpl : public WebStorageEventDispatcher { -public: - WebStorageEventDispatcherImpl(); - - virtual void dispatchStorageEvent(const WebString& key, const WebString& oldValue, - const WebString& newValue, const WebString& origin, - const WebURL&, bool isLocalStorage); - -private: - OwnPtr<WebCore::StorageEventDispatcherImpl> m_eventDispatcher; -}; - -} // namespace WebKit - -#endif // ENABLE(DOM_STORAGE) - -#endif // WebStorageEventDispatcherImpl_h diff --git a/webkit/api/src/WebStorageNamespaceImpl.cpp b/webkit/api/src/WebStorageNamespaceImpl.cpp deleted file mode 100644 index 94cb9b5..0000000 --- a/webkit/api/src/WebStorageNamespaceImpl.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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 "WebStorageNamespaceImpl.h" - -#if ENABLE(DOM_STORAGE) - -#include "SecurityOrigin.h" - -#include "WebStorageAreaImpl.h" -#include "WebString.h" - -namespace WebKit { - -WebStorageNamespace* WebStorageNamespace::createLocalStorageNamespace(const WebString& path, unsigned quota) -{ - return new WebStorageNamespaceImpl(WebCore::StorageNamespaceImpl::localStorageNamespace(path, quota)); -} - -WebStorageNamespace* WebStorageNamespace::createSessionStorageNamespace() -{ - return new WebStorageNamespaceImpl(WebCore::StorageNamespaceImpl::sessionStorageNamespace()); -} - -WebStorageNamespaceImpl::WebStorageNamespaceImpl(PassRefPtr<WebCore::StorageNamespace> storageNamespace) - : m_storageNamespace(storageNamespace) -{ -} - -WebStorageNamespaceImpl::~WebStorageNamespaceImpl() -{ -} - -WebStorageArea* WebStorageNamespaceImpl::createStorageArea(const WebString& originString) -{ - RefPtr<WebCore::SecurityOrigin> origin = WebCore::SecurityOrigin::createFromString(originString); - return new WebStorageAreaImpl(m_storageNamespace->storageArea(origin.release())); -} - -WebStorageNamespace* WebStorageNamespaceImpl::copy() -{ - return new WebStorageNamespaceImpl(m_storageNamespace->copy()); -} - -void WebStorageNamespaceImpl::close() -{ - m_storageNamespace->close(); -} - -} // namespace WebKit - -#endif // ENABLE(DOM_STORAGE) diff --git a/webkit/api/src/WebStorageNamespaceImpl.h b/webkit/api/src/WebStorageNamespaceImpl.h deleted file mode 100644 index 4e82c21..0000000 --- a/webkit/api/src/WebStorageNamespaceImpl.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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. - */ - -#ifndef WebStorageNamespaceImpl_h -#define WebStorageNamespaceImpl_h - -#if ENABLE(DOM_STORAGE) - -#include "StorageNamespaceImpl.h" -#include "WebStorageNamespace.h" - -namespace WebKit { - -class WebStorageNamespaceImpl : public WebStorageNamespace { -public: - WebStorageNamespaceImpl(PassRefPtr<WebCore::StorageNamespace> storageNamespace); - virtual ~WebStorageNamespaceImpl(); - virtual WebStorageArea* createStorageArea(const WebString& origin); - virtual WebStorageNamespace* copy(); - virtual void close(); - -private: - RefPtr<WebCore::StorageNamespace> m_storageNamespace; -}; - -} // namespace WebKit - -#endif // ENABLE(DOM_STORAGE) - -#endif // WebStorageNamespaceImpl_h diff --git a/webkit/api/src/WebString.cpp b/webkit/api/src/WebString.cpp deleted file mode 100644 index f45e05f..0000000 --- a/webkit/api/src/WebString.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* - * 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 "WebString.h" - -#include "AtomicString.h" -#include "CString.h" -#include "PlatformString.h" - -#include "WebCString.h" - -namespace WebKit { - -class WebStringPrivate : public WebCore::StringImpl { -}; - -void WebString::reset() -{ - if (m_private) { - m_private->deref(); - m_private = 0; - } -} - -void WebString::assign(const WebString& other) -{ - assign(const_cast<WebStringPrivate*>(other.m_private)); -} - -void WebString::assign(const WebUChar* data, size_t length) -{ - assign(static_cast<WebStringPrivate*>( - WebCore::StringImpl::create(data, length).get())); -} - -size_t WebString::length() const -{ - return m_private ? const_cast<WebStringPrivate*>(m_private)->length() : 0; -} - -const WebUChar* WebString::data() const -{ - return m_private ? const_cast<WebStringPrivate*>(m_private)->characters() : 0; -} - -WebCString WebString::utf8() const -{ - return WebCore::String(m_private).utf8(); -} - -WebString WebString::fromUTF8(const char* data, size_t length) -{ - return WebCore::String::fromUTF8(data, length); -} - -WebString WebString::fromUTF8(const char* data) -{ - return WebCore::String::fromUTF8(data); -} - -WebString::WebString(const WebCore::String& s) - : m_private(static_cast<WebStringPrivate*>(s.impl())) -{ - if (m_private) - m_private->ref(); -} - -WebString& WebString::operator=(const WebCore::String& s) -{ - assign(static_cast<WebStringPrivate*>(s.impl())); - return *this; -} - -WebString::operator WebCore::String() const -{ - return m_private; -} - -WebString::WebString(const WebCore::AtomicString& s) - : m_private(0) -{ - assign(s.string()); -} - -WebString& WebString::operator=(const WebCore::AtomicString& s) -{ - assign(s.string()); - return *this; -} - -WebString::operator WebCore::AtomicString() const -{ - return WebCore::AtomicString(static_cast<WebCore::StringImpl *>(m_private)); -} - -void WebString::assign(WebStringPrivate* 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/api/src/WebURL.cpp b/webkit/api/src/WebURL.cpp deleted file mode 100644 index feb92c1..0000000 --- a/webkit/api/src/WebURL.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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 "WebURL.h" - -#include "KURL.h" - -namespace WebKit { - -WebURL::WebURL(const WebCore::KURL& url) - : m_spec(url.utf8String()) - , m_parsed(url.parsed()) - , m_isValid(url.isValid()) -{ -} - -WebURL& WebURL::operator=(const WebCore::KURL& url) -{ - m_spec = url.utf8String(); - m_parsed = url.parsed(); - m_isValid = url.isValid(); - return *this; -} - -WebURL::operator WebCore::KURL() const -{ - return WebCore::KURL(m_spec, m_parsed, m_isValid); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebURLError.cpp b/webkit/api/src/WebURLError.cpp deleted file mode 100644 index a038aee..0000000 --- a/webkit/api/src/WebURLError.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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 "WebURLError.h" - -#include "CString.h" -#include "KURL.h" -#include "ResourceError.h" - -using namespace WebCore; - -namespace WebKit { - -WebURLError::WebURLError(const ResourceError& error) -{ - *this = error; -} - -WebURLError& WebURLError::operator=(const ResourceError& error) -{ - if (error.isNull()) - *this = WebURLError(); - else { - domain = error.domain(); - reason = error.errorCode(); - unreachableURL = KURL(ParsedURLString, error.failingURL()); - } - return *this; -} - -WebURLError::operator ResourceError() const -{ - if (!reason) - return ResourceError(); - CString spec = unreachableURL.spec(); - return ResourceError(domain, reason, - String::fromUTF8(spec.data(), spec.length()), - String()); -} - -} // namespace WebKit diff --git a/webkit/api/src/WebURLRequest.cpp b/webkit/api/src/WebURLRequest.cpp deleted file mode 100644 index 46fa842..0000000 --- a/webkit/api/src/WebURLRequest.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/* - * 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 "WebURLRequest.h" - -#include "ResourceRequest.h" - -#include "WebHTTPBody.h" -#include "WebHTTPHeaderVisitor.h" -#include "WebURL.h" -#include "WebURLRequestPrivate.h" - -using namespace WebCore; - -namespace WebKit { - -// The standard implementation of WebURLRequestPrivate, which maintains -// ownership of a ResourceRequest instance. -class WebURLRequestPrivateImpl : public WebURLRequestPrivate { -public: - WebURLRequestPrivateImpl() - { - m_resourceRequest = &m_resourceRequestAllocation; - } - - WebURLRequestPrivateImpl(const WebURLRequestPrivate* p) - : m_resourceRequestAllocation(*p->m_resourceRequest) - { - m_resourceRequest = &m_resourceRequestAllocation; - } - - virtual void dispose() { delete this; } - - ResourceRequest m_resourceRequestAllocation; -}; - -void WebURLRequest::initialize() -{ - assign(new WebURLRequestPrivateImpl()); -} - -void WebURLRequest::reset() -{ - assign(0); -} - -void WebURLRequest::assign(const WebURLRequest& r) -{ - if (&r != this) - assign(r.m_private ? new WebURLRequestPrivateImpl(r.m_private) : 0); -} - -bool WebURLRequest::isNull() const -{ - return !m_private || m_private->m_resourceRequest->isNull(); -} - -WebURL WebURLRequest::url() const -{ - return m_private->m_resourceRequest->url(); -} - -void WebURLRequest::setURL(const WebURL& url) -{ - m_private->m_resourceRequest->setURL(url); -} - -WebURL WebURLRequest::firstPartyForCookies() const -{ - return m_private->m_resourceRequest->firstPartyForCookies(); -} - -void WebURLRequest::setFirstPartyForCookies(const WebURL& firstPartyForCookies) -{ - m_private->m_resourceRequest->setFirstPartyForCookies(firstPartyForCookies); -} - -bool WebURLRequest::allowCookies() const -{ - return m_private->m_resourceRequest->allowCookies(); -} - -void WebURLRequest::setAllowCookies(bool allowCookies) -{ - m_private->m_resourceRequest->setAllowCookies(allowCookies); -} - -bool WebURLRequest::allowStoredCredentials() const -{ - return m_private->m_allowStoredCredentials; -} - -void WebURLRequest::setAllowStoredCredentials(bool allowStoredCredentials) -{ - m_private->m_allowStoredCredentials = allowStoredCredentials; -} - -WebURLRequest::CachePolicy WebURLRequest::cachePolicy() const -{ - return static_cast<WebURLRequest::CachePolicy>( - m_private->m_resourceRequest->cachePolicy()); -} - -void WebURLRequest::setCachePolicy(CachePolicy cachePolicy) -{ - m_private->m_resourceRequest->setCachePolicy( - static_cast<ResourceRequestCachePolicy>(cachePolicy)); -} - -WebString WebURLRequest::httpMethod() const -{ - return m_private->m_resourceRequest->httpMethod(); -} - -void WebURLRequest::setHTTPMethod(const WebString& httpMethod) -{ - m_private->m_resourceRequest->setHTTPMethod(httpMethod); -} - -WebString WebURLRequest::httpHeaderField(const WebString& name) const -{ - return m_private->m_resourceRequest->httpHeaderField(name); -} - -void WebURLRequest::setHTTPHeaderField(const WebString& name, const WebString& value) -{ - m_private->m_resourceRequest->setHTTPHeaderField(name, value); -} - -void WebURLRequest::addHTTPHeaderField(const WebString& name, const WebString& value) -{ - m_private->m_resourceRequest->addHTTPHeaderField(name, value); -} - -void WebURLRequest::clearHTTPHeaderField(const WebString& name) -{ - // FIXME: Add a clearHTTPHeaderField method to ResourceRequest. - const HTTPHeaderMap& map = m_private->m_resourceRequest->httpHeaderFields(); - const_cast<HTTPHeaderMap*>(&map)->remove(name); -} - -void WebURLRequest::visitHTTPHeaderFields(WebHTTPHeaderVisitor* visitor) const -{ - const HTTPHeaderMap& map = m_private->m_resourceRequest->httpHeaderFields(); - for (HTTPHeaderMap::const_iterator it = map.begin(); it != map.end(); ++it) - visitor->visitHeader(it->first, it->second); -} - -WebHTTPBody WebURLRequest::httpBody() const -{ - return WebHTTPBody(m_private->m_resourceRequest->httpBody()); -} - -void WebURLRequest::setHTTPBody(const WebHTTPBody& httpBody) -{ - m_private->m_resourceRequest->setHTTPBody(httpBody); -} - -bool WebURLRequest::reportUploadProgress() const -{ - return m_private->m_resourceRequest->reportUploadProgress(); -} - -void WebURLRequest::setReportUploadProgress(bool reportUploadProgress) -{ - m_private->m_resourceRequest->setReportUploadProgress(reportUploadProgress); -} - -WebURLRequest::TargetType WebURLRequest::targetType() const -{ - return static_cast<TargetType>(m_private->m_resourceRequest->targetType()); -} - -void WebURLRequest::setTargetType(TargetType targetType) -{ - m_private->m_resourceRequest->setTargetType( - static_cast<ResourceRequest::TargetType>(targetType)); -} - -int WebURLRequest::requestorID() const -{ - return m_private->m_resourceRequest->requestorID(); -} - -void WebURLRequest::setRequestorID(int requestorID) -{ - m_private->m_resourceRequest->setRequestorID(requestorID); -} - -int WebURLRequest::requestorProcessID() const -{ - return m_private->m_resourceRequest->requestorProcessID(); -} - -void WebURLRequest::setRequestorProcessID(int requestorProcessID) -{ - m_private->m_resourceRequest->setRequestorProcessID(requestorProcessID); -} - -int WebURLRequest::appCacheHostID() const -{ - return m_private->m_resourceRequest->appCacheHostID(); -} - -void WebURLRequest::setAppCacheHostID(int appCacheHostID) -{ - m_private->m_resourceRequest->setAppCacheHostID(appCacheHostID); -} - -ResourceRequest& WebURLRequest::toMutableResourceRequest() -{ - ASSERT(m_private); - ASSERT(m_private->m_resourceRequest); - - return *m_private->m_resourceRequest; -} - -const ResourceRequest& WebURLRequest::toResourceRequest() const -{ - ASSERT(m_private); - ASSERT(m_private->m_resourceRequest); - - return *m_private->m_resourceRequest; -} - -void WebURLRequest::assign(WebURLRequestPrivate* p) -{ - // Subclasses may call this directly so a self-assignment check is needed - // here as well as in the public assign method. - if (m_private == p) - return; - if (m_private) - m_private->dispose(); - m_private = p; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebURLRequestPrivate.h b/webkit/api/src/WebURLRequestPrivate.h deleted file mode 100644 index 2f7c25f..0000000 --- a/webkit/api/src/WebURLRequestPrivate.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURLRequestPrivate_h -#define WebURLRequestPrivate_h - -namespace WebCore { class ResourceRequest; } - -namespace WebKit { - -class WebURLRequestPrivate { -public: - WebURLRequestPrivate() : m_resourceRequest(0), m_allowStoredCredentials(true) { } - - // Called by WebURLRequest when it no longer needs this object. - virtual void dispose() = 0; - - WebCore::ResourceRequest* m_resourceRequest; - bool m_allowStoredCredentials; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebURLResponse.cpp b/webkit/api/src/WebURLResponse.cpp deleted file mode 100644 index 49f07f9..0000000 --- a/webkit/api/src/WebURLResponse.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/* - * 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 "WebURLResponse.h" - -#include "ResourceResponse.h" - -#include "WebHTTPHeaderVisitor.h" -#include "WebString.h" -#include "WebURL.h" -#include "WebURLResponsePrivate.h" - -using namespace WebCore; - -namespace WebKit { - -// The standard implementation of WebURLResponsePrivate, which maintains -// ownership of a ResourceResponse instance. -class WebURLResponsePrivateImpl : public WebURLResponsePrivate { -public: - WebURLResponsePrivateImpl() - { - m_resourceResponse = &m_resourceResponseAllocation; - } - - WebURLResponsePrivateImpl(const WebURLResponsePrivate* p) - : m_resourceResponseAllocation(*p->m_resourceResponse) - { - m_resourceResponse = &m_resourceResponseAllocation; - } - - virtual void dispose() { delete this; } - - ResourceResponse m_resourceResponseAllocation; -}; - -void WebURLResponse::initialize() -{ - assign(new WebURLResponsePrivateImpl()); -} - -void WebURLResponse::reset() -{ - assign(0); -} - -void WebURLResponse::assign(const WebURLResponse& r) -{ - if (&r != this) - assign(r.m_private ? new WebURLResponsePrivateImpl(r.m_private) : 0); -} - -bool WebURLResponse::isNull() const -{ - return !m_private || m_private->m_resourceResponse->isNull(); -} - -WebURL WebURLResponse::url() const -{ - return m_private->m_resourceResponse->url(); -} - -void WebURLResponse::setURL(const WebURL& url) -{ - m_private->m_resourceResponse->setURL(url); -} - -WebString WebURLResponse::mimeType() const -{ - return m_private->m_resourceResponse->mimeType(); -} - -void WebURLResponse::setMIMEType(const WebString& mimeType) -{ - m_private->m_resourceResponse->setMimeType(mimeType); -} - -long long WebURLResponse::expectedContentLength() const -{ - return m_private->m_resourceResponse->expectedContentLength(); -} - -void WebURLResponse::setExpectedContentLength(long long expectedContentLength) -{ - m_private->m_resourceResponse->setExpectedContentLength(expectedContentLength); -} - -WebString WebURLResponse::textEncodingName() const -{ - return m_private->m_resourceResponse->textEncodingName(); -} - -void WebURLResponse::setTextEncodingName(const WebString& textEncodingName) -{ - m_private->m_resourceResponse->setTextEncodingName(textEncodingName); -} - -WebString WebURLResponse::suggestedFileName() const -{ - return m_private->m_resourceResponse->suggestedFilename(); -} - -void WebURLResponse::setSuggestedFileName(const WebString& suggestedFileName) -{ - m_private->m_resourceResponse->setSuggestedFilename(suggestedFileName); -} - -int WebURLResponse::httpStatusCode() const -{ - return m_private->m_resourceResponse->httpStatusCode(); -} - -void WebURLResponse::setHTTPStatusCode(int httpStatusCode) -{ - m_private->m_resourceResponse->setHTTPStatusCode(httpStatusCode); -} - -WebString WebURLResponse::httpStatusText() const -{ - return m_private->m_resourceResponse->httpStatusText(); -} - -void WebURLResponse::setHTTPStatusText(const WebString& httpStatusText) -{ - m_private->m_resourceResponse->setHTTPStatusText(httpStatusText); -} - -WebString WebURLResponse::httpHeaderField(const WebString& name) const -{ - return m_private->m_resourceResponse->httpHeaderField(name); -} - -void WebURLResponse::setHTTPHeaderField(const WebString& name, const WebString& value) -{ - m_private->m_resourceResponse->setHTTPHeaderField(name, value); -} - -void WebURLResponse::addHTTPHeaderField(const WebString& name, const WebString& value) -{ - // FIXME: Add an addHTTPHeaderField method to ResourceResponse. - const HTTPHeaderMap& map = m_private->m_resourceResponse->httpHeaderFields(); - String valueStr(value); - pair<HTTPHeaderMap::iterator, bool> result = - const_cast<HTTPHeaderMap*>(&map)->add(name, valueStr); - if (!result.second) - result.first->second += ", " + valueStr; -} - -void WebURLResponse::clearHTTPHeaderField(const WebString& name) -{ - // FIXME: Add a clearHTTPHeaderField method to ResourceResponse. - const HTTPHeaderMap& map = m_private->m_resourceResponse->httpHeaderFields(); - const_cast<HTTPHeaderMap*>(&map)->remove(name); -} - -void WebURLResponse::visitHTTPHeaderFields(WebHTTPHeaderVisitor* visitor) const -{ - const HTTPHeaderMap& map = m_private->m_resourceResponse->httpHeaderFields(); - for (HTTPHeaderMap::const_iterator it = map.begin(); it != map.end(); ++it) - visitor->visitHeader(it->first, it->second); -} - -double WebURLResponse::lastModifiedDate() const -{ - return static_cast<double>(m_private->m_resourceResponse->lastModifiedDate()); -} - -void WebURLResponse::setLastModifiedDate(double lastModifiedDate) -{ - m_private->m_resourceResponse->setLastModifiedDate(static_cast<time_t>(lastModifiedDate)); -} - -bool WebURLResponse::isContentFiltered() const -{ - return m_private->m_resourceResponse->isContentFiltered(); -} - -void WebURLResponse::setIsContentFiltered(bool isContentFiltered) -{ - m_private->m_resourceResponse->setIsContentFiltered(isContentFiltered); -} - -long long WebURLResponse::appCacheID() const -{ - return m_private->m_resourceResponse->appCacheID(); -} - -void WebURLResponse::setAppCacheID(long long appCacheID) -{ - m_private->m_resourceResponse->setAppCacheID(appCacheID); -} - -WebURL WebURLResponse::appCacheManifestURL() const -{ - return m_private->m_resourceResponse->appCacheManifestURL(); -} - -void WebURLResponse::setAppCacheManifestURL(const WebURL& url) -{ - m_private->m_resourceResponse->setAppCacheManifestURL(url); -} - -WebCString WebURLResponse::securityInfo() const -{ - // FIXME: getSecurityInfo is misnamed. - return m_private->m_resourceResponse->getSecurityInfo(); -} - -void WebURLResponse::setSecurityInfo(const WebCString& securityInfo) -{ - m_private->m_resourceResponse->setSecurityInfo(securityInfo); -} - -ResourceResponse& WebURLResponse::toMutableResourceResponse() -{ - ASSERT(m_private); - ASSERT(m_private->m_resourceResponse); - - return *m_private->m_resourceResponse; -} - -const ResourceResponse& WebURLResponse::toResourceResponse() const -{ - ASSERT(m_private); - ASSERT(m_private->m_resourceResponse); - - return *m_private->m_resourceResponse; -} - -void WebURLResponse::assign(WebURLResponsePrivate* p) -{ - // Subclasses may call this directly so a self-assignment check is needed - // here as well as in the public assign method. - if (m_private == p) - return; - if (m_private) - m_private->dispose(); - m_private = p; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebURLResponsePrivate.h b/webkit/api/src/WebURLResponsePrivate.h deleted file mode 100644 index 716c8db..0000000 --- a/webkit/api/src/WebURLResponsePrivate.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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. - */ - -#ifndef WebURLResponsePrivate_h -#define WebURLResponsePrivate_h - -namespace WebCore { class ResourceResponse; } - -namespace WebKit { - -class WebURLResponsePrivate { -public: - WebURLResponsePrivate() : m_resourceResponse(0) { } - - // Called by WebURLResponse when it no longer needs this object. - virtual void dispose() = 0; - - WebCore::ResourceResponse* m_resourceResponse; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebViewImpl.cpp b/webkit/api/src/WebViewImpl.cpp deleted file mode 100644 index 3a569a9..0000000 --- a/webkit/api/src/WebViewImpl.cpp +++ /dev/null @@ -1,1775 +0,0 @@ -/* - * 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 "WebViewImpl.h" - -#include "AutocompletePopupMenuClient.h" -#include "AXObjectCache.h" -#include "CSSStyleSelector.h" -#include "CSSValueKeywords.h" -#include "Cursor.h" -#include "Document.h" -#include "DocumentLoader.h" -#include "DOMUtilitiesPrivate.h" -#include "DragController.h" -#include "DragData.h" -#include "Editor.h" -#include "EventHandler.h" -#include "FocusController.h" -#include "FontDescription.h" -#include "FrameLoader.h" -#include "FrameTree.h" -#include "FrameView.h" -#include "GraphicsContext.h" -#include "HitTestResult.h" -#include "HTMLInputElement.h" -#include "HTMLMediaElement.h" -#include "HTMLNames.h" -#include "Image.h" -#include "InspectorController.h" -#include "IntRect.h" -#include "KeyboardCodes.h" -#include "KeyboardEvent.h" -#include "MIMETypeRegistry.h" -#include "NodeRenderStyle.h" -#include "Page.h" -#include "PageGroup.h" -#include "Pasteboard.h" -#include "PlatformContextSkia.h" -#include "PlatformKeyboardEvent.h" -#include "PlatformMouseEvent.h" -#include "PlatformWheelEvent.h" -#include "PluginInfoStore.h" -#include "PopupMenuChromium.h" -#include "PopupMenuClient.h" -#include "RenderView.h" -#include "ResourceHandle.h" -#include "SecurityOrigin.h" -#include "SelectionController.h" -#include "Settings.h" -#include "TypingCommand.h" -#include "WebAccessibilityObject.h" -#include "WebDevToolsAgentPrivate.h" -#include "WebDragData.h" -#include "WebFrameImpl.h" -#include "WebInputEvent.h" -#include "WebInputEventConversion.h" -#include "WebMediaPlayerAction.h" -#include "WebNode.h" -#include "WebPoint.h" -#include "WebPopupMenuImpl.h" -#include "WebRect.h" -#include "WebSettingsImpl.h" -#include "WebString.h" -#include "WebVector.h" -#include "WebViewClient.h" - -#if PLATFORM(WIN_OS) -#include "KeyboardCodesWin.h" -#include "RenderThemeChromiumWin.h" -#else -#include "KeyboardCodesPosix.h" -#include "RenderTheme.h" -#endif - -// Get rid of WTF's pow define so we can use std::pow. -#undef pow -#include <cmath> // for std::pow - -using namespace WebCore; - -namespace WebKit { - -// Change the text zoom level by kTextSizeMultiplierRatio each time the user -// zooms text in or out (ie., change by 20%). The min and max values limit -// text zoom to half and 3x the original text size. These three values match -// those in Apple's port in WebKit/WebKit/WebView/WebView.mm -static const double textSizeMultiplierRatio = 1.2; -static const double minTextSizeMultiplier = 0.5; -static const double maxTextSizeMultiplier = 3.0; - -// The group name identifies a namespace of pages. Page group is used on OSX -// for some programs that use HTML views to display things that don't seem like -// web pages to the user (so shouldn't have visited link coloring). We only use -// one page group. -const char* pageGroupName = "default"; - -// Ensure that the WebDragOperation enum values stay in sync with the original -// DragOperation constants. -#define COMPILE_ASSERT_MATCHING_ENUM(coreName) \ - COMPILE_ASSERT(int(coreName) == int(Web##coreName), dummy##coreName) -COMPILE_ASSERT_MATCHING_ENUM(DragOperationNone); -COMPILE_ASSERT_MATCHING_ENUM(DragOperationCopy); -COMPILE_ASSERT_MATCHING_ENUM(DragOperationLink); -COMPILE_ASSERT_MATCHING_ENUM(DragOperationGeneric); -COMPILE_ASSERT_MATCHING_ENUM(DragOperationPrivate); -COMPILE_ASSERT_MATCHING_ENUM(DragOperationMove); -COMPILE_ASSERT_MATCHING_ENUM(DragOperationDelete); -COMPILE_ASSERT_MATCHING_ENUM(DragOperationEvery); - -// Note that focusOnShow is false so that the autocomplete popup is shown not -// activated. We need the page to still have focus so the user can keep typing -// while the popup is showing. -static const PopupContainerSettings autocompletePopupSettings = { - false, // focusOnShow - false, // setTextOnIndexChange - false, // acceptOnAbandon - true, // loopSelectionNavigation - true, // restrictWidthOfListBox. Same as other browser (Fx, IE, and safari) - // For autocomplete, we use the direction of the input field as the direction - // of the popup items. The main reason is to keep the display of items in - // drop-down the same as the items in the input field. - PopupContainerSettings::DOMElementDirection, -}; - -// WebView ---------------------------------------------------------------- - -WebView* WebView::create(WebViewClient* client) -{ - return new WebViewImpl(client); -} - -void WebView::updateVisitedLinkState(unsigned long long linkHash) -{ - Page::visitedStateChanged(PageGroup::pageGroup(pageGroupName), linkHash); -} - -void WebView::resetVisitedLinkState() -{ - Page::allVisitedStateChanged(PageGroup::pageGroup(pageGroupName)); -} - -void WebViewImpl::initializeMainFrame(WebFrameClient* frameClient) -{ - // NOTE: The WebFrameImpl takes a reference to itself within InitMainFrame - // and releases that reference once the corresponding Frame is destroyed. - RefPtr<WebFrameImpl> frame = WebFrameImpl::create(frameClient); - - frame->initializeAsMainFrame(this); - - // Restrict the access to the local file system - // (see WebView.mm WebView::_commonInitializationWithFrameName). - SecurityOrigin::setLocalLoadPolicy(SecurityOrigin::AllowLocalLoadsForLocalOnly); -} - -WebViewImpl::WebViewImpl(WebViewClient* client) - : m_client(client) - , m_backForwardListClientImpl(this) - , m_chromeClientImpl(this) - , m_contextMenuClientImpl(this) - , m_dragClientImpl(this) - , m_editorClientImpl(this) - , m_inspectorClientImpl(this) - , m_observedNewNavigation(false) -#ifndef NDEBUG - , m_newNavigationLoader(0) -#endif - , m_zoomLevel(0) - , m_contextMenuAllowed(false) - , m_doingDragAndDrop(false) - , m_ignoreInputEvents(false) - , m_suppressNextKeypressEvent(false) - , m_initialNavigationPolicy(WebNavigationPolicyIgnore) - , m_imeAcceptEvents(true) - , m_dragTargetDispatch(false) - , m_dragIdentity(0) - , m_dropEffect(DropEffectDefault) - , m_operationsAllowed(WebDragOperationNone) - , m_dragOperation(WebDragOperationNone) - , m_autocompletePopupShowing(false) - , m_isTransparent(false) - , m_tabsToLinks(false) -{ - // WebKit/win/WebView.cpp does the same thing, except they call the - // KJS specific wrapper around this method. We need to have threading - // initialized because CollatorICU requires it. - WTF::initializeThreading(); - - // set to impossible point so we always get the first mouse pos - m_lastMousePosition = WebPoint(-1, -1); - - // the page will take ownership of the various clients - m_page.set(new Page(&m_chromeClientImpl, - &m_contextMenuClientImpl, - &m_editorClientImpl, - &m_dragClientImpl, - &m_inspectorClientImpl, - 0)); - - m_page->backForwardList()->setClient(&m_backForwardListClientImpl); - m_page->setGroupName(pageGroupName); -} - -WebViewImpl::~WebViewImpl() -{ - ASSERT(!m_page); -} - -RenderTheme* WebViewImpl::theme() const -{ - return m_page.get() ? m_page->theme() : RenderTheme::defaultTheme().get(); -} - -WebFrameImpl* WebViewImpl::mainFrameImpl() -{ - return m_page.get() ? WebFrameImpl::fromFrame(m_page->mainFrame()) : 0; -} - -bool WebViewImpl::tabKeyCyclesThroughElements() const -{ - ASSERT(m_page.get()); - return m_page->tabKeyCyclesThroughElements(); -} - -void WebViewImpl::setTabKeyCyclesThroughElements(bool value) -{ - if (m_page) - m_page->setTabKeyCyclesThroughElements(value); -} - -void WebViewImpl::mouseMove(const WebMouseEvent& event) -{ - if (!mainFrameImpl() || !mainFrameImpl()->frameView()) - return; - - m_lastMousePosition = WebPoint(event.x, event.y); - - // We call mouseMoved here instead of handleMouseMovedEvent because we need - // our ChromeClientImpl to receive changes to the mouse position and - // tooltip text, and mouseMoved handles all of that. - mainFrameImpl()->frame()->eventHandler()->mouseMoved( - PlatformMouseEventBuilder(mainFrameImpl()->frameView(), event)); -} - -void WebViewImpl::mouseLeave(const WebMouseEvent& event) -{ - // This event gets sent as the main frame is closing. In that case, just - // ignore it. - if (!mainFrameImpl() || !mainFrameImpl()->frameView()) - return; - - m_client->setMouseOverURL(WebURL()); - - mainFrameImpl()->frame()->eventHandler()->handleMouseMoveEvent( - PlatformMouseEventBuilder(mainFrameImpl()->frameView(), event)); -} - -void WebViewImpl::mouseDown(const WebMouseEvent& event) -{ - if (!mainFrameImpl() || !mainFrameImpl()->frameView()) - return; - - m_lastMouseDownPoint = WebPoint(event.x, event.y); - - // If a text field that has focus is clicked again, we should display the - // autocomplete popup. - RefPtr<Node> clickedNode; - if (event.button == WebMouseEvent::ButtonLeft) { - RefPtr<Node> focusedNode = focusedWebCoreNode(); - if (focusedNode.get() && toHTMLInputElement(focusedNode.get())) { - IntPoint point(event.x, event.y); - point = m_page->mainFrame()->view()->windowToContents(point); - HitTestResult result(point); - result = m_page->mainFrame()->eventHandler()->hitTestResultAtPoint(point, false); - if (result.innerNonSharedNode() == focusedNode) { - // Already focused text field was clicked, let's remember this. If - // focus has not changed after the mouse event is processed, we'll - // trigger the autocomplete. - clickedNode = focusedNode; - } - } - } - - mainFrameImpl()->frame()->eventHandler()->handleMousePressEvent( - PlatformMouseEventBuilder(mainFrameImpl()->frameView(), event)); - - if (clickedNode.get() && clickedNode == focusedWebCoreNode()) { - // Focus has not changed, show the autocomplete popup. - static_cast<EditorClientImpl*>(m_page->editorClient())-> - showFormAutofillForNode(clickedNode.get()); - } - - // Dispatch the contextmenu event regardless of if the click was swallowed. - // On Windows, we handle it on mouse up, not down. -#if PLATFORM(DARWIN) - if (event.button == WebMouseEvent::ButtonRight - || (event.button == WebMouseEvent::ButtonLeft - && event.modifiers & WebMouseEvent::ControlKey)) - mouseContextMenu(event); -#elif PLATFORM(LINUX) - if (event.button == WebMouseEvent::ButtonRight) - mouseContextMenu(event); -#endif -} - -void WebViewImpl::mouseContextMenu(const WebMouseEvent& event) -{ - if (!mainFrameImpl() || !mainFrameImpl()->frameView()) - return; - - m_page->contextMenuController()->clearContextMenu(); - - PlatformMouseEventBuilder pme(mainFrameImpl()->frameView(), event); - - // Find the right target frame. See issue 1186900. - HitTestResult result = hitTestResultForWindowPos(pme.pos()); - Frame* targetFrame; - if (result.innerNonSharedNode()) - targetFrame = result.innerNonSharedNode()->document()->frame(); - else - targetFrame = m_page->focusController()->focusedOrMainFrame(); - -#if PLATFORM(WIN_OS) - targetFrame->view()->setCursor(pointerCursor()); -#endif - - m_contextMenuAllowed = true; - targetFrame->eventHandler()->sendContextMenuEvent(pme); - m_contextMenuAllowed = false; - // Actually showing the context menu is handled by the ContextMenuClient - // implementation... -} - -void WebViewImpl::mouseUp(const WebMouseEvent& event) -{ - if (!mainFrameImpl() || !mainFrameImpl()->frameView()) - return; - -#if PLATFORM(LINUX) - // If the event was a middle click, attempt to copy text into the focused - // frame. We execute this before we let the page have a go at the event - // because the page may change what is focused during in its event handler. - // - // This code is in the mouse up handler. There is some debate about putting - // this here, as opposed to the mouse down handler. - // xterm: pastes on up. - // GTK: pastes on down. - // Firefox: pastes on up. - // Midori: couldn't paste at all with 0.1.2 - // - // There is something of a webcompat angle to this well, as highlighted by - // crbug.com/14608. Pages can clear text boxes 'onclick' and, if we paste on - // down then the text is pasted just before the onclick handler runs and - // clears the text box. So it's important this happens after the - // handleMouseReleaseEvent() earlier in this function - if (event.button == WebMouseEvent::ButtonMiddle) { - Frame* focused = focusedWebCoreFrame(); - IntPoint clickPoint(m_lastMouseDownPoint.x, m_lastMouseDownPoint.y); - clickPoint = m_page->mainFrame()->view()->windowToContents(clickPoint); - HitTestResult hitTestResult = - focused->eventHandler()->hitTestResultAtPoint(clickPoint, false, false, - ShouldHitTestScrollbars); - // We don't want to send a paste when middle clicking a scroll bar or a - // link (which will navigate later in the code). - if (!hitTestResult.scrollbar() && !hitTestResult.isLiveLink() && focused) { - Editor* editor = focused->editor(); - Pasteboard* pasteboard = Pasteboard::generalPasteboard(); - bool oldSelectionMode = pasteboard->isSelectionMode(); - pasteboard->setSelectionMode(true); - editor->command(AtomicString("Paste")).execute(); - pasteboard->setSelectionMode(oldSelectionMode); - } - } -#endif - - mouseCaptureLost(); - mainFrameImpl()->frame()->eventHandler()->handleMouseReleaseEvent( - PlatformMouseEventBuilder(mainFrameImpl()->frameView(), event)); - -#if PLATFORM(WIN_OS) - // Dispatch the contextmenu event regardless of if the click was swallowed. - // On Mac/Linux, we handle it on mouse down, not up. - if (event.button == WebMouseEvent::ButtonRight) - mouseContextMenu(event); -#endif -} - -void WebViewImpl::mouseWheel(const WebMouseWheelEvent& event) -{ - PlatformWheelEventBuilder platformEvent(mainFrameImpl()->frameView(), event); - mainFrameImpl()->frame()->eventHandler()->handleWheelEvent(platformEvent); -} - -bool WebViewImpl::keyEvent(const WebKeyboardEvent& event) -{ - ASSERT((event.type == WebInputEvent::RawKeyDown) - || (event.type == WebInputEvent::KeyDown) - || (event.type == WebInputEvent::KeyUp)); - - // Please refer to the comments explaining the m_suppressNextKeypressEvent - // member. - // The m_suppressNextKeypressEvent is set if the KeyDown is handled by - // Webkit. A keyDown event is typically associated with a keyPress(char) - // event and a keyUp event. We reset this flag here as this is a new keyDown - // event. - m_suppressNextKeypressEvent = false; - - // Give autocomplete a chance to consume the key events it is interested in. - if (autocompleteHandleKeyEvent(event)) - return true; - - Frame* frame = focusedWebCoreFrame(); - if (!frame) - return false; - - EventHandler* handler = frame->eventHandler(); - if (!handler) - return keyEventDefault(event); - -#if PLATFORM(WIN_OS) || PLATFORM(LINUX) - if ((!event.modifiers && (event.windowsKeyCode == VKEY_APPS)) - || ((event.modifiers == WebInputEvent::ShiftKey) && (event.windowsKeyCode == VKEY_F10))) { - sendContextMenuEvent(event); - return true; - } -#endif - - // It's not clear if we should continue after detecting a capslock keypress. - // I'll err on the side of continuing, which is the pre-existing behaviour. - if (event.windowsKeyCode == VKEY_CAPITAL) - handler->capsLockStateMayHaveChanged(); - - PlatformKeyboardEventBuilder evt(event); - - if (handler->keyEvent(evt)) { - if (WebInputEvent::RawKeyDown == event.type && !evt.isSystemKey()) - m_suppressNextKeypressEvent = true; - return true; - } - - return keyEventDefault(event); -} - -bool WebViewImpl::autocompleteHandleKeyEvent(const WebKeyboardEvent& event) -{ - if (!m_autocompletePopupShowing - // Home and End should be left to the text field to process. - || event.windowsKeyCode == VKEY_HOME - || event.windowsKeyCode == VKEY_END) - return false; - - // Pressing delete triggers the removal of the selected suggestion from the DB. - if (event.windowsKeyCode == VKEY_DELETE - && m_autocompletePopup->selectedIndex() != -1) { - Node* node = focusedWebCoreNode(); - if (!node || (node->nodeType() != Node::ELEMENT_NODE)) { - ASSERT_NOT_REACHED(); - return false; - } - Element* element = static_cast<Element*>(node); - if (!element->hasLocalName(HTMLNames::inputTag)) { - ASSERT_NOT_REACHED(); - return false; - } - - int selectedIndex = m_autocompletePopup->selectedIndex(); - HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(element); - WebString name = inputElement->name(); - WebString value = m_autocompletePopupClient->itemText(selectedIndex); - m_client->removeAutofillSuggestions(name, value); - // Update the entries in the currently showing popup to reflect the - // deletion. - m_autocompletePopupClient->removeItemAtIndex(selectedIndex); - refreshAutofillPopup(); - return false; - } - - if (!m_autocompletePopup->isInterestedInEventForKey(event.windowsKeyCode)) - return false; - - if (m_autocompletePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event))) { - // We need to ignore the next Char event after this otherwise pressing - // enter when selecting an item in the menu will go to the page. - if (WebInputEvent::RawKeyDown == event.type) - m_suppressNextKeypressEvent = true; - return true; - } - - return false; -} - -bool WebViewImpl::charEvent(const WebKeyboardEvent& event) -{ - ASSERT(event.type == WebInputEvent::Char); - - // Please refer to the comments explaining the m_suppressNextKeypressEvent - // member. The m_suppressNextKeypressEvent is set if the KeyDown is - // handled by Webkit. A keyDown event is typically associated with a - // keyPress(char) event and a keyUp event. We reset this flag here as it - // only applies to the current keyPress event. - if (m_suppressNextKeypressEvent) { - m_suppressNextKeypressEvent = false; - return true; - } - - Frame* frame = focusedWebCoreFrame(); - if (!frame) - return false; - - EventHandler* handler = frame->eventHandler(); - if (!handler) - return keyEventDefault(event); - - PlatformKeyboardEventBuilder evt(event); - if (!evt.isCharacterKey()) - return true; - - // Safari 3.1 does not pass off windows system key messages (WM_SYSCHAR) to - // the eventHandler::keyEvent. We mimic this behavior on all platforms since - // for now we are converting other platform's key events to windows key - // events. - if (evt.isSystemKey()) - return handler->handleAccessKey(evt); - - if (!handler->keyEvent(evt)) - return keyEventDefault(event); - - return true; -} - -// The WebViewImpl::SendContextMenuEvent function is based on the Webkit -// function -// bool WebView::handleContextMenuEvent(WPARAM wParam, LPARAM lParam) in -// webkit\webkit\win\WebView.cpp. The only significant change in this -// function is the code to convert from a Keyboard event to the Right -// Mouse button up event. -// -// This function is an ugly copy/paste and should be cleaned up when the -// WebKitWin version is cleaned: https://bugs.webkit.org/show_bug.cgi?id=20438 -#if PLATFORM(WIN_OS) || PLATFORM(LINUX) -// FIXME: implement on Mac -bool WebViewImpl::sendContextMenuEvent(const WebKeyboardEvent& event) -{ - static const int kContextMenuMargin = 1; - Frame* mainFrameImpl = page()->mainFrame(); - FrameView* view = mainFrameImpl->view(); - if (!view) - return false; - - IntPoint coords(-1, -1); -#if PLATFORM(WIN_OS) - int rightAligned = ::GetSystemMetrics(SM_MENUDROPALIGNMENT); -#else - int rightAligned = 0; -#endif - IntPoint location; - - // The context menu event was generated from the keyboard, so show the - // context menu by the current selection. - Position start = mainFrameImpl->selection()->selection().start(); - Position end = mainFrameImpl->selection()->selection().end(); - - if (!start.node() || !end.node()) { - location = IntPoint( - rightAligned ? view->contentsWidth() - kContextMenuMargin : kContextMenuMargin, - kContextMenuMargin); - } else { - RenderObject* renderer = start.node()->renderer(); - if (!renderer) - return false; - - RefPtr<Range> selection = mainFrameImpl->selection()->toNormalizedRange(); - IntRect firstRect = mainFrameImpl->firstRectForRange(selection.get()); - - int x = rightAligned ? firstRect.right() : firstRect.x(); - location = IntPoint(x, firstRect.bottom()); - } - - location = view->contentsToWindow(location); - // FIXME: The IntSize(0, -1) is a hack to get the hit-testing to result in - // the selected element. Ideally we'd have the position of a context menu - // event be separate from its target node. - coords = location + IntSize(0, -1); - - // The contextMenuController() holds onto the last context menu that was - // popped up on the page until a new one is created. We need to clear - // this menu before propagating the event through the DOM so that we can - // detect if we create a new menu for this event, since we won't create - // a new menu if the DOM swallows the event and the defaultEventHandler does - // not run. - page()->contextMenuController()->clearContextMenu(); - - Frame* focusedFrame = page()->focusController()->focusedOrMainFrame(); - focusedFrame->view()->setCursor(pointerCursor()); - WebMouseEvent mouseEvent; - mouseEvent.button = WebMouseEvent::ButtonRight; - mouseEvent.x = coords.x(); - mouseEvent.y = coords.y(); - mouseEvent.type = WebInputEvent::MouseUp; - - PlatformMouseEventBuilder platformEvent(view, mouseEvent); - - m_contextMenuAllowed = true; - bool handled = focusedFrame->eventHandler()->sendContextMenuEvent(platformEvent); - m_contextMenuAllowed = false; - return handled; -} -#endif - -bool WebViewImpl::keyEventDefault(const WebKeyboardEvent& event) -{ - Frame* frame = focusedWebCoreFrame(); - if (!frame) - return false; - - switch (event.type) { - case WebInputEvent::Char: - if (event.windowsKeyCode == VKEY_SPACE) { - int keyCode = ((event.modifiers & WebInputEvent::ShiftKey) ? VKEY_PRIOR : VKEY_NEXT); - return scrollViewWithKeyboard(keyCode, event.modifiers); - } - break; - case WebInputEvent::RawKeyDown: - if (event.modifiers == WebInputEvent::ControlKey) { - switch (event.windowsKeyCode) { - case 'A': - focusedFrame()->executeCommand(WebString::fromUTF8("SelectAll")); - return true; - case VKEY_INSERT: - case 'C': - focusedFrame()->executeCommand(WebString::fromUTF8("Copy")); - return true; - // Match FF behavior in the sense that Ctrl+home/end are the only Ctrl - // key combinations which affect scrolling. Safari is buggy in the - // sense that it scrolls the page for all Ctrl+scrolling key - // combinations. For e.g. Ctrl+pgup/pgdn/up/down, etc. - case VKEY_HOME: - case VKEY_END: - break; - default: - return false; - } - } - if (!event.isSystemKey && !(event.modifiers & WebInputEvent::ShiftKey)) - return scrollViewWithKeyboard(event.windowsKeyCode, event.modifiers); - break; - default: - break; - } - return false; -} - -bool WebViewImpl::scrollViewWithKeyboard(int keyCode, int modifiers) -{ - ScrollDirection scrollDirection; - ScrollGranularity scrollGranularity; - - switch (keyCode) { - case VKEY_LEFT: - scrollDirection = ScrollLeft; - scrollGranularity = ScrollByLine; - break; - case VKEY_RIGHT: - scrollDirection = ScrollRight; - scrollGranularity = ScrollByLine; - break; - case VKEY_UP: - scrollDirection = ScrollUp; - scrollGranularity = ScrollByLine; - break; - case VKEY_DOWN: - scrollDirection = ScrollDown; - scrollGranularity = ScrollByLine; - break; - case VKEY_HOME: - scrollDirection = ScrollUp; - scrollGranularity = ScrollByDocument; - break; - case VKEY_END: - scrollDirection = ScrollDown; - scrollGranularity = ScrollByDocument; - break; - case VKEY_PRIOR: // page up - scrollDirection = ScrollUp; - scrollGranularity = ScrollByPage; - break; - case VKEY_NEXT: // page down - scrollDirection = ScrollDown; - scrollGranularity = ScrollByPage; - break; - default: - return false; - } - - return propagateScroll(scrollDirection, scrollGranularity); -} - -bool WebViewImpl::propagateScroll(ScrollDirection scrollDirection, - ScrollGranularity scrollGranularity) -{ - Frame* frame = focusedWebCoreFrame(); - if (!frame) - return false; - - bool scrollHandled = - frame->eventHandler()->scrollOverflow(scrollDirection, - scrollGranularity); - Frame* currentFrame = frame; - while (!scrollHandled && currentFrame) { - scrollHandled = currentFrame->view()->scroll(scrollDirection, - scrollGranularity); - currentFrame = currentFrame->tree()->parent(); - } - return scrollHandled; -} - -Frame* WebViewImpl::focusedWebCoreFrame() -{ - return m_page.get() ? m_page->focusController()->focusedOrMainFrame() : 0; -} - -WebViewImpl* WebViewImpl::fromPage(Page* page) -{ - if (!page) - return 0; - - return static_cast<ChromeClientImpl*>(page->chrome()->client())->webView(); -} - -// WebWidget ------------------------------------------------------------------ - -void WebViewImpl::close() -{ - RefPtr<WebFrameImpl> mainFrameImpl; - - if (m_page.get()) { - // Initiate shutdown for the entire frameset. This will cause a lot of - // notifications to be sent. - if (m_page->mainFrame()) { - mainFrameImpl = WebFrameImpl::fromFrame(m_page->mainFrame()); - m_page->mainFrame()->loader()->frameDetached(); - } - m_page.clear(); - } - - // Should happen after m_page.clear(). - if (m_devToolsAgent.get()) - m_devToolsAgent.clear(); - - // We drop the client after the page has been destroyed to support the - // WebFrameClient::didDestroyScriptContext method. - if (mainFrameImpl) - mainFrameImpl->dropClient(); - - // Reset the delegate to prevent notifications being sent as we're being - // deleted. - m_client = 0; - - deref(); // Balances ref() acquired in WebView::create -} - -void WebViewImpl::resize(const WebSize& newSize) -{ - if (m_size == newSize) - return; - m_size = newSize; - - if (mainFrameImpl()->frameView()) { - mainFrameImpl()->frameView()->resize(m_size.width, m_size.height); - mainFrameImpl()->frame()->eventHandler()->sendResizeEvent(); - } - - if (m_client) { - WebRect damagedRect(0, 0, m_size.width, m_size.height); - m_client->didInvalidateRect(damagedRect); - } -} - -void WebViewImpl::layout() -{ - WebFrameImpl* webframe = mainFrameImpl(); - if (webframe) { - // In order for our child HWNDs (NativeWindowWidgets) to update properly, - // they need to be told that we are updating the screen. The problem is - // that the native widgets need to recalculate their clip region and not - // overlap any of our non-native widgets. To force the resizing, call - // setFrameRect(). This will be a quick operation for most frames, but - // the NativeWindowWidgets will update a proper clipping region. - FrameView* view = webframe->frameView(); - if (view) - view->setFrameRect(view->frameRect()); - - // setFrameRect may have the side-effect of causing existing page - // layout to be invalidated, so layout needs to be called last. - - webframe->layout(); - } -} - -void WebViewImpl::paint(WebCanvas* canvas, const WebRect& rect) -{ - WebFrameImpl* webframe = mainFrameImpl(); - if (webframe) - webframe->paint(canvas, rect); -} - -// FIXME: m_currentInputEvent should be removed once ChromeClient::show() can -// get the current-event information from WebCore. -const WebInputEvent* WebViewImpl::m_currentInputEvent = 0; - -bool WebViewImpl::handleInputEvent(const WebInputEvent& inputEvent) -{ - // If we've started a drag and drop operation, ignore input events until - // we're done. - if (m_doingDragAndDrop) - return true; - - if (m_ignoreInputEvents) - return true; - - // FIXME: Remove m_currentInputEvent. - // This only exists to allow ChromeClient::show() to know which mouse button - // triggered a window.open event. - // Safari must perform a similar hack, ours is in our WebKit glue layer - // theirs is in the application. This should go when WebCore can be fixed - // to pass more event information to ChromeClient::show() - m_currentInputEvent = &inputEvent; - - bool handled = true; - - // FIXME: WebKit seems to always return false on mouse events processing - // methods. For now we'll assume it has processed them (as we are only - // interested in whether keyboard events are processed). - switch (inputEvent.type) { - case WebInputEvent::MouseMove: - mouseMove(*static_cast<const WebMouseEvent*>(&inputEvent)); - break; - - case WebInputEvent::MouseLeave: - mouseLeave(*static_cast<const WebMouseEvent*>(&inputEvent)); - break; - - case WebInputEvent::MouseWheel: - mouseWheel(*static_cast<const WebMouseWheelEvent*>(&inputEvent)); - break; - - case WebInputEvent::MouseDown: - mouseDown(*static_cast<const WebMouseEvent*>(&inputEvent)); - break; - - case WebInputEvent::MouseUp: - mouseUp(*static_cast<const WebMouseEvent*>(&inputEvent)); - break; - - case WebInputEvent::RawKeyDown: - case WebInputEvent::KeyDown: - case WebInputEvent::KeyUp: - handled = keyEvent(*static_cast<const WebKeyboardEvent*>(&inputEvent)); - break; - - case WebInputEvent::Char: - handled = charEvent(*static_cast<const WebKeyboardEvent*>(&inputEvent)); - break; - - default: - handled = false; - } - - m_currentInputEvent = 0; - - return handled; -} - -void WebViewImpl::mouseCaptureLost() -{ -} - -void WebViewImpl::setFocus(bool enable) -{ - m_page->focusController()->setFocused(enable); - if (enable) { - // Note that we don't call setActive() when disabled as this cause extra - // focus/blur events to be dispatched. - m_page->focusController()->setActive(true); - RefPtr<Frame> focusedFrame = m_page->focusController()->focusedFrame(); - if (focusedFrame) { - Node* focusedNode = focusedFrame->document()->focusedNode(); - if (focusedNode && focusedNode->isElementNode() - && focusedFrame->selection()->selection().isNone()) { - // If the selection was cleared while the WebView was not - // focused, then the focus element shows with a focus ring but - // no caret and does respond to keyboard inputs. - Element* element = static_cast<Element*>(focusedNode); - if (element->isTextFormControl()) - element->updateFocusAppearance(true); - else { - // updateFocusAppearance() selects all the text of - // contentseditable DIVs. So we set the selection explicitly - // instead. Note that this has the side effect of moving the - // caret back to the begining of the text. - Position position(focusedNode, 0, - Position::PositionIsOffsetInAnchor); - focusedFrame->selection()->setSelection( - VisibleSelection(position, SEL_DEFAULT_AFFINITY)); - } - } - } - m_imeAcceptEvents = true; - } else { - hideAutoCompletePopup(); - - // Clear focus on the currently focused frame if any. - if (!m_page.get()) - return; - - Frame* frame = m_page->mainFrame(); - if (!frame) - return; - - RefPtr<Frame> focusedFrame = m_page->focusController()->focusedFrame(); - if (focusedFrame.get()) { - // Finish an ongoing composition to delete the composition node. - Editor* editor = focusedFrame->editor(); - if (editor && editor->hasComposition()) - editor->confirmComposition(); - m_imeAcceptEvents = false; - } - } -} - -bool WebViewImpl::handleCompositionEvent(WebCompositionCommand command, - int cursorPosition, - int targetStart, - int targetEnd, - const WebString& imeString) -{ - Frame* focused = focusedWebCoreFrame(); - if (!focused || !m_imeAcceptEvents) - return false; - Editor* editor = focused->editor(); - if (!editor) - return false; - if (!editor->canEdit()) { - // The input focus has been moved to another WebWidget object. - // We should use this |editor| object only to complete the ongoing - // composition. - if (!editor->hasComposition()) - return false; - } - - // We should verify the parent node of this IME composition node are - // editable because JavaScript may delete a parent node of the composition - // node. In this case, WebKit crashes while deleting texts from the parent - // node, which doesn't exist any longer. - PassRefPtr<Range> range = editor->compositionRange(); - if (range) { - const Node* node = range->startPosition().node(); - if (!node || !node->isContentEditable()) - return false; - } - - if (command == WebCompositionCommandDiscard) { - // A browser process sent an IPC message which does not contain a valid - // string, which means an ongoing composition has been canceled. - // If the ongoing composition has been canceled, replace the ongoing - // composition string with an empty string and complete it. - String emptyString; - Vector<CompositionUnderline> emptyUnderlines; - editor->setComposition(emptyString, emptyUnderlines, 0, 0); - } else { - // A browser process sent an IPC message which contains a string to be - // displayed in this Editor object. - // To display the given string, set the given string to the - // m_compositionNode member of this Editor object and display it. - if (targetStart < 0) - targetStart = 0; - if (targetEnd < 0) - targetEnd = static_cast<int>(imeString.length()); - String compositionString(imeString); - // Create custom underlines. - // To emphasize the selection, the selected region uses a solid black - // for its underline while other regions uses a pale gray for theirs. - Vector<CompositionUnderline> underlines(3); - underlines[0].startOffset = 0; - underlines[0].endOffset = targetStart; - underlines[0].thick = true; - underlines[0].color.setRGB(0xd3, 0xd3, 0xd3); - underlines[1].startOffset = targetStart; - underlines[1].endOffset = targetEnd; - underlines[1].thick = true; - underlines[1].color.setRGB(0x00, 0x00, 0x00); - underlines[2].startOffset = targetEnd; - underlines[2].endOffset = static_cast<int>(imeString.length()); - underlines[2].thick = true; - underlines[2].color.setRGB(0xd3, 0xd3, 0xd3); - // When we use custom underlines, WebKit ("InlineTextBox.cpp" Line 282) - // prevents from writing a text in between 'selectionStart' and - // 'selectionEnd' somehow. - // Therefore, we use the 'cursorPosition' for these arguments so that - // there are not any characters in the above region. - editor->setComposition(compositionString, underlines, - cursorPosition, cursorPosition); - // The given string is a result string, which means the ongoing - // composition has been completed. I have to call the - // Editor::confirmCompletion() and complete this composition. - if (command == WebCompositionCommandConfirm) - editor->confirmComposition(); - } - - return editor->hasComposition(); -} - -bool WebViewImpl::queryCompositionStatus(bool* enableIME, WebRect* caretRect) -{ - // Store whether the selected node needs IME and the caret rectangle. - // This process consists of the following four steps: - // 1. Retrieve the selection controller of the focused frame; - // 2. Retrieve the caret rectangle from the controller; - // 3. Convert the rectangle, which is relative to the parent view, to the - // one relative to the client window, and; - // 4. Store the converted rectangle. - const Frame* focused = focusedWebCoreFrame(); - if (!focused) - return false; - - const Editor* editor = focused->editor(); - if (!editor || !editor->canEdit()) - return false; - - SelectionController* controller = focused->selection(); - if (!controller) - return false; - - const Node* node = controller->start().node(); - if (!node) - return false; - - *enableIME = node->shouldUseInputMethod() && !controller->isInPasswordField(); - const FrameView* view = node->document()->view(); - if (!view) - return false; - - *caretRect = view->contentsToWindow(controller->absoluteCaretBounds()); - return true; -} - -void WebViewImpl::setTextDirection(WebTextDirection direction) -{ - // The Editor::setBaseWritingDirection() function checks if we can change - // the text direction of the selected node and updates its DOM "dir" - // attribute and its CSS "direction" property. - // So, we just call the function as Safari does. - const Frame* focused = focusedWebCoreFrame(); - if (!focused) - return; - - Editor* editor = focused->editor(); - if (!editor || !editor->canEdit()) - return; - - switch (direction) { - case WebTextDirectionDefault: - editor->setBaseWritingDirection(NaturalWritingDirection); - break; - - case WebTextDirectionLeftToRight: - editor->setBaseWritingDirection(LeftToRightWritingDirection); - break; - - case WebTextDirectionRightToLeft: - editor->setBaseWritingDirection(RightToLeftWritingDirection); - break; - - default: - notImplemented(); - break; - } -} - -// WebView -------------------------------------------------------------------- - -WebSettings* WebViewImpl::settings() -{ - if (!m_webSettings.get()) - m_webSettings.set(new WebSettingsImpl(m_page->settings())); - ASSERT(m_webSettings.get()); - return m_webSettings.get(); -} - -WebString WebViewImpl::pageEncoding() const -{ - if (!m_page.get()) - return WebString(); - - return m_page->mainFrame()->loader()->encoding(); -} - -void WebViewImpl::setPageEncoding(const WebString& encodingName) -{ - if (!m_page.get()) - return; - - // Only change override encoding, don't change default encoding. - // Note that the new encoding must be 0 if it isn't supposed to be set. - String newEncodingName; - if (!encodingName.isEmpty()) - newEncodingName = encodingName; - m_page->mainFrame()->loader()->reloadWithOverrideEncoding(newEncodingName); -} - -bool WebViewImpl::dispatchBeforeUnloadEvent() -{ - // FIXME: This should really cause a recursive depth-first walk of all - // frames in the tree, calling each frame's onbeforeunload. At the moment, - // we're consistent with Safari 3.1, not IE/FF. - Frame* frame = m_page->focusController()->focusedOrMainFrame(); - if (!frame) - return true; - - return frame->shouldClose(); -} - -void WebViewImpl::dispatchUnloadEvent() -{ - // Run unload handlers. - m_page->mainFrame()->loader()->closeURL(); -} - -WebFrame* WebViewImpl::mainFrame() -{ - return mainFrameImpl(); -} - -WebFrame* WebViewImpl::findFrameByName( - const WebString& name, WebFrame* relativeToFrame) -{ - if (!relativeToFrame) - relativeToFrame = mainFrame(); - Frame* frame = static_cast<WebFrameImpl*>(relativeToFrame)->frame(); - frame = frame->tree()->find(name); - return WebFrameImpl::fromFrame(frame); -} - -WebFrame* WebViewImpl::focusedFrame() -{ - return WebFrameImpl::fromFrame(focusedWebCoreFrame()); -} - -void WebViewImpl::setFocusedFrame(WebFrame* frame) -{ - if (!frame) { - // Clears the focused frame if any. - Frame* frame = focusedWebCoreFrame(); - if (frame) - frame->selection()->setFocused(false); - return; - } - WebFrameImpl* frameImpl = static_cast<WebFrameImpl*>(frame); - Frame* webcoreFrame = frameImpl->frame(); - webcoreFrame->page()->focusController()->setFocusedFrame(webcoreFrame); -} - -void WebViewImpl::setInitialFocus(bool reverse) -{ - if (!m_page.get()) - return; - - // Since we don't have a keyboard event, we'll create one. - WebKeyboardEvent keyboardEvent; - keyboardEvent.type = WebInputEvent::RawKeyDown; - if (reverse) - keyboardEvent.modifiers = WebInputEvent::ShiftKey; - - // VK_TAB which is only defined on Windows. - keyboardEvent.windowsKeyCode = 0x09; - PlatformKeyboardEventBuilder platformEvent(keyboardEvent); - RefPtr<KeyboardEvent> webkitEvent = KeyboardEvent::create(platformEvent, 0); - page()->focusController()->setInitialFocus( - reverse ? FocusDirectionBackward : FocusDirectionForward, - webkitEvent.get()); -} - -void WebViewImpl::clearFocusedNode() -{ - if (!m_page.get()) - return; - - RefPtr<Frame> frame = m_page->mainFrame(); - if (!frame.get()) - return; - - RefPtr<Document> document = frame->document(); - if (!document.get()) - return; - - RefPtr<Node> oldFocusedNode = document->focusedNode(); - - // Clear the focused node. - document->setFocusedNode(0); - - if (!oldFocusedNode.get()) - return; - - // If a text field has focus, we need to make sure the selection controller - // knows to remove selection from it. Otherwise, the text field is still - // processing keyboard events even though focus has been moved to the page and - // keystrokes get eaten as a result. - if (oldFocusedNode->hasTagName(HTMLNames::textareaTag) - || (oldFocusedNode->hasTagName(HTMLNames::inputTag) - && static_cast<HTMLInputElement*>(oldFocusedNode.get())->isTextField())) { - // Clear the selection. - SelectionController* selection = frame->selection(); - selection->clear(); - } -} - -void WebViewImpl::zoomIn(bool textOnly) -{ - Frame* frame = mainFrameImpl()->frame(); - double multiplier = std::min(std::pow(textSizeMultiplierRatio, m_zoomLevel + 1), - maxTextSizeMultiplier); - float zoomFactor = static_cast<float>(multiplier); - if (zoomFactor != frame->zoomFactor()) { - ++m_zoomLevel; - frame->setZoomFactor(zoomFactor, textOnly); - } -} - -void WebViewImpl::zoomOut(bool textOnly) -{ - Frame* frame = mainFrameImpl()->frame(); - double multiplier = std::max(std::pow(textSizeMultiplierRatio, m_zoomLevel - 1), - minTextSizeMultiplier); - float zoomFactor = static_cast<float>(multiplier); - if (zoomFactor != frame->zoomFactor()) { - --m_zoomLevel; - frame->setZoomFactor(zoomFactor, textOnly); - } -} - -void WebViewImpl::zoomDefault() -{ - // We don't change the zoom mode (text only vs. full page) here. We just want - // to reset whatever is already set. - m_zoomLevel = 0; - mainFrameImpl()->frame()->setZoomFactor( - 1.0f, mainFrameImpl()->frame()->isZoomFactorTextOnly()); -} - -void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, - const WebPoint& location) -{ - HitTestResult result = - hitTestResultForWindowPos(location); - RefPtr<Node> node = result.innerNonSharedNode(); - if (!node->hasTagName(HTMLNames::videoTag) && !node->hasTagName(HTMLNames::audioTag)) - return; - - RefPtr<HTMLMediaElement> mediaElement = - static_pointer_cast<HTMLMediaElement>(node); - switch (action.type) { - case WebMediaPlayerAction::Play: - if (action.enable) - mediaElement->play(); - else - mediaElement->pause(); - break; - case WebMediaPlayerAction::Mute: - mediaElement->setMuted(action.enable); - break; - case WebMediaPlayerAction::Loop: - mediaElement->setLoop(action.enable); - break; - default: - ASSERT_NOT_REACHED(); - } -} - -void WebViewImpl::copyImageAt(const WebPoint& point) -{ - if (!m_page.get()) - return; - - HitTestResult result = hitTestResultForWindowPos(point); - - if (result.absoluteImageURL().isEmpty()) { - // There isn't actually an image at these coordinates. Might be because - // the window scrolled while the context menu was open or because the page - // changed itself between when we thought there was an image here and when - // we actually tried to retreive the image. - // - // FIXME: implement a cache of the most recent HitTestResult to avoid having - // to do two hit tests. - return; - } - - m_page->mainFrame()->editor()->copyImage(result); -} - -void WebViewImpl::dragSourceEndedAt( - const WebPoint& clientPoint, - const WebPoint& screenPoint, - WebDragOperation operation) -{ - PlatformMouseEvent pme(clientPoint, - screenPoint, - LeftButton, MouseEventMoved, 0, false, false, false, - false, 0); - m_page->mainFrame()->eventHandler()->dragSourceEndedAt(pme, - static_cast<DragOperation>(operation)); -} - -void WebViewImpl::dragSourceSystemDragEnded() -{ - // It's possible for us to get this callback while not doing a drag if - // it's from a previous page that got unloaded. - if (m_doingDragAndDrop) { - m_page->dragController()->dragEnded(); - m_doingDragAndDrop = false; - } -} - -WebDragOperation WebViewImpl::dragTargetDragEnter( - const WebDragData& webDragData, int identity, - const WebPoint& clientPoint, - const WebPoint& screenPoint, - WebDragOperationsMask operationsAllowed) -{ - ASSERT(!m_currentDragData.get()); - - m_currentDragData = webDragData; - m_dragIdentity = identity; - m_operationsAllowed = operationsAllowed; - - DragData dragData( - m_currentDragData.get(), - clientPoint, - screenPoint, - static_cast<DragOperation>(operationsAllowed)); - - m_dropEffect = DropEffectDefault; - m_dragTargetDispatch = true; - DragOperation effect = m_page->dragController()->dragEntered(&dragData); - // Mask the operation against the drag source's allowed operations. - if ((effect & dragData.draggingSourceOperationMask()) != effect) - effect = DragOperationNone; - m_dragTargetDispatch = false; - - if (m_dropEffect != DropEffectDefault) { - m_dragOperation = (m_dropEffect != DropEffectNone) ? WebDragOperationCopy - : WebDragOperationNone; - } else - m_dragOperation = static_cast<WebDragOperation>(effect); - return m_dragOperation; -} - -WebDragOperation WebViewImpl::dragTargetDragOver( - const WebPoint& clientPoint, - const WebPoint& screenPoint, - WebDragOperationsMask operationsAllowed) -{ - ASSERT(m_currentDragData.get()); - - m_operationsAllowed = operationsAllowed; - DragData dragData( - m_currentDragData.get(), - clientPoint, - screenPoint, - static_cast<DragOperation>(operationsAllowed)); - - m_dropEffect = DropEffectDefault; - m_dragTargetDispatch = true; - DragOperation effect = m_page->dragController()->dragUpdated(&dragData); - // Mask the operation against the drag source's allowed operations. - if ((effect & dragData.draggingSourceOperationMask()) != effect) - effect = DragOperationNone; - m_dragTargetDispatch = false; - - if (m_dropEffect != DropEffectDefault) { - m_dragOperation = (m_dropEffect != DropEffectNone) ? WebDragOperationCopy - : WebDragOperationNone; - } else - m_dragOperation = static_cast<WebDragOperation>(effect); - return m_dragOperation; -} - -void WebViewImpl::dragTargetDragLeave() -{ - ASSERT(m_currentDragData.get()); - - DragData dragData( - m_currentDragData.get(), - IntPoint(), - IntPoint(), - static_cast<DragOperation>(m_operationsAllowed)); - - m_dragTargetDispatch = true; - m_page->dragController()->dragExited(&dragData); - m_dragTargetDispatch = false; - - m_currentDragData = 0; - m_dropEffect = DropEffectDefault; - m_dragOperation = WebDragOperationNone; - m_dragIdentity = 0; -} - -void WebViewImpl::dragTargetDrop(const WebPoint& clientPoint, - const WebPoint& screenPoint) -{ - ASSERT(m_currentDragData.get()); - - // If this webview transitions from the "drop accepting" state to the "not - // accepting" state, then our IPC message reply indicating that may be in- - // flight, or else delayed by javascript processing in this webview. If a - // drop happens before our IPC reply has reached the browser process, then - // the browser forwards the drop to this webview. So only allow a drop to - // proceed if our webview m_dragOperation state is not DragOperationNone. - - if (m_dragOperation == WebDragOperationNone) { // IPC RACE CONDITION: do not allow this drop. - dragTargetDragLeave(); - return; - } - - DragData dragData( - m_currentDragData.get(), - clientPoint, - screenPoint, - static_cast<DragOperation>(m_operationsAllowed)); - - m_dragTargetDispatch = true; - m_page->dragController()->performDrag(&dragData); - m_dragTargetDispatch = false; - - m_currentDragData = 0; - m_dropEffect = DropEffectDefault; - m_dragOperation = WebDragOperationNone; - m_dragIdentity = 0; -} - -int WebViewImpl::dragIdentity() -{ - if (m_dragTargetDispatch) - return m_dragIdentity; - return 0; -} - -void WebViewImpl::inspectElementAt(const WebPoint& point) -{ - if (!m_page.get()) - return; - - if (point.x == -1 || point.y == -1) - m_page->inspectorController()->inspect(0); - else { - HitTestResult result = hitTestResultForWindowPos(point); - - if (!result.innerNonSharedNode()) - return; - - m_page->inspectorController()->inspect(result.innerNonSharedNode()); - } -} - -WebString WebViewImpl::inspectorSettings() const -{ - return m_inspectorSettings; -} - -void WebViewImpl::setInspectorSettings(const WebString& settings) -{ - m_inspectorSettings = settings; -} - -WebDevToolsAgent* WebViewImpl::devToolsAgent() -{ - return m_devToolsAgent.get(); -} - -void WebViewImpl::setDevToolsAgent(WebDevToolsAgent* devToolsAgent) -{ - ASSERT(!m_devToolsAgent.get()); // May only set once! - m_devToolsAgent.set(static_cast<WebDevToolsAgentPrivate*>(devToolsAgent)); -} - -WebAccessibilityObject WebViewImpl::accessibilityObject() -{ - if (!mainFrameImpl()) - return WebAccessibilityObject(); - - Document* document = mainFrameImpl()->frame()->document(); - return WebAccessibilityObject( - document->axObjectCache()->getOrCreate(document->renderer())); -} - -void WebViewImpl::applyAutofillSuggestions( - const WebNode& node, - const WebVector<WebString>& suggestions, - int defaultSuggestionIndex) -{ - if (!m_page.get() || suggestions.isEmpty()) { - hideAutoCompletePopup(); - return; - } - - ASSERT(defaultSuggestionIndex < static_cast<int>(suggestions.size())); - - if (RefPtr<Frame> focused = m_page->focusController()->focusedFrame()) { - RefPtr<Document> document = focused->document(); - if (!document.get()) { - hideAutoCompletePopup(); - return; - } - - RefPtr<Node> focusedNode = document->focusedNode(); - // If the node for which we queried the autofill suggestions is not the - // focused node, then we have nothing to do. FIXME: also check the - // carret is at the end and that the text has not changed. - if (!focusedNode.get() || focusedNode != PassRefPtr<Node>(node)) { - hideAutoCompletePopup(); - return; - } - - if (!focusedNode->hasTagName(HTMLNames::inputTag)) { - ASSERT_NOT_REACHED(); - return; - } - - HTMLInputElement* inputElem = - static_cast<HTMLInputElement*>(focusedNode.get()); - - // The first time the autocomplete is shown we'll create the client and the - // popup. - if (!m_autocompletePopupClient.get()) - m_autocompletePopupClient.set(new AutocompletePopupMenuClient(this)); - m_autocompletePopupClient->initialize(inputElem, - suggestions, - defaultSuggestionIndex); - if (!m_autocompletePopup.get()) { - m_autocompletePopup = - PopupContainer::create(m_autocompletePopupClient.get(), - autocompletePopupSettings); - } - - if (m_autocompletePopupShowing) { - m_autocompletePopupClient->setSuggestions(suggestions); - refreshAutofillPopup(); - } else { - m_autocompletePopup->show(focusedNode->getRect(), - focusedNode->ownerDocument()->view(), 0); - m_autocompletePopupShowing = true; - } - } -} - -void WebViewImpl::hideAutofillPopup() -{ - hideAutoCompletePopup(); -} - -// WebView -------------------------------------------------------------------- - -bool WebViewImpl::setDropEffect(bool accept) -{ - if (m_dragTargetDispatch) { - m_dropEffect = accept ? DropEffectCopy : DropEffectNone; - return true; - } - return false; -} - -void WebViewImpl::setIsTransparent(bool isTransparent) -{ - // Set any existing frames to be transparent. - Frame* frame = m_page->mainFrame(); - while (frame) { - frame->view()->setTransparent(isTransparent); - frame = frame->tree()->traverseNext(); - } - - // Future frames check this to know whether to be transparent. - m_isTransparent = isTransparent; -} - -bool WebViewImpl::isTransparent() const -{ - return m_isTransparent; -} - -void WebViewImpl::setIsActive(bool active) -{ - if (page() && page()->focusController()) - page()->focusController()->setActive(active); -} - -bool WebViewImpl::isActive() const -{ - return (page() && page()->focusController()) ? page()->focusController()->isActive() : false; -} - -void WebViewImpl::didCommitLoad(bool* isNewNavigation) -{ - if (isNewNavigation) - *isNewNavigation = m_observedNewNavigation; - -#ifndef NDEBUG - ASSERT(!m_observedNewNavigation - || m_page->mainFrame()->loader()->documentLoader() == m_newNavigationLoader); - m_newNavigationLoader = 0; -#endif - m_observedNewNavigation = false; -} - -bool WebViewImpl::navigationPolicyFromMouseEvent(unsigned short button, - bool ctrl, bool shift, - bool alt, bool meta, - WebNavigationPolicy* policy) -{ -#if PLATFORM(WIN_OS) || PLATFORM(LINUX) || PLATFORM(FREEBSD) - const bool newTabModifier = (button == 1) || ctrl; -#elif PLATFORM(DARWIN) - const bool newTabModifier = (button == 1) || meta; -#endif - if (!newTabModifier && !shift && !alt) - return false; - - ASSERT(policy); - if (newTabModifier) { - if (shift) - *policy = WebNavigationPolicyNewForegroundTab; - else - *policy = WebNavigationPolicyNewBackgroundTab; - } else { - if (shift) - *policy = WebNavigationPolicyNewWindow; - else - *policy = WebNavigationPolicyDownload; - } - return true; -} - -void WebViewImpl::startDragging(const WebPoint& eventPos, - const WebDragData& dragData, - WebDragOperationsMask mask) -{ - if (!m_client) - return; - ASSERT(!m_doingDragAndDrop); - m_doingDragAndDrop = true; - m_client->startDragging(eventPos, dragData, mask); -} - -void WebViewImpl::setCurrentHistoryItem(HistoryItem* item) -{ - m_backForwardListClientImpl.setCurrentHistoryItem(item); -} - -HistoryItem* WebViewImpl::previousHistoryItem() -{ - return m_backForwardListClientImpl.previousHistoryItem(); -} - -void WebViewImpl::observeNewNavigation() -{ - m_observedNewNavigation = true; -#ifndef NDEBUG - m_newNavigationLoader = m_page->mainFrame()->loader()->documentLoader(); -#endif -} - -void WebViewImpl::hideAutoCompletePopup() -{ - if (m_autocompletePopupShowing) { - m_autocompletePopup->hidePopup(); - autoCompletePopupDidHide(); - } -} - -void WebViewImpl::autoCompletePopupDidHide() -{ - m_autocompletePopupShowing = false; -} - -void WebViewImpl::setIgnoreInputEvents(bool newValue) -{ - ASSERT(m_ignoreInputEvents != newValue); - m_ignoreInputEvents = newValue; -} - -#if ENABLE(NOTIFICATIONS) -NotificationPresenterImpl* WebViewImpl::notificationPresenterImpl() -{ - if (!m_notificationPresenter.isInitialized() && m_client) - m_notificationPresenter.initialize(m_client->notificationPresenter()); - return &m_notificationPresenter; -} -#endif - -void WebViewImpl::refreshAutofillPopup() -{ - ASSERT(m_autocompletePopupShowing); - - // Hide the popup if it has become empty. - if (!m_autocompletePopupClient->listSize()) { - hideAutoCompletePopup(); - return; - } - - IntRect oldBounds = m_autocompletePopup->boundsRect(); - m_autocompletePopup->refresh(); - IntRect newBounds = m_autocompletePopup->boundsRect(); - // Let's resize the backing window if necessary. - if (oldBounds != newBounds) { - WebPopupMenuImpl* popupMenu = - static_cast<WebPopupMenuImpl*>(m_autocompletePopup->client()); - popupMenu->client()->setWindowRect(newBounds); - } -} - -Node* WebViewImpl::focusedWebCoreNode() -{ - Frame* frame = m_page->focusController()->focusedFrame(); - if (!frame) - return 0; - - Document* document = frame->document(); - if (!document) - return 0; - - return document->focusedNode(); -} - -HitTestResult WebViewImpl::hitTestResultForWindowPos(const IntPoint& pos) -{ - IntPoint docPoint(m_page->mainFrame()->view()->windowToContents(pos)); - return m_page->mainFrame()->eventHandler()->hitTestResultAtPoint(docPoint, false); -} - -void WebViewImpl::setTabsToLinks(bool enable) -{ - m_tabsToLinks = enable; -} - -bool WebViewImpl::tabsToLinks() const -{ - return m_tabsToLinks; -} - -} // namespace WebKit diff --git a/webkit/api/src/WebViewImpl.h b/webkit/api/src/WebViewImpl.h deleted file mode 100644 index 2b83a8e..0000000 --- a/webkit/api/src/WebViewImpl.h +++ /dev/null @@ -1,416 +0,0 @@ -/* - * 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. - */ - -#ifndef WebViewImpl_h -#define WebViewImpl_h - -// FIXME: Remove these relative paths once consumers from glue are removed. -#include "../public/WebNavigationPolicy.h" -#include "../public/WebPoint.h" -#include "../public/WebSize.h" -#include "../public/WebString.h" -#include "../public/WebView.h" - -#include "BackForwardListClientImpl.h" -#include "ChromeClientImpl.h" -#include "ContextMenuClientImpl.h" -#include "DragClientImpl.h" -#include "EditorClientImpl.h" -#include "InspectorClientImpl.h" -#include "NotificationPresenterImpl.h" - -#include <wtf/OwnPtr.h> -#include <wtf/RefCounted.h> - -namespace WebCore { -class ChromiumDataObject; -class Frame; -class HistoryItem; -class HitTestResult; -class KeyboardEvent; -class Page; -class PlatformKeyboardEvent; -class PopupContainer; -class Range; -class RenderTheme; -class Widget; -} - -namespace WebKit { -class AutocompletePopupMenuClient; -class ContextMenuClientImpl; -class WebAccessibilityObject; -class WebDevToolsAgentPrivate; -class WebFrameImpl; -class WebKeyboardEvent; -class WebMouseEvent; -class WebMouseWheelEvent; -class WebSettingsImpl; - -class WebViewImpl : public WebView, public RefCounted<WebViewImpl> { -public: - // WebWidget methods: - virtual void close(); - virtual WebSize size() { return m_size; } - virtual void resize(const WebSize&); - virtual void layout(); - virtual void paint(WebCanvas*, const WebRect&); - virtual bool handleInputEvent(const WebInputEvent&); - virtual void mouseCaptureLost(); - virtual void setFocus(bool enable); - virtual bool handleCompositionEvent(WebCompositionCommand command, - int cursorPosition, - int targetStart, - int targetEnd, - const WebString& text); - virtual bool queryCompositionStatus(bool* enabled, - WebRect* caretRect); - virtual void setTextDirection(WebTextDirection direction); - - // WebView methods: - virtual void initializeMainFrame(WebFrameClient*); - virtual WebSettings* settings(); - virtual WebString pageEncoding() const; - virtual void setPageEncoding(const WebString& encoding); - virtual bool isTransparent() const; - virtual void setIsTransparent(bool value); - virtual bool tabsToLinks() const; - virtual void setTabsToLinks(bool value); - virtual bool tabKeyCyclesThroughElements() const; - virtual void setTabKeyCyclesThroughElements(bool value); - virtual bool isActive() const; - virtual void setIsActive(bool value); - virtual bool dispatchBeforeUnloadEvent(); - virtual void dispatchUnloadEvent(); - virtual WebFrame* mainFrame(); - virtual WebFrame* findFrameByName( - const WebString& name, WebFrame* relativeToFrame); - virtual WebFrame* focusedFrame(); - virtual void setFocusedFrame(WebFrame* frame); - virtual void setInitialFocus(bool reverse); - virtual void clearFocusedNode(); - virtual void zoomIn(bool textOnly); - virtual void zoomOut(bool textOnly); - virtual void zoomDefault(); - virtual void performMediaPlayerAction( - const WebMediaPlayerAction& action, - const WebPoint& location); - virtual void copyImageAt(const WebPoint& point); - virtual void dragSourceEndedAt( - const WebPoint& clientPoint, - const WebPoint& screenPoint, - WebDragOperation operation); - virtual void dragSourceSystemDragEnded(); - virtual WebDragOperation dragTargetDragEnter( - const WebDragData& dragData, int identity, - const WebPoint& clientPoint, - const WebPoint& screenPoint, - WebDragOperationsMask operationsAllowed); - virtual WebDragOperation dragTargetDragOver( - const WebPoint& clientPoint, - const WebPoint& screenPoint, - WebDragOperationsMask operationsAllowed); - virtual void dragTargetDragLeave(); - virtual void dragTargetDrop( - const WebPoint& clientPoint, - const WebPoint& screenPoint); - virtual int dragIdentity(); - virtual bool setDropEffect(bool accept); - virtual void inspectElementAt(const WebPoint& point); - virtual WebString inspectorSettings() const; - virtual void setInspectorSettings(const WebString& settings); - virtual WebDevToolsAgent* devToolsAgent(); - virtual void setDevToolsAgent(WebDevToolsAgent*); - virtual WebAccessibilityObject accessibilityObject(); - virtual void applyAutofillSuggestions( - const WebNode&, - const WebVector<WebString>& suggestions, - int defaultSuggestionIndex); - virtual void hideAutofillPopup(); - - // WebViewImpl - - void setIgnoreInputEvents(bool newValue); - WebDevToolsAgentPrivate* devToolsAgentPrivate() { return m_devToolsAgent.get(); } - - const WebPoint& lastMouseDownPoint() const - { - return m_lastMouseDownPoint; - } - - WebCore::Frame* focusedWebCoreFrame(); - - // Returns the currently focused Node or null if no node has focus. - WebCore::Node* focusedWebCoreNode(); - - static WebViewImpl* fromPage(WebCore::Page*); - - WebViewClient* client() - { - return m_client; - } - - // Returns the page object associated with this view. This may be null when - // the page is shutting down, but will be valid at all other times. - WebCore::Page* page() const - { - return m_page.get(); - } - - WebCore::RenderTheme* theme() const; - - // Returns the main frame associated with this view. This may be null when - // the page is shutting down, but will be valid at all other times. - WebFrameImpl* mainFrameImpl(); - - // History related methods: - void setCurrentHistoryItem(WebCore::HistoryItem*); - WebCore::HistoryItem* previousHistoryItem(); - void observeNewNavigation(); - - // Event related methods: - void mouseMove(const WebMouseEvent&); - void mouseLeave(const WebMouseEvent&); - void mouseDown(const WebMouseEvent&); - void mouseUp(const WebMouseEvent&); - void mouseContextMenu(const WebMouseEvent&); - void mouseDoubleClick(const WebMouseEvent&); - void mouseWheel(const WebMouseWheelEvent&); - bool keyEvent(const WebKeyboardEvent&); - bool charEvent(const WebKeyboardEvent&); - - // Handles context menu events orignated via the the keyboard. These - // include the VK_APPS virtual key and the Shift+F10 combine. Code is - // based on the Webkit function bool WebView::handleContextMenuEvent(WPARAM - // wParam, LPARAM lParam) in webkit\webkit\win\WebView.cpp. The only - // significant change in this function is the code to convert from a - // Keyboard event to the Right Mouse button down event. - bool sendContextMenuEvent(const WebKeyboardEvent&); - - // Notifies the WebView that a load has been committed. isNewNavigation - // will be true if a new session history item should be created for that - // load. - void didCommitLoad(bool* isNewNavigation); - - bool contextMenuAllowed() const - { - return m_contextMenuAllowed; - } - - // Set the disposition for how this webview is to be initially shown. - void setInitialNavigationPolicy(WebNavigationPolicy policy) - { - m_initialNavigationPolicy = policy; - } - WebNavigationPolicy initialNavigationPolicy() const - { - return m_initialNavigationPolicy; - } - - // Determines whether a page should e.g. be opened in a background tab. - // Returns false if it has no opinion, in which case it doesn't set *policy. - static bool navigationPolicyFromMouseEvent( - unsigned short button, - bool ctrl, - bool shift, - bool alt, - bool meta, - WebNavigationPolicy*); - - // Start a system drag and drop operation. - void startDragging( - const WebPoint& eventPos, - const WebDragData& dragData, - WebDragOperationsMask dragSourceOperationMask); - - // Hides the autocomplete popup if it is showing. - void hideAutoCompletePopup(); - void autoCompletePopupDidHide(); - -#if ENABLE(NOTIFICATIONS) - // Returns the provider of desktop notifications. - NotificationPresenterImpl* notificationPresenterImpl(); -#endif - - // Tries to scroll a frame or any parent of a frame. Returns true if the view - // was scrolled. - bool propagateScroll(WebCore::ScrollDirection, WebCore::ScrollGranularity); - - // HACK: currentInputEvent() is for ChromeClientImpl::show(), until we can - // fix WebKit to pass enough information up into ChromeClient::show() so we - // can decide if the window.open event was caused by a middle-mouse click - static const WebInputEvent* currentInputEvent() - { - return m_currentInputEvent; - } - -private: - friend class WebView; // So WebView::Create can call our constructor - friend class WTF::RefCounted<WebViewImpl>; - - WebViewImpl(WebViewClient* client); - ~WebViewImpl(); - - // Returns true if the event was actually processed. - bool keyEventDefault(const WebKeyboardEvent&); - - // Returns true if the autocomple has consumed the event. - bool autocompleteHandleKeyEvent(const WebKeyboardEvent&); - - // Repaints the autofill popup. Should be called when the suggestions have - // changed. Note that this should only be called when the autofill popup is - // showing. - void refreshAutofillPopup(); - - // Returns true if the view was scrolled. - bool scrollViewWithKeyboard(int keyCode, int modifiers); - - // Converts |pos| from window coordinates to contents coordinates and gets - // the HitTestResult for it. - WebCore::HitTestResult hitTestResultForWindowPos(const WebCore::IntPoint&); - - WebViewClient* m_client; - - BackForwardListClientImpl m_backForwardListClientImpl; - ChromeClientImpl m_chromeClientImpl; - ContextMenuClientImpl m_contextMenuClientImpl; - DragClientImpl m_dragClientImpl; - EditorClientImpl m_editorClientImpl; - InspectorClientImpl m_inspectorClientImpl; - - WebSize m_size; - - WebPoint m_lastMousePosition; - OwnPtr<WebCore::Page> m_page; - - // This flag is set when a new navigation is detected. It is used to satisfy - // the corresponding argument to WebFrameClient::didCommitProvisionalLoad. - bool m_observedNewNavigation; -#ifndef NDEBUG - // Used to assert that the new navigation we observed is the same navigation - // when we make use of m_observedNewNavigation. - const WebCore::DocumentLoader* m_newNavigationLoader; -#endif - - // An object that can be used to manipulate m_page->settings() without linking - // against WebCore. This is lazily allocated the first time GetWebSettings() - // is called. - OwnPtr<WebSettingsImpl> m_webSettings; - - // A copy of the web drop data object we received from the browser. - RefPtr<WebCore::ChromiumDataObject> m_currentDragData; - - // The point relative to the client area where the mouse was last pressed - // down. This is used by the drag client to determine what was under the - // mouse when the drag was initiated. We need to track this here in - // WebViewImpl since DragClient::startDrag does not pass the position the - // mouse was at when the drag was initiated, only the current point, which - // can be misleading as it is usually not over the element the user actually - // dragged by the time a drag is initiated. - WebPoint m_lastMouseDownPoint; - - // Keeps track of the current text zoom level. 0 means no zoom, positive - // values mean larger text, negative numbers mean smaller. - int m_zoomLevel; - - bool m_contextMenuAllowed; - - bool m_doingDragAndDrop; - - bool m_ignoreInputEvents; - - // Webkit expects keyPress events to be suppressed if the associated keyDown - // event was handled. Safari implements this behavior by peeking out the - // associated WM_CHAR event if the keydown was handled. We emulate - // this behavior by setting this flag if the keyDown was handled. - bool m_suppressNextKeypressEvent; - - // The policy for how this webview is to be initially shown. - WebNavigationPolicy m_initialNavigationPolicy; - - // Represents whether or not this object should process incoming IME events. - bool m_imeAcceptEvents; - - // True while dispatching system drag and drop events to drag/drop targets - // within this WebView. - bool m_dragTargetDispatch; - - // Valid when m_dragTargetDispatch is true; the identity of the drag data - // copied from the WebDropData object sent from the browser process. - int m_dragIdentity; - - // Valid when m_dragTargetDispatch is true. Used to override the default - // browser drop effect with the effects "none" or "copy". - enum DragTargetDropEffect { - DropEffectDefault = -1, - DropEffectNone, - DropEffectCopy - } m_dropEffect; - - // The available drag operations (copy, move link...) allowed by the source. - WebDragOperation m_operationsAllowed; - - // The current drag operation as negotiated by the source and destination. - // When not equal to DragOperationNone, the drag data can be dropped onto the - // current drop target in this WebView (the drop target can accept the drop). - WebDragOperation m_dragOperation; - - // The autocomplete popup. Kept around and reused every-time new suggestions - // should be shown. - RefPtr<WebCore::PopupContainer> m_autocompletePopup; - - // Whether the autocomplete popup is currently showing. - bool m_autocompletePopupShowing; - - // The autocomplete client. - OwnPtr<AutocompletePopupMenuClient> m_autocompletePopupClient; - - OwnPtr<WebDevToolsAgentPrivate> m_devToolsAgent; - - // Whether the webview is rendering transparently. - bool m_isTransparent; - - // Whether the user can press tab to focus links. - bool m_tabsToLinks; - - // Inspector settings. - WebString m_inspectorSettings; - -#if ENABLE(NOTIFICATIONS) - // The provider of desktop notifications; - NotificationPresenterImpl m_notificationPresenter; -#endif - - static const WebInputEvent* m_currentInputEvent; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebWorkerBase.cpp b/webkit/api/src/WebWorkerBase.cpp deleted file mode 100644 index 85a263be..0000000 --- a/webkit/api/src/WebWorkerBase.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* - * 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 "WebWorkerBase.h" - -#include "GenericWorkerTask.h" -#include "MessagePortChannel.h" -#include "PlatformMessagePortChannel.h" - -#include "WebDataSourceImpl.h" -#include "WebFrameClient.h" -#include "WebFrameImpl.h" -#include "WebMessagePortChannel.h" -#include "WebView.h" -#include "WebWorkerClient.h" - -#include "WorkerThread.h" -#include <wtf/MainThread.h> - -using namespace WebCore; - -namespace WebKit { - -#if ENABLE(WORKERS) - -// Dummy WebViewDelegate - we only need it in Worker process to load a -// 'shadow page' which will initialize WebCore loader. -class WorkerWebFrameClient : public WebFrameClient { -public: - // Tell the loader to load the data into the 'shadow page' synchronously, - // so we can grab the resulting Document right after load. - virtual void didCreateDataSource(WebFrame* frame, WebDataSource* ds) - { - static_cast<WebDataSourceImpl*>(ds)->setDeferMainResourceDataLoad(false); - } - - // Lazy allocate and leak this instance. - static WorkerWebFrameClient* sharedInstance() - { - static WorkerWebFrameClient client; - return &client; - } - -private: - WorkerWebFrameClient() - { - } -}; - -// This function is called on the main thread to force to initialize some static -// values used in WebKit before any worker thread is started. This is because in -// our worker processs, we do not run any WebKit code in main thread and thus -// when multiple workers try to start at the same time, we might hit crash due -// to contention for initializing static values. -static void initializeWebKitStaticValues() -{ - static bool initialized = false; - if (!initialized) { - initialized = true; - // Note that we have to pass a URL with valid protocol in order to follow - // the path to do static value initializations. - RefPtr<SecurityOrigin> origin = - SecurityOrigin::create(KURL(ParsedURLString, "http://localhost")); - origin.release(); - } -} - -WebWorkerBase::WebWorkerBase() - : m_webView(0) - , m_askedToTerminate(false) -{ - initializeWebKitStaticValues(); -} - -WebWorkerBase::~WebWorkerBase() -{ - ASSERT(m_webView); - m_webView->close(); -} - -void WebWorkerBase::stopWorkerThread() -{ - if (m_askedToTerminate) - return; - m_askedToTerminate = true; - if (m_workerThread) - m_workerThread->stop(); -} - -void WebWorkerBase::initializeLoader(const WebURL& url) -{ - // Create 'shadow page'. This page is never displayed, it is used to proxy the - // loading requests from the worker context to the rest of WebKit and Chromium - // infrastructure. - ASSERT(!m_webView); - m_webView = WebView::create(0); - m_webView->initializeMainFrame(WorkerWebFrameClient::sharedInstance()); - - WebFrameImpl* webFrame = static_cast<WebFrameImpl*>(m_webView->mainFrame()); - - // Construct substitute data source for the 'shadow page'. We only need it - // to have same origin as the worker so the loading checks work correctly. - CString content(""); - int len = static_cast<int>(content.length()); - RefPtr<SharedBuffer> buf(SharedBuffer::create(content.data(), len)); - SubstituteData substData(buf, String("text/html"), String("UTF-8"), KURL()); - ResourceRequest request(url, CString()); - webFrame->frame()->loader()->load(request, substData, false); - - // This document will be used as 'loading context' for the worker. - m_loadingDocument = webFrame->frame()->document(); -} - -void WebWorkerBase::dispatchTaskToMainThread(PassOwnPtr<ScriptExecutionContext::Task> task) -{ - return callOnMainThread(invokeTaskMethod, task.release()); -} - -void WebWorkerBase::invokeTaskMethod(void* param) -{ - ScriptExecutionContext::Task* task = - static_cast<ScriptExecutionContext::Task*>(param); - task->performTask(0); - delete task; -} - -// WorkerObjectProxy ----------------------------------------------------------- - -void WebWorkerBase::postMessageToWorkerObject(PassRefPtr<SerializedScriptValue> message, - PassOwnPtr<MessagePortChannelArray> channels) -{ - dispatchTaskToMainThread(createCallbackTask(&postMessageTask, this, - message->toString(), channels)); -} - -void WebWorkerBase::postMessageTask(ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - String message, - PassOwnPtr<MessagePortChannelArray> channels) -{ - if (!thisPtr->client()) - return; - - WebMessagePortChannelArray webChannels(channels.get() ? channels->size() : 0); - for (size_t i = 0; i < webChannels.size(); ++i) { - webChannels[i] = (*channels)[i]->channel()->webChannelRelease(); - webChannels[i]->setClient(0); - } - - thisPtr->client()->postMessageToWorkerObject(message, webChannels); -} - -void WebWorkerBase::postExceptionToWorkerObject(const String& errorMessage, - int lineNumber, - const String& sourceURL) -{ - dispatchTaskToMainThread(createCallbackTask(&postExceptionTask, this, - errorMessage, lineNumber, - sourceURL)); -} - -void WebWorkerBase::postExceptionTask(ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - const String& errorMessage, - int lineNumber, const String& sourceURL) -{ - if (!thisPtr->commonClient()) - return; - - thisPtr->commonClient()->postExceptionToWorkerObject(errorMessage, - lineNumber, - sourceURL); -} - -void WebWorkerBase::postConsoleMessageToWorkerObject(MessageDestination destination, - MessageSource source, - MessageType type, - MessageLevel level, - const String& message, - int lineNumber, - const String& sourceURL) -{ - dispatchTaskToMainThread(createCallbackTask(&postConsoleMessageTask, this, - static_cast<int>(destination), - static_cast<int>(source), - static_cast<int>(type), - static_cast<int>(level), - message, lineNumber, sourceURL)); -} - -void WebWorkerBase::postConsoleMessageTask(ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - int destination, int source, - int type, int level, - const String& message, - int lineNumber, - const String& sourceURL) -{ - if (!thisPtr->commonClient()) - return; - thisPtr->commonClient()->postConsoleMessageToWorkerObject(destination, source, - type, level, message, - lineNumber, sourceURL); -} - -void WebWorkerBase::confirmMessageFromWorkerObject(bool hasPendingActivity) -{ - dispatchTaskToMainThread(createCallbackTask(&confirmMessageTask, this, - hasPendingActivity)); -} - -void WebWorkerBase::confirmMessageTask(ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - bool hasPendingActivity) -{ - if (!thisPtr->client()) - return; - thisPtr->client()->confirmMessageFromWorkerObject(hasPendingActivity); -} - -void WebWorkerBase::reportPendingActivity(bool hasPendingActivity) -{ - dispatchTaskToMainThread(createCallbackTask(&reportPendingActivityTask, - this, hasPendingActivity)); -} - -void WebWorkerBase::reportPendingActivityTask(ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - bool hasPendingActivity) -{ - if (!thisPtr->client()) - return; - thisPtr->client()->reportPendingActivity(hasPendingActivity); -} - -void WebWorkerBase::workerContextClosed() -{ - dispatchTaskToMainThread(createCallbackTask(&workerContextClosedTask, - this)); -} - -void WebWorkerBase::workerContextClosedTask(ScriptExecutionContext* context, - WebWorkerBase* thisPtr) -{ - if (thisPtr->commonClient()) - thisPtr->commonClient()->workerContextClosed(); -} - -void WebWorkerBase::workerContextDestroyed() -{ - dispatchTaskToMainThread(createCallbackTask(&workerContextDestroyedTask, - this)); -} - -void WebWorkerBase::workerContextDestroyedTask(ScriptExecutionContext* context, - WebWorkerBase* thisPtr) -{ - if (thisPtr->commonClient()) - thisPtr->commonClient()->workerContextDestroyed(); - // The lifetime of this proxy is controlled by the worker context. - delete thisPtr; -} - -// WorkerLoaderProxy ----------------------------------------------------------- - -void WebWorkerBase::postTaskToLoader(PassOwnPtr<ScriptExecutionContext::Task> task) -{ - ASSERT(m_loadingDocument->isDocument()); - m_loadingDocument->postTask(task); -} - -void WebWorkerBase::postTaskForModeToWorkerContext( - PassOwnPtr<ScriptExecutionContext::Task> task, const String& mode) -{ - m_workerThread->runLoop().postTaskForMode(task, mode); -} - -#endif // ENABLE(WORKERS) - -} // namespace WebKit diff --git a/webkit/api/src/WebWorkerBase.h b/webkit/api/src/WebWorkerBase.h deleted file mode 100644 index 0217401..0000000 --- a/webkit/api/src/WebWorkerBase.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * 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. - */ - -#ifndef WebWorkerBase_h -#define WebWorkerBase_h - -#if ENABLE(WORKERS) - -#include "ScriptExecutionContext.h" -#include "WorkerLoaderProxy.h" -#include "WorkerObjectProxy.h" -#include <wtf/PassOwnPtr.h> -#include <wtf/RefPtr.h> - -namespace WebCore { -class WorkerThread; -} - -namespace WebKit { -class WebCommonWorkerClient; -class WebURL; -class WebView; -class WebWorkerClient; - -// Base class for WebSharedWorkerImpl and WebWorkerImpl. It contains common -// code used by both implementation classes, including implementations of the -// WorkerObjectProxy and WorkerLoaderProxy interfaces. -class WebWorkerBase : public WebCore::WorkerObjectProxy - , public WebCore::WorkerLoaderProxy { -public: - WebWorkerBase(); - virtual ~WebWorkerBase(); - - // WebCore::WorkerObjectProxy methods: - virtual void postMessageToWorkerObject( - PassRefPtr<WebCore::SerializedScriptValue>, - PassOwnPtr<WebCore::MessagePortChannelArray>); - virtual void postExceptionToWorkerObject( - const WebCore::String&, int, const WebCore::String&); - virtual void postConsoleMessageToWorkerObject( - WebCore::MessageDestination, WebCore::MessageSource, WebCore::MessageType, - WebCore::MessageLevel, const WebCore::String&, int, const WebCore::String&); - virtual void confirmMessageFromWorkerObject(bool); - virtual void reportPendingActivity(bool); - virtual void workerContextClosed(); - virtual void workerContextDestroyed(); - - // WebCore::WorkerLoaderProxy methods: - virtual void postTaskToLoader(PassOwnPtr<WebCore::ScriptExecutionContext::Task>); - virtual void postTaskForModeToWorkerContext( - PassOwnPtr<WebCore::ScriptExecutionContext::Task>, const WebCore::String& mode); - - // Executes the given task on the main thread. - static void dispatchTaskToMainThread(PassOwnPtr<WebCore::ScriptExecutionContext::Task>); - -protected: - virtual WebWorkerClient* client() = 0; - virtual WebCommonWorkerClient* commonClient() = 0; - - void setWorkerThread(PassRefPtr<WebCore::WorkerThread> thread) { m_workerThread = thread; } - WebCore::WorkerThread* workerThread() { return m_workerThread.get(); } - - // Shuts down the worker thread. - void stopWorkerThread(); - - // Creates the shadow loader used for worker network requests. - void initializeLoader(const WebURL&); - -private: - // Function used to invoke tasks on the main thread. - static void invokeTaskMethod(void*); - - // Tasks that are run on the main thread. - static void postMessageTask( - WebCore::ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - WebCore::String message, - PassOwnPtr<WebCore::MessagePortChannelArray> channels); - static void postExceptionTask( - WebCore::ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - const WebCore::String& message, - int lineNumber, - const WebCore::String& sourceURL); - static void postConsoleMessageTask( - WebCore::ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - int destination, - int source, - int type, - int level, - const WebCore::String& message, - int lineNumber, - const WebCore::String& sourceURL); - static void confirmMessageTask( - WebCore::ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - bool hasPendingActivity); - static void reportPendingActivityTask( - WebCore::ScriptExecutionContext* context, - WebWorkerBase* thisPtr, - bool hasPendingActivity); - static void workerContextClosedTask( - WebCore::ScriptExecutionContext* context, - WebWorkerBase* thisPtr); - static void workerContextDestroyedTask( - WebCore::ScriptExecutionContext* context, - WebWorkerBase* thisPtr); - - // 'shadow page' - created to proxy loading requests from the worker. - RefPtr<WebCore::ScriptExecutionContext> m_loadingDocument; - WebView* m_webView; - bool m_askedToTerminate; - - RefPtr<WebCore::WorkerThread> m_workerThread; -}; - -} // namespace WebKit - -#endif // ENABLE(WORKERS) - -#endif diff --git a/webkit/api/src/WebWorkerClientImpl.cpp b/webkit/api/src/WebWorkerClientImpl.cpp deleted file mode 100644 index 6be03a7..0000000 --- a/webkit/api/src/WebWorkerClientImpl.cpp +++ /dev/null @@ -1,416 +0,0 @@ -/* - * 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 "WebWorkerClientImpl.h" - -#if ENABLE(WORKERS) - -#include "DedicatedWorkerThread.h" -#include "ErrorEvent.h" -#include "Frame.h" -#include "FrameLoaderClient.h" -#include "GenericWorkerTask.h" -#include "MessageEvent.h" -#include "MessagePort.h" -#include "MessagePortChannel.h" -#include "ScriptExecutionContext.h" -#include "Worker.h" -#include "WorkerContext.h" -#include "WorkerContextExecutionProxy.h" -#include "WorkerMessagingProxy.h" -#include <wtf/Threading.h> - -#include "FrameLoaderClientImpl.h" -#include "PlatformMessagePortChannel.h" -#include "WebFrameClient.h" -#include "WebFrameImpl.h" -#include "WebKit.h" -#include "WebKitClient.h" -#include "WebMessagePortChannel.h" -#include "WebString.h" -#include "WebURL.h" -#include "WebViewImpl.h" -#include "WebWorker.h" -#include "WebWorkerImpl.h" - -using namespace WebCore; - -namespace WebKit { - -// When WebKit creates a WorkerContextProxy object, we check if we're in the -// renderer or worker process. If the latter, then we just use -// WorkerMessagingProxy. -// -// If we're in the renderer process, then we need use the glue provided -// WebWorker object to talk to the worker process over IPC. The worker process -// talks to Worker* using WorkerObjectProxy, which we implement on -// WebWorkerClientImpl. -// -// Note that if we're running each worker in a separate process, then nested -// workers end up using the same codepath as the renderer process. - -// static -WorkerContextProxy* WebWorkerClientImpl::createWorkerContextProxy(Worker* worker) -{ - // Special behavior for multiple workers per process. - // FIXME: v8 doesn't support more than one workers per process. - // if (!worker->scriptExecutionContext()->isDocument()) - // return new WorkerMessagingProxy(worker); - - WebWorker* webWorker = 0; - WebWorkerClientImpl* proxy = new WebWorkerClientImpl(worker); - - if (worker->scriptExecutionContext()->isDocument()) { - Document* document = static_cast<Document*>( - worker->scriptExecutionContext()); - WebFrameImpl* webFrame = WebFrameImpl::fromFrame(document->frame()); - webWorker = webFrame->client()->createWorker(webFrame, proxy); - } else { - WorkerContextExecutionProxy* currentContext = - WorkerContextExecutionProxy::retrieve(); - if (!currentContext) { - ASSERT_NOT_REACHED(); - return 0; - } - - DedicatedWorkerThread* thread = - static_cast<DedicatedWorkerThread*>(currentContext->workerContext()->thread()); - WorkerObjectProxy* workerObjectProxy = &thread->workerObjectProxy(); - WebWorkerImpl* impl = reinterpret_cast<WebWorkerImpl*>(workerObjectProxy); - webWorker = impl->client()->createWorker(proxy); - } - - proxy->setWebWorker(webWorker); - return proxy; -} - -WebWorkerClientImpl::WebWorkerClientImpl(Worker* worker) - : m_scriptExecutionContext(worker->scriptExecutionContext()) - , m_worker(worker) - , m_askedToTerminate(false) - , m_unconfirmedMessageCount(0) - , m_workerContextHadPendingActivity(false) - , m_workerThreadId(currentThread()) -{ -} - -WebWorkerClientImpl::~WebWorkerClientImpl() -{ -} - -void WebWorkerClientImpl::setWebWorker(WebWorker* webWorker) -{ - m_webWorker = webWorker; -} - -void WebWorkerClientImpl::startWorkerContext(const KURL& scriptURL, - const String& userAgent, - const String& sourceCode) -{ - // Worker.terminate() could be called from JS before the context is started. - if (m_askedToTerminate) - return; - if (!isMainThread()) { - WebWorkerBase::dispatchTaskToMainThread(createCallbackTask( - &startWorkerContextTask, - this, - scriptURL.string(), - userAgent, - sourceCode)); - return; - } - m_webWorker->startWorkerContext(scriptURL, userAgent, sourceCode); -} - -void WebWorkerClientImpl::terminateWorkerContext() -{ - if (m_askedToTerminate) - return; - m_askedToTerminate = true; - if (!isMainThread()) { - WebWorkerBase::dispatchTaskToMainThread(createCallbackTask(&terminateWorkerContextTask, this)); - return; - } - m_webWorker->terminateWorkerContext(); -} - -void WebWorkerClientImpl::postMessageToWorkerContext( - PassRefPtr<SerializedScriptValue> message, - PassOwnPtr<MessagePortChannelArray> channels) -{ - // Worker.terminate() could be called from JS before the context is started. - if (m_askedToTerminate) - return; - ++m_unconfirmedMessageCount; - if (!isMainThread()) { - WebWorkerBase::dispatchTaskToMainThread(createCallbackTask(&postMessageToWorkerContextTask, - this, - message->toString(), - channels)); - return; - } - WebMessagePortChannelArray webChannels(channels.get() ? channels->size() : 0); - for (size_t i = 0; i < webChannels.size(); ++i) { - WebMessagePortChannel* webchannel = - (*channels)[i]->channel()->webChannelRelease(); - webchannel->setClient(0); - webChannels[i] = webchannel; - } - m_webWorker->postMessageToWorkerContext(message->toString(), webChannels); -} - -bool WebWorkerClientImpl::hasPendingActivity() const -{ - return !m_askedToTerminate - && (m_unconfirmedMessageCount || m_workerContextHadPendingActivity); -} - -void WebWorkerClientImpl::workerObjectDestroyed() -{ - if (isMainThread()) { - m_webWorker->workerObjectDestroyed(); - m_worker = 0; - } - // Even if this is called on the main thread, there could be a queued task for - // this object, so don't delete it right away. - WebWorkerBase::dispatchTaskToMainThread(createCallbackTask(&workerObjectDestroyedTask, - this)); -} - -void WebWorkerClientImpl::postMessageToWorkerObject(const WebString& message, - const WebMessagePortChannelArray& channels) -{ - OwnPtr<MessagePortChannelArray> channels2; - if (channels.size()) { - channels2 = new MessagePortChannelArray(channels.size()); - for (size_t i = 0; i < channels.size(); ++i) { - RefPtr<PlatformMessagePortChannel> platform_channel = - PlatformMessagePortChannel::create(channels[i]); - channels[i]->setClient(platform_channel.get()); - (*channels2)[i] = MessagePortChannel::create(platform_channel); - } - } - - if (currentThread() != m_workerThreadId) { - m_scriptExecutionContext->postTask(createCallbackTask(&postMessageToWorkerObjectTask, - this, - String(message), - channels2.release())); - return; - } - - postMessageToWorkerObjectTask(m_scriptExecutionContext.get(), this, - message, channels2.release()); -} - -void WebWorkerClientImpl::postExceptionToWorkerObject(const WebString& errorMessage, - int lineNumber, - const WebString& sourceURL) -{ - if (currentThread() != m_workerThreadId) { - m_scriptExecutionContext->postTask(createCallbackTask(&postExceptionToWorkerObjectTask, - this, - String(errorMessage), - lineNumber, - String(sourceURL))); - return; - } - - bool handled = false; - handled = m_worker->dispatchEvent(ErrorEvent::create(errorMessage, - sourceURL, - lineNumber)); - if (!handled) - m_scriptExecutionContext->reportException(errorMessage, lineNumber, sourceURL); -} - -void WebWorkerClientImpl::postConsoleMessageToWorkerObject(int destinationId, - int sourceId, - int messageType, - int messageLevel, - const WebString& message, - int lineNumber, - const WebString& sourceURL) -{ - if (currentThread() != m_workerThreadId) { - m_scriptExecutionContext->postTask(createCallbackTask(&postConsoleMessageToWorkerObjectTask, - this, - destinationId, - sourceId, - messageType, - messageLevel, - String(message), - lineNumber, - String(sourceURL))); - return; - } - - m_scriptExecutionContext->addMessage(static_cast<MessageDestination>(destinationId), - static_cast<MessageSource>(sourceId), - static_cast<MessageType>(messageType), - static_cast<MessageLevel>(messageLevel), - String(message), lineNumber, - String(sourceURL)); -} - -void WebWorkerClientImpl::confirmMessageFromWorkerObject(bool hasPendingActivity) -{ - // unconfirmed_message_count_ can only be updated on the thread where it's - // accessed. Otherwise there are race conditions with v8's garbage - // collection. - m_scriptExecutionContext->postTask(createCallbackTask(&confirmMessageFromWorkerObjectTask, - this)); -} - -void WebWorkerClientImpl::reportPendingActivity(bool hasPendingActivity) -{ - // See above comment in confirmMessageFromWorkerObject. - m_scriptExecutionContext->postTask(createCallbackTask(&reportPendingActivityTask, - this, - hasPendingActivity)); -} - -void WebWorkerClientImpl::workerContextDestroyed() -{ -} - -void WebWorkerClientImpl::workerContextClosed() -{ -} - -void WebWorkerClientImpl::startWorkerContextTask(ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const String& scriptURL, - const String& userAgent, - const String& sourceCode) -{ - thisPtr->m_webWorker->startWorkerContext(KURL(ParsedURLString, scriptURL), - userAgent, sourceCode); -} - -void WebWorkerClientImpl::terminateWorkerContextTask(ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr) -{ - thisPtr->m_webWorker->terminateWorkerContext(); -} - -void WebWorkerClientImpl::postMessageToWorkerContextTask(ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const String& message, - PassOwnPtr<MessagePortChannelArray> channels) -{ - WebMessagePortChannelArray webChannels(channels.get() ? channels->size() : 0); - - for (size_t i = 0; i < webChannels.size(); ++i) { - webChannels[i] = (*channels)[i]->channel()->webChannelRelease(); - webChannels[i]->setClient(0); - } - - thisPtr->m_webWorker->postMessageToWorkerContext(message, webChannels); -} - -void WebWorkerClientImpl::workerObjectDestroyedTask(ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr) -{ - if (thisPtr->m_worker) // Check we haven't alread called this. - thisPtr->m_webWorker->workerObjectDestroyed(); - delete thisPtr; -} - -void WebWorkerClientImpl::postMessageToWorkerObjectTask( - ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const String& message, - PassOwnPtr<MessagePortChannelArray> channels) -{ - - if (thisPtr->m_worker) { - OwnPtr<MessagePortArray> ports = - MessagePort::entanglePorts(*context, channels.release()); - RefPtr<SerializedScriptValue> serializedMessage = - SerializedScriptValue::create(message); - thisPtr->m_worker->dispatchEvent(MessageEvent::create(ports.release(), - serializedMessage.release())); - } -} - -void WebWorkerClientImpl::postExceptionToWorkerObjectTask( - ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const String& errorMessage, - int lineNumber, - const String& sourceURL) -{ - bool handled = false; - if (thisPtr->m_worker) - handled = thisPtr->m_worker->dispatchEvent(ErrorEvent::create(errorMessage, - sourceURL, - lineNumber)); - if (!handled) - thisPtr->m_scriptExecutionContext->reportException(errorMessage, - lineNumber, - sourceURL); -} - -void WebWorkerClientImpl::postConsoleMessageToWorkerObjectTask(ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - int destinationId, - int sourceId, - int messageType, - int messageLevel, - const String& message, - int lineNumber, - const String& sourceURL) -{ - thisPtr->m_scriptExecutionContext->addMessage(static_cast<MessageDestination>(destinationId), - static_cast<MessageSource>(sourceId), - static_cast<MessageType>(messageType), - static_cast<MessageLevel>(messageLevel), - message, lineNumber, - sourceURL); -} - -void WebWorkerClientImpl::confirmMessageFromWorkerObjectTask(ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr) -{ - thisPtr->m_unconfirmedMessageCount--; -} - -void WebWorkerClientImpl::reportPendingActivityTask(ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - bool hasPendingActivity) -{ - thisPtr->m_workerContextHadPendingActivity = hasPendingActivity; -} - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WebWorkerClientImpl.h b/webkit/api/src/WebWorkerClientImpl.h deleted file mode 100644 index 63acebc..0000000 --- a/webkit/api/src/WebWorkerClientImpl.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * 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. - */ - -#ifndef WebWorkerClientImpl_h -#define WebWorkerClientImpl_h - -#if ENABLE(WORKERS) - -// FIXME: fix to just "WebWorkerClient.h" once nobody in glue depends on us. -#include "../public/WebWorkerClient.h" - -#include "WorkerContextProxy.h" -#include <wtf/PassOwnPtr.h> -#include <wtf/RefPtr.h> - -namespace WebCore { -class ScriptExecutionContext; -} - -namespace WebKit { -class WebWorker; - -// The purpose of this class is to provide a WorkerContextProxy -// implementation that we can give to WebKit. Internally, it converts the -// data types to Chrome compatible ones so that renderer code can use it over -// IPC. -class WebWorkerClientImpl : public WebCore::WorkerContextProxy - , public WebWorkerClient { -public: - WebWorkerClientImpl(WebCore::Worker*); - - // WebCore::WorkerContextProxy Factory. - static WebCore::WorkerContextProxy* createWorkerContextProxy(WebCore::Worker*); - void setWebWorker(WebWorker*); - - // WebCore::WorkerContextProxy methods: - // These are called on the thread that created the worker. In the renderer - // process, this will be the main WebKit thread. In the worker process, this - // will be the thread of the executing worker (not the main WebKit thread). - virtual void startWorkerContext(const WebCore::KURL&, - const WebCore::String&, - const WebCore::String&); - virtual void terminateWorkerContext(); - virtual void postMessageToWorkerContext( - PassRefPtr<WebCore::SerializedScriptValue> message, - PassOwnPtr<WebCore::MessagePortChannelArray> channels); - virtual bool hasPendingActivity() const; - virtual void workerObjectDestroyed(); - - // WebWorkerClient methods: - // These are called on the main WebKit thread. - virtual void postMessageToWorkerObject(const WebString&, const WebMessagePortChannelArray&); - virtual void postExceptionToWorkerObject(const WebString&, int, const WebString&); - virtual void postConsoleMessageToWorkerObject(int, int, int, int, const WebString&, - int, const WebString&); - virtual void confirmMessageFromWorkerObject(bool); - virtual void reportPendingActivity(bool); - virtual void workerContextClosed(); - virtual void workerContextDestroyed(); - virtual WebWorker* createWorker(WebWorkerClient*) { return 0; } - virtual WebNotificationPresenter* notificationPresenter() - { - // FIXME: Notifications not yet supported in workers. - return 0; - } - -private: - virtual ~WebWorkerClientImpl(); - - // Methods used to support WebWorkerClientImpl being constructed on worker - // threads. - // These tasks are dispatched on the WebKit thread. - static void startWorkerContextTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const WebCore::String& scriptURL, - const WebCore::String& userAgent, - const WebCore::String& sourceCode); - static void terminateWorkerContextTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr); - static void postMessageToWorkerContextTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const WebCore::String& message, - PassOwnPtr<WebCore::MessagePortChannelArray> channels); - static void workerObjectDestroyedTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr); - - // These tasks are dispatched on the thread that created the worker (i.e. - // main WebKit thread in renderer process, and the worker thread in the - // worker process). - static void postMessageToWorkerObjectTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const WebCore::String& message, - PassOwnPtr<WebCore::MessagePortChannelArray> channels); - static void postExceptionToWorkerObjectTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - const WebCore::String& message, - int lineNumber, - const WebCore::String& sourceURL); - static void postConsoleMessageToWorkerObjectTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - int destinationId, - int sourceId, - int messageType, - int messageLevel, - const WebCore::String& message, - int lineNumber, - const WebCore::String& sourceURL); - static void confirmMessageFromWorkerObjectTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr); - static void reportPendingActivityTask(WebCore::ScriptExecutionContext* context, - WebWorkerClientImpl* thisPtr, - bool hasPendingActivity); - - // Guard against context from being destroyed before a worker exits. - RefPtr<WebCore::ScriptExecutionContext> m_scriptExecutionContext; - - WebCore::Worker* m_worker; - WebWorker* m_webWorker; - bool m_askedToTerminate; - unsigned m_unconfirmedMessageCount; - bool m_workerContextHadPendingActivity; - ThreadIdentifier m_workerThreadId; -}; - -} // namespace WebKit; - -#endif // ENABLE(WORKERS) - -#endif diff --git a/webkit/api/src/WebWorkerImpl.cpp b/webkit/api/src/WebWorkerImpl.cpp deleted file mode 100644 index 744be30..0000000 --- a/webkit/api/src/WebWorkerImpl.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/* - * 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 "WebWorkerImpl.h" - -#include "DedicatedWorkerContext.h" -#include "DedicatedWorkerThread.h" -#include "GenericWorkerTask.h" -#include "KURL.h" -#include "MessageEvent.h" -#include "MessagePort.h" -#include "MessagePortChannel.h" -#include "ScriptExecutionContext.h" -#include "SecurityOrigin.h" -#include "SerializedScriptValue.h" -#include "SubstituteData.h" -#include <wtf/Threading.h> - -#include "PlatformMessagePortChannel.h" -#include "WebMessagePortChannel.h" -#include "WebString.h" -#include "WebURL.h" -#include "WebWorkerClient.h" - -using namespace WebCore; - -namespace WebKit { - -#if ENABLE(WORKERS) - -WebWorker* WebWorker::create(WebWorkerClient* client) -{ - return new WebWorkerImpl(client); -} - - -WebWorkerImpl::WebWorkerImpl(WebWorkerClient* client) - : m_client(client) -{ -} - -WebWorkerImpl::~WebWorkerImpl() -{ -} - -WebCommonWorkerClient* WebWorkerImpl::commonClient() -{ - return m_client; -} - -void WebWorkerImpl::postMessageToWorkerContextTask(WebCore::ScriptExecutionContext* context, - WebWorkerImpl* thisPtr, - const String& message, - PassOwnPtr<MessagePortChannelArray> channels) -{ - ASSERT(context->isWorkerContext()); - DedicatedWorkerContext* workerContext = - static_cast<DedicatedWorkerContext*>(context); - - OwnPtr<MessagePortArray> ports = - MessagePort::entanglePorts(*context, channels.release()); - RefPtr<SerializedScriptValue> serializedMessage = - SerializedScriptValue::create(message); - workerContext->dispatchEvent(MessageEvent::create( - ports.release(), serializedMessage.release())); - thisPtr->confirmMessageFromWorkerObject(workerContext->hasPendingActivity()); -} - -// WebWorker ------------------------------------------------------------------- - -void WebWorkerImpl::startWorkerContext(const WebURL& scriptUrl, - const WebString& userAgent, - const WebString& sourceCode) -{ - initializeLoader(scriptUrl); - setWorkerThread(DedicatedWorkerThread::create(scriptUrl, userAgent, - sourceCode, *this, *this)); - // Worker initialization means a pending activity. - reportPendingActivity(true); - workerThread()->start(); -} - -void WebWorkerImpl::terminateWorkerContext() -{ - stopWorkerThread(); -} - -void WebWorkerImpl::postMessageToWorkerContext(const WebString& message, - const WebMessagePortChannelArray& webChannels) -{ - OwnPtr<MessagePortChannelArray> channels; - if (webChannels.size()) { - channels = new MessagePortChannelArray(webChannels.size()); - for (size_t i = 0; i < webChannels.size(); ++i) { - RefPtr<PlatformMessagePortChannel> platform_channel = - PlatformMessagePortChannel::create(webChannels[i]); - webChannels[i]->setClient(platform_channel.get()); - (*channels)[i] = MessagePortChannel::create(platform_channel); - } - } - - workerThread()->runLoop().postTask( - createCallbackTask(&postMessageToWorkerContextTask, - this, String(message), channels.release())); -} - -void WebWorkerImpl::workerObjectDestroyed() -{ - // Worker object in the renderer was destroyed, perhaps a result of GC. - // For us, it's a signal to start terminating the WorkerContext too. - // FIXME: when 'kill a worker' html5 spec algorithm is implemented, it - // should be used here instead of 'terminate a worker'. - terminateWorkerContext(); -} - -void WebWorkerImpl::clientDestroyed() -{ - m_client = 0; -} - -#else - -WebWorker* WebWorker::create(WebWorkerClient* client) -{ - return 0; -} - -#endif // ENABLE(WORKERS) - -} // namespace WebKit diff --git a/webkit/api/src/WebWorkerImpl.h b/webkit/api/src/WebWorkerImpl.h deleted file mode 100644 index bec96cd..0000000 --- a/webkit/api/src/WebWorkerImpl.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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. - */ - -#ifndef WebWorkerImpl_h -#define WebWorkerImpl_h - -#include "WebWorker.h" - -#if ENABLE(WORKERS) - -#include "ScriptExecutionContext.h" - -#include "WebWorkerBase.h" - -namespace WebKit { -class WebView; - -// This class is used by the worker process code to talk to the WebCore::Worker -// implementation. It can't use it directly since it uses WebKit types, so this -// class converts the data types. When the WebCore::Worker object wants to call -// WebCore::WorkerObjectProxy, this class will conver to Chrome data types first -// and then call the supplied WebWorkerClient. -class WebWorkerImpl : public WebWorkerBase, public WebWorker { -public: - explicit WebWorkerImpl(WebWorkerClient* client); - - // WebWorker methods: - virtual void startWorkerContext(const WebURL&, const WebString&, const WebString&); - virtual void terminateWorkerContext(); - virtual void postMessageToWorkerContext(const WebString&, const WebMessagePortChannelArray&); - virtual void workerObjectDestroyed(); - virtual void clientDestroyed(); - - // WebWorkerBase methods: - virtual WebWorkerClient* client() { return m_client; } - virtual WebCommonWorkerClient* commonClient(); - -private: - virtual ~WebWorkerImpl(); - - // Tasks that are run on the worker thread. - static void postMessageToWorkerContextTask( - WebCore::ScriptExecutionContext* context, - WebWorkerImpl* thisPtr, - const WebCore::String& message, - PassOwnPtr<WebCore::MessagePortChannelArray> channels); - - WebWorkerClient* m_client; - -}; - -} // namespace WebKit - -#endif // ENABLE(WORKERS) - -#endif diff --git a/webkit/api/src/WrappedResourceRequest.h b/webkit/api/src/WrappedResourceRequest.h deleted file mode 100644 index 97311db..0000000 --- a/webkit/api/src/WrappedResourceRequest.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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. - */ - -#ifndef WrappedResourceRequest_h -#define WrappedResourceRequest_h - -// FIXME: This relative path is a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebURLRequest.h" -#include "WebURLRequestPrivate.h" - -namespace WebKit { - -class WrappedResourceRequest : public WebURLRequest { -public: - ~WrappedResourceRequest() - { - reset(); // Need to drop reference to m_handle - } - - WrappedResourceRequest() { } - - WrappedResourceRequest(WebCore::ResourceRequest& resourceRequest) - { - bind(resourceRequest); - } - - WrappedResourceRequest(const WebCore::ResourceRequest& resourceRequest) - { - bind(resourceRequest); - } - - void bind(WebCore::ResourceRequest& resourceRequest) - { - m_handle.m_resourceRequest = &resourceRequest; - assign(&m_handle); - } - - void bind(const WebCore::ResourceRequest& resourceRequest) - { - bind(*const_cast<WebCore::ResourceRequest*>(&resourceRequest)); - } - -private: - class Handle : public WebURLRequestPrivate { - public: - virtual void dispose() { m_resourceRequest = 0; } - }; - - Handle m_handle; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/WrappedResourceResponse.h b/webkit/api/src/WrappedResourceResponse.h deleted file mode 100644 index af4f88f..0000000 --- a/webkit/api/src/WrappedResourceResponse.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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. - */ - -#ifndef WrappedResourceResponse_h -#define WrappedResourceResponse_h - -// FIXME: This relative path is a temporary hack to support using this -// header from webkit/glue. -#include "../public/WebURLResponse.h" -#include "WebURLResponsePrivate.h" - -namespace WebKit { - -class WrappedResourceResponse : public WebURLResponse { -public: - ~WrappedResourceResponse() - { - reset(); // Need to drop reference to m_handle - } - - WrappedResourceResponse() { } - - WrappedResourceResponse(WebCore::ResourceResponse& resourceResponse) - { - bind(resourceResponse); - } - - WrappedResourceResponse(const WebCore::ResourceResponse& resourceResponse) - { - bind(resourceResponse); - } - - void bind(WebCore::ResourceResponse& resourceResponse) - { - m_handle.m_resourceResponse = &resourceResponse; - assign(&m_handle); - } - - void bind(const WebCore::ResourceResponse& resourceResponse) - { - bind(*const_cast<WebCore::ResourceResponse*>(&resourceResponse)); - } - -private: - class Handle : public WebURLResponsePrivate { - public: - virtual void dispose() { m_resourceResponse = 0; } - }; - - Handle m_handle; -}; - -} // namespace WebKit - -#endif diff --git a/webkit/api/src/gtk/WebFontInfo.cpp b/webkit/api/src/gtk/WebFontInfo.cpp deleted file mode 100644 index 76ed618..0000000 --- a/webkit/api/src/gtk/WebFontInfo.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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 "WebFontInfo.h" - -#include <fontconfig/fontconfig.h> -#include <string.h> -#include <unicode/utf16.h> - -namespace WebKit { - -WebCString WebFontInfo::familyForChars(const WebUChar* characters, size_t numCharacters) -{ - FcCharSet* cset = FcCharSetCreate(); - for (size_t i = 0; i < numCharacters; ++i) { - if (U16_IS_SURROGATE(characters[i]) - && U16_IS_SURROGATE_LEAD(characters[i]) - && i != numCharacters - 1 - && U16_IS_TRAIL(characters[i + 1])) { - FcCharSetAddChar(cset, U16_GET_SUPPLEMENTARY(characters[i], characters[i+1])); - i++; - } else - FcCharSetAddChar(cset, characters[i]); - } - FcPattern* pattern = FcPatternCreate(); - - FcValue fcvalue; - fcvalue.type = FcTypeCharSet; - fcvalue.u.c = cset; - FcPatternAdd(pattern, FC_CHARSET, fcvalue, 0); - - fcvalue.type = FcTypeBool; - fcvalue.u.b = FcTrue; - FcPatternAdd(pattern, FC_SCALABLE, fcvalue, 0); - - FcConfigSubstitute(0, pattern, FcMatchPattern); - FcDefaultSubstitute(pattern); - - FcResult result; - FcFontSet* fontSet = FcFontSort(0, pattern, 0, 0, &result); - FcPatternDestroy(pattern); - FcCharSetDestroy(cset); - - if (!fontSet) - return WebCString(); - - // Older versions of fontconfig have a bug where they cannot select - // only scalable fonts so we have to manually filter the results. - for (int i = 0; i < fontSet->nfont; ++i) { - FcPattern* current = fontSet->fonts[i]; - FcBool isScalable; - - if (FcPatternGetBool(current, FC_SCALABLE, 0, &isScalable) != FcResultMatch - || !isScalable) - continue; - - // fontconfig can also return fonts which are unreadable - FcChar8* cFilename; - if (FcPatternGetString(current, FC_FILE, 0, &cFilename) != FcResultMatch) - continue; - - if (access(reinterpret_cast<char*>(cFilename), R_OK)) - continue; - - FcChar8* family; - WebCString result; - if (FcPatternGetString(current, FC_FAMILY, 0, &family) == FcResultMatch) { - const char* charFamily = reinterpret_cast<char*>(family); - result = WebCString(charFamily, strlen(charFamily)); - } - FcFontSetDestroy(fontSet); - return result; - } - - FcFontSetDestroy(fontSet); - return WebCString(); -} - -} // namespace WebKit diff --git a/webkit/api/src/gtk/WebInputEventFactory.cpp b/webkit/api/src/gtk/WebInputEventFactory.cpp deleted file mode 100644 index 890767c..0000000 --- a/webkit/api/src/gtk/WebInputEventFactory.cpp +++ /dev/null @@ -1,473 +0,0 @@ -/* - * Copyright (C) 2006-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 "WebInputEventFactory.h" - -#include "KeyboardCodes.h" -#include "KeyCodeConversion.h" - -#include "WebInputEvent.h" - -#include <gdk/gdk.h> -#include <gdk/gdkkeysyms.h> -#include <gtk/gtkversion.h> - -#include <wtf/Assertions.h> - -namespace WebKit { - -static double gdkEventTimeToWebEventTime(guint32 time) -{ - // Convert from time in ms to time in sec. - return time / 1000.0; -} - -static int gdkStateToWebEventModifiers(guint state) -{ - int modifiers = 0; - if (state & GDK_SHIFT_MASK) - modifiers |= WebInputEvent::ShiftKey; - if (state & GDK_CONTROL_MASK) - modifiers |= WebInputEvent::ControlKey; - if (state & GDK_MOD1_MASK) - modifiers |= WebInputEvent::AltKey; -#if GTK_CHECK_VERSION(2, 10, 0) - if (state & GDK_META_MASK) - modifiers |= WebInputEvent::MetaKey; -#endif - if (state & GDK_BUTTON1_MASK) - modifiers |= WebInputEvent::LeftButtonDown; - if (state & GDK_BUTTON2_MASK) - modifiers |= WebInputEvent::MiddleButtonDown; - if (state & GDK_BUTTON3_MASK) - modifiers |= WebInputEvent::RightButtonDown; - return modifiers; -} - -static int gdkEventToWindowsKeyCode(const GdkEventKey* event) -{ - static const unsigned int hardwareCodeToGDKKeyval[] = { - 0, // 0x00: - 0, // 0x01: - 0, // 0x02: - 0, // 0x03: - 0, // 0x04: - 0, // 0x05: - 0, // 0x06: - 0, // 0x07: - 0, // 0x08: - 0, // 0x09: GDK_Escape - GDK_1, // 0x0A: GDK_1 - GDK_2, // 0x0B: GDK_2 - GDK_3, // 0x0C: GDK_3 - GDK_4, // 0x0D: GDK_4 - GDK_5, // 0x0E: GDK_5 - GDK_6, // 0x0F: GDK_6 - GDK_7, // 0x10: GDK_7 - GDK_8, // 0x11: GDK_8 - GDK_9, // 0x12: GDK_9 - GDK_0, // 0x13: GDK_0 - GDK_minus, // 0x14: GDK_minus - GDK_equal, // 0x15: GDK_equal - 0, // 0x16: GDK_BackSpace - 0, // 0x17: GDK_Tab - GDK_q, // 0x18: GDK_q - GDK_w, // 0x19: GDK_w - GDK_e, // 0x1A: GDK_e - GDK_r, // 0x1B: GDK_r - GDK_t, // 0x1C: GDK_t - GDK_y, // 0x1D: GDK_y - GDK_u, // 0x1E: GDK_u - GDK_i, // 0x1F: GDK_i - GDK_o, // 0x20: GDK_o - GDK_p, // 0x21: GDK_p - GDK_bracketleft, // 0x22: GDK_bracketleft - GDK_bracketright, // 0x23: GDK_bracketright - 0, // 0x24: GDK_Return - 0, // 0x25: GDK_Control_L - GDK_a, // 0x26: GDK_a - GDK_s, // 0x27: GDK_s - GDK_d, // 0x28: GDK_d - GDK_f, // 0x29: GDK_f - GDK_g, // 0x2A: GDK_g - GDK_h, // 0x2B: GDK_h - GDK_j, // 0x2C: GDK_j - GDK_k, // 0x2D: GDK_k - GDK_l, // 0x2E: GDK_l - GDK_semicolon, // 0x2F: GDK_semicolon - GDK_apostrophe, // 0x30: GDK_apostrophe - GDK_grave, // 0x31: GDK_grave - 0, // 0x32: GDK_Shift_L - GDK_backslash, // 0x33: GDK_backslash - GDK_z, // 0x34: GDK_z - GDK_x, // 0x35: GDK_x - GDK_c, // 0x36: GDK_c - GDK_v, // 0x37: GDK_v - GDK_b, // 0x38: GDK_b - GDK_n, // 0x39: GDK_n - GDK_m, // 0x3A: GDK_m - GDK_comma, // 0x3B: GDK_comma - GDK_period, // 0x3C: GDK_period - GDK_slash, // 0x3D: GDK_slash - 0, // 0x3E: GDK_Shift_R - }; - - // |windowsKeyCode| has to include a valid virtual-key code even when we - // use non-US layouts, e.g. even when we type an 'A' key of a US keyboard - // on the Hebrew layout, |windowsKeyCode| should be VK_A. - // On the other hand, |event->keyval| value depends on the current - // GdkKeymap object, i.e. when we type an 'A' key of a US keyboard on - // the Hebrew layout, |event->keyval| becomes GDK_hebrew_shin and this - // WebCore::windowsKeyCodeForKeyEvent() call returns 0. - // To improve compatibilty with Windows, we use |event->hardware_keycode| - // for retrieving its Windows key-code for the keys when the - // WebCore::windowsKeyCodeForEvent() call returns 0. - // We shouldn't use |event->hardware_keycode| for keys that GdkKeymap - // objects cannot change because |event->hardware_keycode| doesn't change - // even when we change the layout options, e.g. when we swap a control - // key and a caps-lock key, GTK doesn't swap their - // |event->hardware_keycode| values but swap their |event->keyval| values. - int windowsKeyCode = WebCore::windowsKeyCodeForKeyEvent(event->keyval); - if (windowsKeyCode) - return windowsKeyCode; - - const int tableSize = sizeof(hardwareCodeToGDKKeyval) / sizeof(hardwareCodeToGDKKeyval[0]); - if (event->hardware_keycode < tableSize) { - int keyval = hardwareCodeToGDKKeyval[event->hardware_keycode]; - if (keyval) - return WebCore::windowsKeyCodeForKeyEvent(keyval); - } - - // This key is one that keyboard-layout drivers cannot change. - // Use |event->keyval| to retrieve its |windowsKeyCode| value. - return WebCore::windowsKeyCodeForKeyEvent(event->keyval); -} - -// Gets the corresponding control character of a specified key code. See: -// http://en.wikipedia.org/wiki/Control_characters -// We emulate Windows behavior here. -static WebUChar getControlCharacter(int windowsKeyCode, bool shift) -{ - if (windowsKeyCode >= WebCore::VKEY_A && windowsKeyCode <= WebCore::VKEY_Z) { - // ctrl-A ~ ctrl-Z map to \x01 ~ \x1A - return windowsKeyCode - WebCore::VKEY_A + 1; - } - if (shift) { - // following graphics chars require shift key to input. - switch (windowsKeyCode) { - // ctrl-@ maps to \x00 (Null byte) - case WebCore::VKEY_2: - return 0; - // ctrl-^ maps to \x1E (Record separator, Information separator two) - case WebCore::VKEY_6: - return 0x1E; - // ctrl-_ maps to \x1F (Unit separator, Information separator one) - case WebCore::VKEY_OEM_MINUS: - return 0x1F; - // Returns 0 for all other keys to avoid inputting unexpected chars. - default: - return 0; - } - } else { - switch (windowsKeyCode) { - // ctrl-[ maps to \x1B (Escape) - case WebCore::VKEY_OEM_4: - return 0x1B; - // ctrl-\ maps to \x1C (File separator, Information separator four) - case WebCore::VKEY_OEM_5: - return 0x1C; - // ctrl-] maps to \x1D (Group separator, Information separator three) - case WebCore::VKEY_OEM_6: - return 0x1D; - // ctrl-Enter maps to \x0A (Line feed) - case WebCore::VKEY_RETURN: - return 0x0A; - // Returns 0 for all other keys to avoid inputting unexpected chars. - default: - return 0; - } - } -} - -// WebKeyboardEvent ----------------------------------------------------------- - -WebKeyboardEvent WebInputEventFactory::keyboardEvent(const GdkEventKey* event) -{ - WebKeyboardEvent result; - - result.timeStampSeconds = gdkEventTimeToWebEventTime(event->time); - result.modifiers = gdkStateToWebEventModifiers(event->state); - - switch (event->type) { - case GDK_KEY_RELEASE: - result.type = WebInputEvent::KeyUp; - break; - case GDK_KEY_PRESS: - result.type = WebInputEvent::RawKeyDown; - break; - default: - ASSERT_NOT_REACHED(); - } - - // According to MSDN: - // http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx - // Key events with Alt modifier and F10 are system key events. - // We just emulate this behavior. It's necessary to prevent webkit from - // processing keypress event generated by alt-d, etc. - // F10 is not special on Linux, so don't treat it as system key. - if (result.modifiers & WebInputEvent::AltKey) - result.isSystemKey = true; - - // The key code tells us which physical key was pressed (for example, the - // A key went down or up). It does not determine whether A should be lower - // or upper case. This is what text does, which should be the keyval. - result.windowsKeyCode = gdkEventToWindowsKeyCode(event); - result.nativeKeyCode = event->hardware_keycode; - - if (result.windowsKeyCode == WebCore::VKEY_RETURN) - // We need to treat the enter key as a key press of character \r. This - // is apparently just how webkit handles it and what it expects. - result.unmodifiedText[0] = '\r'; - else - // FIXME: fix for non BMP chars - result.unmodifiedText[0] = - static_cast<WebUChar>(gdk_keyval_to_unicode(event->keyval)); - - // If ctrl key is pressed down, then control character shall be input. - if (result.modifiers & WebInputEvent::ControlKey) - result.text[0] = getControlCharacter( - result.windowsKeyCode, result.modifiers & WebInputEvent::ShiftKey); - else - result.text[0] = result.unmodifiedText[0]; - - result.setKeyIdentifierFromWindowsKeyCode(); - - // FIXME: Do we need to set IsAutoRepeat or IsKeyPad? - - return result; -} - -WebKeyboardEvent WebInputEventFactory::keyboardEvent(wchar_t character, int state, double timeStampSeconds) -{ - // keyboardEvent(const GdkEventKey*) depends on the GdkEventKey object and - // it is hard to use/ it from signal handlers which don't use GdkEventKey - // objects (e.g. GtkIMContext signal handlers.) For such handlers, this - // function creates a WebInputEvent::Char event without using a - // GdkEventKey object. - WebKeyboardEvent result; - result.type = WebKit::WebInputEvent::Char; - result.timeStampSeconds = timeStampSeconds; - result.modifiers = gdkStateToWebEventModifiers(state); - result.windowsKeyCode = character; - result.nativeKeyCode = character; - result.text[0] = character; - result.unmodifiedText[0] = character; - - // According to MSDN: - // http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx - // Key events with Alt modifier and F10 are system key events. - // We just emulate this behavior. It's necessary to prevent webkit from - // processing keypress event generated by alt-d, etc. - // F10 is not special on Linux, so don't treat it as system key. - if (result.modifiers & WebInputEvent::AltKey) - result.isSystemKey = true; - - return result; -} - -// WebMouseEvent -------------------------------------------------------------- - -WebMouseEvent WebInputEventFactory::mouseEvent(const GdkEventButton* event) -{ - WebMouseEvent result; - - result.timeStampSeconds = gdkEventTimeToWebEventTime(event->time); - - result.modifiers = gdkStateToWebEventModifiers(event->state); - result.x = static_cast<int>(event->x); - result.y = static_cast<int>(event->y); - result.windowX = result.x; - result.windowY = result.y; - result.globalX = static_cast<int>(event->x_root); - result.globalY = static_cast<int>(event->y_root); - result.clickCount = 0; - - switch (event->type) { - case GDK_3BUTTON_PRESS: - ++result.clickCount; - // fallthrough - case GDK_2BUTTON_PRESS: - ++result.clickCount; - // fallthrough - case GDK_BUTTON_PRESS: - result.type = WebInputEvent::MouseDown; - ++result.clickCount; - break; - case GDK_BUTTON_RELEASE: - result.type = WebInputEvent::MouseUp; - break; - - default: - ASSERT_NOT_REACHED(); - }; - - result.button = WebMouseEvent::ButtonNone; - if (event->button == 1) - result.button = WebMouseEvent::ButtonLeft; - else if (event->button == 2) - result.button = WebMouseEvent::ButtonMiddle; - else if (event->button == 3) - result.button = WebMouseEvent::ButtonRight; - - return result; -} - -WebMouseEvent WebInputEventFactory::mouseEvent(const GdkEventMotion* event) -{ - WebMouseEvent result; - - result.timeStampSeconds = gdkEventTimeToWebEventTime(event->time); - result.modifiers = gdkStateToWebEventModifiers(event->state); - result.x = static_cast<int>(event->x); - result.y = static_cast<int>(event->y); - result.windowX = result.x; - result.windowY = result.y; - result.globalX = static_cast<int>(event->x_root); - result.globalY = static_cast<int>(event->y_root); - - switch (event->type) { - case GDK_MOTION_NOTIFY: - result.type = WebInputEvent::MouseMove; - break; - default: - ASSERT_NOT_REACHED(); - } - - result.button = WebMouseEvent::ButtonNone; - if (event->state & GDK_BUTTON1_MASK) - result.button = WebMouseEvent::ButtonLeft; - else if (event->state & GDK_BUTTON2_MASK) - result.button = WebMouseEvent::ButtonMiddle; - else if (event->state & GDK_BUTTON3_MASK) - result.button = WebMouseEvent::ButtonRight; - - return result; -} - -WebMouseEvent WebInputEventFactory::mouseEvent(const GdkEventCrossing* event) -{ - WebMouseEvent result; - - result.timeStampSeconds = gdkEventTimeToWebEventTime(event->time); - result.modifiers = gdkStateToWebEventModifiers(event->state); - result.x = static_cast<int>(event->x); - result.y = static_cast<int>(event->y); - result.windowX = result.x; - result.windowY = result.y; - result.globalX = static_cast<int>(event->x_root); - result.globalY = static_cast<int>(event->y_root); - - switch (event->type) { - case GDK_ENTER_NOTIFY: - case GDK_LEAVE_NOTIFY: - // Note that if we sent MouseEnter or MouseLeave to WebKit, it - // wouldn't work - they don't result in the proper JavaScript events. - // MouseMove does the right thing. - result.type = WebInputEvent::MouseMove; - break; - default: - ASSERT_NOT_REACHED(); - } - - result.button = WebMouseEvent::ButtonNone; - if (event->state & GDK_BUTTON1_MASK) - result.button = WebMouseEvent::ButtonLeft; - else if (event->state & GDK_BUTTON2_MASK) - result.button = WebMouseEvent::ButtonMiddle; - else if (event->state & GDK_BUTTON3_MASK) - result.button = WebMouseEvent::ButtonRight; - - return result; -} - -// WebMouseWheelEvent --------------------------------------------------------- - -WebMouseWheelEvent WebInputEventFactory::mouseWheelEvent(const GdkEventScroll* event) -{ - WebMouseWheelEvent result; - - result.type = WebInputEvent::MouseWheel; - result.button = WebMouseEvent::ButtonNone; - - result.timeStampSeconds = gdkEventTimeToWebEventTime(event->time); - result.modifiers = gdkStateToWebEventModifiers(event->state); - result.x = static_cast<int>(event->x); - result.y = static_cast<int>(event->y); - result.windowX = result.x; - result.windowY = result.y; - result.globalX = static_cast<int>(event->x_root); - result.globalY = static_cast<int>(event->y_root); - - // How much should we scroll per mouse wheel event? - // - Windows uses 3 lines by default and obeys a system setting. - // - Mozilla has a pref that lets you either use the "system" number of lines - // to scroll, or lets the user override it. - // For the "system" number of lines, it appears they've hardcoded 3. - // See case NS_MOUSE_SCROLL in content/events/src/nsEventStateManager.cpp - // and InitMouseScrollEvent in widget/src/gtk2/nsCommonWidget.cpp . - // - Gtk makes the scroll amount a function of the size of the scroll bar, - // which is not available to us here. - // Instead, we pick a number that empirically matches Firefox's behavior. - static const float scrollbarPixelsPerTick = 160.0f / 3.0f; - - switch (event->direction) { - case GDK_SCROLL_UP: - result.deltaY = scrollbarPixelsPerTick; - result.wheelTicksY = 1; - break; - case GDK_SCROLL_DOWN: - result.deltaY = -scrollbarPixelsPerTick; - result.wheelTicksY = -1; - break; - case GDK_SCROLL_LEFT: - result.deltaX = scrollbarPixelsPerTick; - result.wheelTicksX = -1; // Match Windows positive/negative orientation - break; - case GDK_SCROLL_RIGHT: - result.deltaX = -scrollbarPixelsPerTick; - result.wheelTicksX = 1; - break; - } - - return result; -} - -} // namespace WebKit diff --git a/webkit/api/src/gtk/WebScreenInfoFactory.cpp b/webkit/api/src/gtk/WebScreenInfoFactory.cpp deleted file mode 100644 index 081daa2..0000000 --- a/webkit/api/src/gtk/WebScreenInfoFactory.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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 "WebScreenInfoFactory.h" - -#include "WebScreenInfo.h" -#include <gtk/gtk.h> - -namespace WebKit { - -WebScreenInfo WebScreenInfoFactory::screenInfo(GtkWidget* widget) -{ - WebScreenInfo results; - results.depth = 32; - results.depthPerComponent = 8; - results.isMonochrome = false; - - if (!widget) - return results; - - GdkScreen* screen = gtk_widget_get_screen(widget); - - results.rect = WebRect( - 0, 0, gdk_screen_get_width(screen), gdk_screen_get_height(screen)); - - // I don't know of a way to query the "maximize" size of the window (e.g. - // screen size less sidebars etc) since this is something which only the - // window manager knows. - results.availableRect = results.rect; - - return results; -} - -} // namespace WebKit diff --git a/webkit/api/src/linux/WebFontRendering.cpp b/webkit/api/src/linux/WebFontRendering.cpp deleted file mode 100644 index b9862f5..0000000 --- a/webkit/api/src/linux/WebFontRendering.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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 "WebFontRendering.h" - -#include "FontPlatformData.h" - -using WebCore::FontPlatformData; - -namespace WebKit { - -// static -void WebFontRendering::setHinting(SkPaint::Hinting hinting) -{ - FontPlatformData::setHinting(hinting); -} - -// static -void WebFontRendering::setAntiAlias(bool isAntiAlias) -{ - FontPlatformData::setAntiAlias(isAntiAlias); -} - -// static -void WebFontRendering::setSubpixelGlyphs(bool isSubpixelGlyphs) -{ - FontPlatformData::setSubpixelGlyphs(isSubpixelGlyphs); -} - -// static -void WebFontRendering::setLCDOrder(SkFontHost::LCDOrder order) -{ - SkFontHost::SetSubpixelOrder(order); -} - -// static -void WebFontRendering::setLCDOrientation(SkFontHost::LCDOrientation orientation) -{ - SkFontHost::SetSubpixelOrientation(orientation); -} - -} // namespace WebKit diff --git a/webkit/api/src/mac/WebInputEventFactory.mm b/webkit/api/src/mac/WebInputEventFactory.mm deleted file mode 100644 index d618228..0000000 --- a/webkit/api/src/mac/WebInputEventFactory.mm +++ /dev/null @@ -1,1196 +0,0 @@ -/* - * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. - * Copyright (C) 2006-2009 Google Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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 "WebInputEventFactory.h" - -#include <ApplicationServices/ApplicationServices.h> -#import <Cocoa/Cocoa.h> - -#include "WebInputEvent.h" -#include <wtf/ASCIICType.h> - -namespace WebKit { - -// WebKeyboardEvent ----------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// Begin Apple code, copied from KeyEventMac.mm -// -// We can share some of this code if we factored it out of KeyEventMac, but -// the main problem is that it relies on the NSString ctor on String for -// conversions, and since we're building without PLATFORM(MAC), we don't have -// that. As a result we have to use NSString here exclusively and thus tweak -// the code so it's not re-usable as-is. One possiblity would be to make the -// upstream code only use NSString, but I'm not certain how far that change -// would propagate. - -static inline bool isKeyUpEvent(NSEvent* event) -{ - if ([event type] != NSFlagsChanged) - return [event type] == NSKeyUp; - // FIXME: This logic fails if the user presses both Shift keys at once, for example: - // we treat releasing one of them as keyDown. - switch ([event keyCode]) { - case 54: // Right Command - case 55: // Left Command - return ([event modifierFlags] & NSCommandKeyMask) == 0; - - case 57: // Capslock - return ([event modifierFlags] & NSAlphaShiftKeyMask) == 0; - - case 56: // Left Shift - case 60: // Right Shift - return ([event modifierFlags] & NSShiftKeyMask) == 0; - - case 58: // Left Alt - case 61: // Right Alt - return ([event modifierFlags] & NSAlternateKeyMask) == 0; - - case 59: // Left Ctrl - case 62: // Right Ctrl - return ([event modifierFlags] & NSControlKeyMask) == 0; - - case 63: // Function - return ([event modifierFlags] & NSFunctionKeyMask) == 0; - } - return false; -} - -static bool isKeypadEvent(NSEvent* event) -{ - // Check that this is the type of event that has a keyCode. - switch ([event type]) { - case NSKeyDown: - case NSKeyUp: - case NSFlagsChanged: - break; - default: - return false; - } - - switch ([event keyCode]) { - case 71: // Clear - case 81: // = - case 75: // / - case 67: // * - case 78: // - - case 69: // + - case 76: // Enter - case 65: // . - case 82: // 0 - case 83: // 1 - case 84: // 2 - case 85: // 3 - case 86: // 4 - case 87: // 5 - case 88: // 6 - case 89: // 7 - case 91: // 8 - case 92: // 9 - return true; - } - - return false; -} - -static int windowsKeyCodeForKeyEvent(NSEvent* event) -{ - switch ([event keyCode]) { - // VK_TAB (09) TAB key - case 48: - return 0x09; - - // VK_APPS (5D) Right windows/meta key - case 54: // Right Command - return 0x5D; - - // VK_LWIN (5B) Left windows/meta key - case 55: // Left Command - return 0x5B; - - // VK_CAPITAL (14) caps locks key - case 57: // Capslock - return 0x14; - - // VK_SHIFT (10) either shift key - case 56: // Left Shift - case 60: // Right Shift - return 0x10; - - // VK_MENU (12) either alt key - case 58: // Left Alt - case 61: // Right Alt - return 0x12; - - // VK_CONTROL (11) either ctrl key - case 59: // Left Ctrl - case 62: // Right Ctrl - return 0x11; - -// Begin non-Apple addition --------------------------------------------------- - case 63: // Function (no Windows key code) - return 0; -// End non-Apple addition ----------------------------------------------------- - - // VK_CLEAR (0C) CLEAR key - case 71: return 0x0C; - - // VK_NUMPAD0 (60) Numeric keypad 0 key - case 82: return 0x60; - // VK_NUMPAD1 (61) Numeric keypad 1 key - case 83: return 0x61; - // VK_NUMPAD2 (62) Numeric keypad 2 key - case 84: return 0x62; - // VK_NUMPAD3 (63) Numeric keypad 3 key - case 85: return 0x63; - // VK_NUMPAD4 (64) Numeric keypad 4 key - case 86: return 0x64; - // VK_NUMPAD5 (65) Numeric keypad 5 key - case 87: return 0x65; - // VK_NUMPAD6 (66) Numeric keypad 6 key - case 88: return 0x66; - // VK_NUMPAD7 (67) Numeric keypad 7 key - case 89: return 0x67; - // VK_NUMPAD8 (68) Numeric keypad 8 key - case 91: return 0x68; - // VK_NUMPAD9 (69) Numeric keypad 9 key - case 92: return 0x69; - // VK_MULTIPLY (6A) Multiply key - case 67: return 0x6A; - // VK_ADD (6B) Add key - case 69: return 0x6B; - - // VK_SUBTRACT (6D) Subtract key - case 78: return 0x6D; - // VK_DECIMAL (6E) Decimal key - case 65: return 0x6E; - // VK_DIVIDE (6F) Divide key - case 75: return 0x6F; - } - -// Begin non-Apple addition --------------------------------------------------- - // |-[NSEvent charactersIgnoringModifiers]| isn't allowed for - // NSFlagsChanged, and conceivably we may not have caught everything - // which causes an NSFlagsChanged above. - if ([event type] == NSFlagsChanged) - return 0; -// End non-Apple addition ----------------------------------------------------- - - NSString* s = [event charactersIgnoringModifiers]; - if ([s length] != 1) - return 0; - - switch ([s characterAtIndex:0]) { - // VK_LBUTTON (01) Left mouse button - // VK_RBUTTON (02) Right mouse button - // VK_CANCEL (03) Control-break processing - // VK_MBUTTON (04) Middle mouse button (three-button mouse) - // VK_XBUTTON1 (05) - // VK_XBUTTON2 (06) - - // VK_BACK (08) BACKSPACE key - case 8: case 0x7F: return 0x08; - // VK_TAB (09) TAB key - case 9: return 0x09; - - // VK_CLEAR (0C) CLEAR key - // handled by key code above - - // VK_RETURN (0D) - case 0xD: case 3: return 0x0D; - - // VK_SHIFT (10) SHIFT key - // VK_CONTROL (11) CTRL key - // VK_MENU (12) ALT key - - // VK_PAUSE (13) PAUSE key - case NSPauseFunctionKey: return 0x13; - - // VK_CAPITAL (14) CAPS LOCK key - // VK_KANA (15) Input Method Editor (IME) Kana mode - // VK_HANGUEL (15) IME Hanguel mode (maintained for compatibility; use VK_HANGUL) - // VK_HANGUL (15) IME Hangul mode - // VK_JUNJA (17) IME Junja mode - // VK_FINAL (18) IME final mode - // VK_HANJA (19) IME Hanja mode - // VK_KANJI (19) IME Kanji mode - - // VK_ESCAPE (1B) ESC key - case 0x1B: return 0x1B; - - // VK_CONVERT (1C) IME convert - // VK_NONCONVERT (1D) IME nonconvert - // VK_ACCEPT (1E) IME accept - // VK_MODECHANGE (1F) IME mode change request - - // VK_SPACE (20) SPACEBAR - case ' ': return 0x20; - // VK_PRIOR (21) PAGE UP key - case NSPageUpFunctionKey: return 0x21; - // VK_NEXT (22) PAGE DOWN key - case NSPageDownFunctionKey: return 0x22; - // VK_END (23) END key - case NSEndFunctionKey: return 0x23; - // VK_HOME (24) HOME key - case NSHomeFunctionKey: return 0x24; - // VK_LEFT (25) LEFT ARROW key - case NSLeftArrowFunctionKey: return 0x25; - // VK_UP (26) UP ARROW key - case NSUpArrowFunctionKey: return 0x26; - // VK_RIGHT (27) RIGHT ARROW key - case NSRightArrowFunctionKey: return 0x27; - // VK_DOWN (28) DOWN ARROW key - case NSDownArrowFunctionKey: return 0x28; - // VK_SELECT (29) SELECT key - case NSSelectFunctionKey: return 0x29; - // VK_PRINT (2A) PRINT key - case NSPrintFunctionKey: return 0x2A; - // VK_EXECUTE (2B) EXECUTE key - case NSExecuteFunctionKey: return 0x2B; - // VK_SNAPSHOT (2C) PRINT SCREEN key - case NSPrintScreenFunctionKey: return 0x2C; - // VK_INSERT (2D) INS key - case NSInsertFunctionKey: case NSHelpFunctionKey: return 0x2D; - // VK_DELETE (2E) DEL key - case NSDeleteFunctionKey: return 0x2E; - - // VK_HELP (2F) HELP key - - // (30) 0 key - case '0': case ')': return 0x30; - // (31) 1 key - case '1': case '!': return 0x31; - // (32) 2 key - case '2': case '@': return 0x32; - // (33) 3 key - case '3': case '#': return 0x33; - // (34) 4 key - case '4': case '$': return 0x34; - // (35) 5 key - case '5': case '%': return 0x35; - // (36) 6 key - case '6': case '^': return 0x36; - // (37) 7 key - case '7': case '&': return 0x37; - // (38) 8 key - case '8': case '*': return 0x38; - // (39) 9 key - case '9': case '(': return 0x39; - // (41) A key - case 'a': case 'A': return 0x41; - // (42) B key - case 'b': case 'B': return 0x42; - // (43) C key - case 'c': case 'C': return 0x43; - // (44) D key - case 'd': case 'D': return 0x44; - // (45) E key - case 'e': case 'E': return 0x45; - // (46) F key - case 'f': case 'F': return 0x46; - // (47) G key - case 'g': case 'G': return 0x47; - // (48) H key - case 'h': case 'H': return 0x48; - // (49) I key - case 'i': case 'I': return 0x49; - // (4A) J key - case 'j': case 'J': return 0x4A; - // (4B) K key - case 'k': case 'K': return 0x4B; - // (4C) L key - case 'l': case 'L': return 0x4C; - // (4D) M key - case 'm': case 'M': return 0x4D; - // (4E) N key - case 'n': case 'N': return 0x4E; - // (4F) O key - case 'o': case 'O': return 0x4F; - // (50) P key - case 'p': case 'P': return 0x50; - // (51) Q key - case 'q': case 'Q': return 0x51; - // (52) R key - case 'r': case 'R': return 0x52; - // (53) S key - case 's': case 'S': return 0x53; - // (54) T key - case 't': case 'T': return 0x54; - // (55) U key - case 'u': case 'U': return 0x55; - // (56) V key - case 'v': case 'V': return 0x56; - // (57) W key - case 'w': case 'W': return 0x57; - // (58) X key - case 'x': case 'X': return 0x58; - // (59) Y key - case 'y': case 'Y': return 0x59; - // (5A) Z key - case 'z': case 'Z': return 0x5A; - - // VK_LWIN (5B) Left Windows key (Microsoft Natural keyboard) - // VK_RWIN (5C) Right Windows key (Natural keyboard) - // VK_APPS (5D) Applications key (Natural keyboard) - // VK_SLEEP (5F) Computer Sleep key - - // VK_NUMPAD0 (60) Numeric keypad 0 key - // VK_NUMPAD1 (61) Numeric keypad 1 key - // VK_NUMPAD2 (62) Numeric keypad 2 key - // VK_NUMPAD3 (63) Numeric keypad 3 key - // VK_NUMPAD4 (64) Numeric keypad 4 key - // VK_NUMPAD5 (65) Numeric keypad 5 key - // VK_NUMPAD6 (66) Numeric keypad 6 key - // VK_NUMPAD7 (67) Numeric keypad 7 key - // VK_NUMPAD8 (68) Numeric keypad 8 key - // VK_NUMPAD9 (69) Numeric keypad 9 key - // VK_MULTIPLY (6A) Multiply key - // VK_ADD (6B) Add key - // handled by key code above - - // VK_SEPARATOR (6C) Separator key - - // VK_SUBTRACT (6D) Subtract key - // VK_DECIMAL (6E) Decimal key - // VK_DIVIDE (6F) Divide key - // handled by key code above - - // VK_F1 (70) F1 key - case NSF1FunctionKey: return 0x70; - // VK_F2 (71) F2 key - case NSF2FunctionKey: return 0x71; - // VK_F3 (72) F3 key - case NSF3FunctionKey: return 0x72; - // VK_F4 (73) F4 key - case NSF4FunctionKey: return 0x73; - // VK_F5 (74) F5 key - case NSF5FunctionKey: return 0x74; - // VK_F6 (75) F6 key - case NSF6FunctionKey: return 0x75; - // VK_F7 (76) F7 key - case NSF7FunctionKey: return 0x76; - // VK_F8 (77) F8 key - case NSF8FunctionKey: return 0x77; - // VK_F9 (78) F9 key - case NSF9FunctionKey: return 0x78; - // VK_F10 (79) F10 key - case NSF10FunctionKey: return 0x79; - // VK_F11 (7A) F11 key - case NSF11FunctionKey: return 0x7A; - // VK_F12 (7B) F12 key - case NSF12FunctionKey: return 0x7B; - // VK_F13 (7C) F13 key - case NSF13FunctionKey: return 0x7C; - // VK_F14 (7D) F14 key - case NSF14FunctionKey: return 0x7D; - // VK_F15 (7E) F15 key - case NSF15FunctionKey: return 0x7E; - // VK_F16 (7F) F16 key - case NSF16FunctionKey: return 0x7F; - // VK_F17 (80H) F17 key - case NSF17FunctionKey: return 0x80; - // VK_F18 (81H) F18 key - case NSF18FunctionKey: return 0x81; - // VK_F19 (82H) F19 key - case NSF19FunctionKey: return 0x82; - // VK_F20 (83H) F20 key - case NSF20FunctionKey: return 0x83; - // VK_F21 (84H) F21 key - case NSF21FunctionKey: return 0x84; - // VK_F22 (85H) F22 key - case NSF22FunctionKey: return 0x85; - // VK_F23 (86H) F23 key - case NSF23FunctionKey: return 0x86; - // VK_F24 (87H) F24 key - case NSF24FunctionKey: return 0x87; - - // VK_NUMLOCK (90) NUM LOCK key - - // VK_SCROLL (91) SCROLL LOCK key - case NSScrollLockFunctionKey: return 0x91; - - // VK_LSHIFT (A0) Left SHIFT key - // VK_RSHIFT (A1) Right SHIFT key - // VK_LCONTROL (A2) Left CONTROL key - // VK_RCONTROL (A3) Right CONTROL key - // VK_LMENU (A4) Left MENU key - // VK_RMENU (A5) Right MENU key - // VK_BROWSER_BACK (A6) Windows 2000/XP: Browser Back key - // VK_BROWSER_FORWARD (A7) Windows 2000/XP: Browser Forward key - // VK_BROWSER_REFRESH (A8) Windows 2000/XP: Browser Refresh key - // VK_BROWSER_STOP (A9) Windows 2000/XP: Browser Stop key - // VK_BROWSER_SEARCH (AA) Windows 2000/XP: Browser Search key - // VK_BROWSER_FAVORITES (AB) Windows 2000/XP: Browser Favorites key - // VK_BROWSER_HOME (AC) Windows 2000/XP: Browser Start and Home key - // VK_VOLUME_MUTE (AD) Windows 2000/XP: Volume Mute key - // VK_VOLUME_DOWN (AE) Windows 2000/XP: Volume Down key - // VK_VOLUME_UP (AF) Windows 2000/XP: Volume Up key - // VK_MEDIA_NEXT_TRACK (B0) Windows 2000/XP: Next Track key - // VK_MEDIA_PREV_TRACK (B1) Windows 2000/XP: Previous Track key - // VK_MEDIA_STOP (B2) Windows 2000/XP: Stop Media key - // VK_MEDIA_PLAY_PAUSE (B3) Windows 2000/XP: Play/Pause Media key - // VK_LAUNCH_MAIL (B4) Windows 2000/XP: Start Mail key - // VK_LAUNCH_MEDIA_SELECT (B5) Windows 2000/XP: Select Media key - // VK_LAUNCH_APP1 (B6) Windows 2000/XP: Start Application 1 key - // VK_LAUNCH_APP2 (B7) Windows 2000/XP: Start Application 2 key - - // VK_OEM_1 (BA) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ';:' key - case ';': case ':': return 0xBA; - // VK_OEM_PLUS (BB) Windows 2000/XP: For any country/region, the '+' key - case '=': case '+': return 0xBB; - // VK_OEM_COMMA (BC) Windows 2000/XP: For any country/region, the ',' key - case ',': case '<': return 0xBC; - // VK_OEM_MINUS (BD) Windows 2000/XP: For any country/region, the '-' key - case '-': case '_': return 0xBD; - // VK_OEM_PERIOD (BE) Windows 2000/XP: For any country/region, the '.' key - case '.': case '>': return 0xBE; - // VK_OEM_2 (BF) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '/?' key - case '/': case '?': return 0xBF; - // VK_OEM_3 (C0) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '`~' key - case '`': case '~': return 0xC0; - // VK_OEM_4 (DB) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '[{' key - case '[': case '{': return 0xDB; - // VK_OEM_5 (DC) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '\|' key - case '\\': case '|': return 0xDC; - // VK_OEM_6 (DD) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ']}' key - case ']': case '}': return 0xDD; - // VK_OEM_7 (DE) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key - case '\'': case '"': return 0xDE; - - // VK_OEM_8 (DF) Used for miscellaneous characters; it can vary by keyboard. - // VK_OEM_102 (E2) Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard - // VK_PROCESSKEY (E5) Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key - // VK_PACKET (E7) Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT,SendInput, WM_KEYDOWN, and WM_KEYUP - // VK_ATTN (F6) Attn key - // VK_CRSEL (F7) CrSel key - // VK_EXSEL (F8) ExSel key - // VK_EREOF (F9) Erase EOF key - // VK_PLAY (FA) Play key - // VK_ZOOM (FB) Zoom key - // VK_NONAME (FC) Reserved for future use - // VK_PA1 (FD) PA1 key - // VK_OEM_CLEAR (FE) Clear key - } - - return 0; -} - -static inline NSString* textFromEvent(NSEvent* event) -{ - if ([event type] == NSFlagsChanged) - return @""; - return [event characters]; -} - -static inline NSString* unmodifiedTextFromEvent(NSEvent* event) -{ - if ([event type] == NSFlagsChanged) - return @""; - return [event charactersIgnoringModifiers]; -} - -static NSString* keyIdentifierForKeyEvent(NSEvent* event) -{ - if ([event type] == NSFlagsChanged) { - switch ([event keyCode]) { - case 54: // Right Command - case 55: // Left Command - return @"Meta"; - - case 57: // Capslock - return @"CapsLock"; - - case 56: // Left Shift - case 60: // Right Shift - return @"Shift"; - - case 58: // Left Alt - case 61: // Right Alt - return @"Alt"; - - case 59: // Left Ctrl - case 62: // Right Ctrl - return @"Control"; - -// Begin non-Apple addition/modification -------------------------------------- - case 63: // Function - return @"Function"; - - default: // Unknown, but this may be a strange/new keyboard. - return @"Unidentified"; -// End non-Apple addition/modification ---------------------------------------- - } - } - - NSString* s = [event charactersIgnoringModifiers]; - if ([s length] != 1) - return @"Unidentified"; - - unichar c = [s characterAtIndex:0]; - switch (c) { - // Each identifier listed in the DOM spec is listed here. - // Many are simply commented out since they do not appear on standard Macintosh keyboards - // or are on a key that doesn't have a corresponding character. - - // "Accept" - // "AllCandidates" - - // "Alt" - case NSMenuFunctionKey: - return @"Alt"; - - // "Apps" - // "BrowserBack" - // "BrowserForward" - // "BrowserHome" - // "BrowserRefresh" - // "BrowserSearch" - // "BrowserStop" - // "CapsLock" - - // "Clear" - case NSClearLineFunctionKey: - return @"Clear"; - - // "CodeInput" - // "Compose" - // "Control" - // "Crsel" - // "Convert" - // "Copy" - // "Cut" - - // "Down" - case NSDownArrowFunctionKey: - return @"Down"; - // "End" - case NSEndFunctionKey: - return @"End"; - // "Enter" - case 0x3: case 0xA: case 0xD: // Macintosh calls the one on the main keyboard Return, but Windows calls it Enter, so we'll do the same for the DOM - return @"Enter"; - - // "EraseEof" - - // "Execute" - case NSExecuteFunctionKey: - return @"Execute"; - - // "Exsel" - - // "F1" - case NSF1FunctionKey: - return @"F1"; - // "F2" - case NSF2FunctionKey: - return @"F2"; - // "F3" - case NSF3FunctionKey: - return @"F3"; - // "F4" - case NSF4FunctionKey: - return @"F4"; - // "F5" - case NSF5FunctionKey: - return @"F5"; - // "F6" - case NSF6FunctionKey: - return @"F6"; - // "F7" - case NSF7FunctionKey: - return @"F7"; - // "F8" - case NSF8FunctionKey: - return @"F8"; - // "F9" - case NSF9FunctionKey: - return @"F9"; - // "F10" - case NSF10FunctionKey: - return @"F10"; - // "F11" - case NSF11FunctionKey: - return @"F11"; - // "F12" - case NSF12FunctionKey: - return @"F12"; - // "F13" - case NSF13FunctionKey: - return @"F13"; - // "F14" - case NSF14FunctionKey: - return @"F14"; - // "F15" - case NSF15FunctionKey: - return @"F15"; - // "F16" - case NSF16FunctionKey: - return @"F16"; - // "F17" - case NSF17FunctionKey: - return @"F17"; - // "F18" - case NSF18FunctionKey: - return @"F18"; - // "F19" - case NSF19FunctionKey: - return @"F19"; - // "F20" - case NSF20FunctionKey: - return @"F20"; - // "F21" - case NSF21FunctionKey: - return @"F21"; - // "F22" - case NSF22FunctionKey: - return @"F22"; - // "F23" - case NSF23FunctionKey: - return @"F23"; - // "F24" - case NSF24FunctionKey: - return @"F24"; - - // "FinalMode" - - // "Find" - case NSFindFunctionKey: - return @"Find"; - - // "FullWidth" - // "HalfWidth" - // "HangulMode" - // "HanjaMode" - - // "Help" - case NSHelpFunctionKey: - return @"Help"; - - // "Hiragana" - - // "Home" - case NSHomeFunctionKey: - return @"Home"; - // "Insert" - case NSInsertFunctionKey: - return @"Insert"; - - // "JapaneseHiragana" - // "JapaneseKatakana" - // "JapaneseRomaji" - // "JunjaMode" - // "KanaMode" - // "KanjiMode" - // "Katakana" - // "LaunchApplication1" - // "LaunchApplication2" - // "LaunchMail" - - // "Left" - case NSLeftArrowFunctionKey: - return @"Left"; - - // "Meta" - // "MediaNextTrack" - // "MediaPlayPause" - // "MediaPreviousTrack" - // "MediaStop" - - // "ModeChange" - case NSModeSwitchFunctionKey: - return @"ModeChange"; - - // "Nonconvert" - // "NumLock" - - // "PageDown" - case NSPageDownFunctionKey: - return @"PageDown"; - // "PageUp" - case NSPageUpFunctionKey: - return @"PageUp"; - - // "Paste" - - // "Pause" - case NSPauseFunctionKey: - return @"Pause"; - - // "Play" - // "PreviousCandidate" - - // "PrintScreen" - case NSPrintScreenFunctionKey: - return @"PrintScreen"; - - // "Process" - // "Props" - - // "Right" - case NSRightArrowFunctionKey: - return @"Right"; - - // "RomanCharacters" - - // "Scroll" - case NSScrollLockFunctionKey: - return @"Scroll"; - // "Select" - case NSSelectFunctionKey: - return @"Select"; - - // "SelectMedia" - // "Shift" - - // "Stop" - case NSStopFunctionKey: - return @"Stop"; - // "Up" - case NSUpArrowFunctionKey: - return @"Up"; - // "Undo" - case NSUndoFunctionKey: - return @"Undo"; - - // "VolumeDown" - // "VolumeMute" - // "VolumeUp" - // "Win" - // "Zoom" - - // More function keys, not in the key identifier specification. - case NSF25FunctionKey: - return @"F25"; - case NSF26FunctionKey: - return @"F26"; - case NSF27FunctionKey: - return @"F27"; - case NSF28FunctionKey: - return @"F28"; - case NSF29FunctionKey: - return @"F29"; - case NSF30FunctionKey: - return @"F30"; - case NSF31FunctionKey: - return @"F31"; - case NSF32FunctionKey: - return @"F32"; - case NSF33FunctionKey: - return @"F33"; - case NSF34FunctionKey: - return @"F34"; - case NSF35FunctionKey: - return @"F35"; - - // Turn 0x7F into 0x08, because backspace needs to always be 0x08. - case 0x7F: - return @"U+0008"; - // Standard says that DEL becomes U+007F. - case NSDeleteFunctionKey: - return @"U+007F"; - - // Always use 0x09 for tab instead of AppKit's backtab character. - case NSBackTabCharacter: - return @"U+0009"; - - case NSBeginFunctionKey: - case NSBreakFunctionKey: - case NSClearDisplayFunctionKey: - case NSDeleteCharFunctionKey: - case NSDeleteLineFunctionKey: - case NSInsertCharFunctionKey: - case NSInsertLineFunctionKey: - case NSNextFunctionKey: - case NSPrevFunctionKey: - case NSPrintFunctionKey: - case NSRedoFunctionKey: - case NSResetFunctionKey: - case NSSysReqFunctionKey: - case NSSystemFunctionKey: - case NSUserFunctionKey: - // FIXME: We should use something other than the vendor-area Unicode values for the above keys. - // For now, just fall through to the default. - default: - return [NSString stringWithFormat:@"U+%04X", WTF::toASCIIUpper(c)]; - } -} - -// End Apple code. -// ---------------------------------------------------------------------------- - -static inline int modifiersFromEvent(NSEvent* event) { - int modifiers = 0; - - if ([event modifierFlags] & NSControlKeyMask) - modifiers |= WebInputEvent::ControlKey; - if ([event modifierFlags] & NSShiftKeyMask) - modifiers |= WebInputEvent::ShiftKey; - if ([event modifierFlags] & NSAlternateKeyMask) - modifiers |= WebInputEvent::AltKey; - if ([event modifierFlags] & NSCommandKeyMask) - modifiers |= WebInputEvent::MetaKey; - // TODO(port): Set mouse button states - - return modifiers; -} - -WebKeyboardEvent WebInputEventFactory::keyboardEvent(NSEvent* event) -{ - WebKeyboardEvent result; - - result.type = - isKeyUpEvent(event) ? WebInputEvent::KeyUp : WebInputEvent::RawKeyDown; - - result.modifiers = modifiersFromEvent(event); - - if (isKeypadEvent(event)) - result.modifiers |= WebInputEvent::IsKeyPad; - - if (([event type] != NSFlagsChanged) && [event isARepeat]) - result.modifiers |= WebInputEvent::IsAutoRepeat; - - result.windowsKeyCode = windowsKeyCodeForKeyEvent(event); - result.nativeKeyCode = [event keyCode]; - - NSString* textStr = textFromEvent(event); - NSString* unmodifiedStr = unmodifiedTextFromEvent(event); - NSString* identifierStr = keyIdentifierForKeyEvent(event); - - // Begin Apple code, copied from KeyEventMac.mm - - // Always use 13 for Enter/Return -- we don't want to use AppKit's - // different character for Enter. - if (result.windowsKeyCode == '\r') { - textStr = @"\r"; - unmodifiedStr = @"\r"; - } - - // The adjustments below are only needed in backward compatibility mode, - // but we cannot tell what mode we are in from here. - - // Turn 0x7F into 8, because backspace needs to always be 8. - if ([textStr isEqualToString:@"\x7F"]) - textStr = @"\x8"; - if ([unmodifiedStr isEqualToString:@"\x7F"]) - unmodifiedStr = @"\x8"; - // Always use 9 for tab -- we don't want to use AppKit's different character - // for shift-tab. - if (result.windowsKeyCode == 9) { - textStr = @"\x9"; - unmodifiedStr = @"\x9"; - } - - // End Apple code. - - if ([textStr length] < WebKeyboardEvent::textLengthCap && - [unmodifiedStr length] < WebKeyboardEvent::textLengthCap) { - [textStr getCharacters:&result.text[0]]; - [unmodifiedStr getCharacters:&result.unmodifiedText[0]]; - } else - ASSERT_NOT_REACHED(); - - [identifierStr getCString:&result.keyIdentifier[0] - maxLength:sizeof(result.keyIdentifier) - encoding:NSASCIIStringEncoding]; - - result.timeStampSeconds = [event timestamp]; - - // Windows and Linux set |isSystemKey| if alt is down. WebKit looks at this - // flag to decide if it should handle a key or not. E.g. alt-left/right - // shouldn't be used by WebKit to scroll the current page, because we want - // to get that key back for it to do history navigation. Hence, the - // corresponding situation on OS X is to set this for cmd key presses. - if (result.modifiers & WebInputEvent::MetaKey) - result.isSystemKey = true; - - return result; -} - -WebKeyboardEvent WebInputEventFactory::keyboardEvent(wchar_t character, - int modifiers, - double timeStampSeconds) -{ - // keyboardEvent(NSEvent*) depends on the NSEvent object and - // it is hard to use it from methods of the NSTextInput protocol. For - // such methods, this function creates a WebInputEvent::Char event without - // using a NSEvent object. - WebKeyboardEvent result; - result.type = WebKit::WebInputEvent::Char; - result.timeStampSeconds = timeStampSeconds; - result.modifiers = modifiers; - result.windowsKeyCode = character; - result.nativeKeyCode = character; - result.text[0] = character; - result.unmodifiedText[0] = character; - - // Windows and Linux set |isSystemKey| if alt is down. WebKit looks at this - // flag to decide if it should handle a key or not. E.g. alt-left/right - // shouldn't be used by WebKit to scroll the current page, because we want - // to get that key back for it to do history navigation. Hence, the - // corresponding situation on OS X is to set this for cmd key presses. - if (result.modifiers & WebInputEvent::MetaKey) - result.isSystemKey = true; - - return result; -} - -// WebMouseEvent -------------------------------------------------------------- - -WebMouseEvent WebInputEventFactory::mouseEvent(NSEvent* event, NSView* view) -{ - WebMouseEvent result; - - result.clickCount = 0; - - switch ([event type]) { - case NSMouseExited: - result.type = WebInputEvent::MouseLeave; - result.button = WebMouseEvent::ButtonNone; - break; - case NSLeftMouseDown: - result.type = WebInputEvent::MouseDown; - result.clickCount = [event clickCount]; - result.button = WebMouseEvent::ButtonLeft; - break; - case NSOtherMouseDown: - result.type = WebInputEvent::MouseDown; - result.clickCount = [event clickCount]; - result.button = WebMouseEvent::ButtonMiddle; - break; - case NSRightMouseDown: - result.type = WebInputEvent::MouseDown; - result.clickCount = [event clickCount]; - result.button = WebMouseEvent::ButtonRight; - break; - case NSLeftMouseUp: - result.type = WebInputEvent::MouseUp; - result.button = WebMouseEvent::ButtonLeft; - break; - case NSOtherMouseUp: - result.type = WebInputEvent::MouseUp; - result.button = WebMouseEvent::ButtonMiddle; - break; - case NSRightMouseUp: - result.type = WebInputEvent::MouseUp; - result.button = WebMouseEvent::ButtonRight; - break; - case NSMouseMoved: - case NSMouseEntered: - result.type = WebInputEvent::MouseMove; - break; - case NSLeftMouseDragged: - result.type = WebInputEvent::MouseMove; - result.button = WebMouseEvent::ButtonLeft; - break; - case NSOtherMouseDragged: - result.type = WebInputEvent::MouseMove; - result.button = WebMouseEvent::ButtonMiddle; - break; - case NSRightMouseDragged: - result.type = WebInputEvent::MouseMove; - result.button = WebMouseEvent::ButtonRight; - break; - default: - ASSERT_NOT_REACHED(); - } - - NSPoint location = [NSEvent mouseLocation]; // global coordinates - result.globalX = location.x; - result.globalY = [[[view window] screen] frame].size.height - location.y; - - NSPoint windowLocal = [event locationInWindow]; - location = [view convertPoint:windowLocal fromView:nil]; - result.y = [view frame].size.height - location.y; // flip y - result.x = location.x; - result.windowX = result.x; - result.windowY = result.y; - - result.modifiers = modifiersFromEvent(event); - - result.timeStampSeconds = [event timestamp]; - - return result; -} - -// WebMouseWheelEvent --------------------------------------------------------- - -WebMouseWheelEvent WebInputEventFactory::mouseWheelEvent(NSEvent* event, NSView* view) -{ - WebMouseWheelEvent result; - - result.type = WebInputEvent::MouseWheel; - result.button = WebMouseEvent::ButtonNone; - - result.modifiers = modifiersFromEvent(event); - - // Set coordinates by translating event coordinates from screen to client. - NSPoint location = [NSEvent mouseLocation]; // global coordinates - result.globalX = location.x; - result.globalY = location.y; - NSPoint windowLocal = [event locationInWindow]; - location = [view convertPoint:windowLocal fromView:nil]; - result.x = location.x; - result.y = [view frame].size.height - location.y; // flip y - result.windowX = result.x; - result.windowY = result.y; - - // Of Mice and Men - // --------------- - // - // There are three types of scroll data available on a scroll wheel CGEvent. - // Apple's documentation ([1]) is rather vague in their differences, and not - // terribly helpful in deciding which to use. This is what's really going on. - // - // First, these events behave very differently depending on whether a standard - // wheel mouse is used (one that scrolls in discrete units) or a - // trackpad/Mighty Mouse is used (which both provide continuous scrolling). - // You must check to see which was used for the event by testing the - // kCGScrollWheelEventIsContinuous field. - // - // Second, these events refer to "axes". Axis 1 is the y-axis, and axis 2 is - // the x-axis. - // - // Third, there is a concept of mouse acceleration. Scrolling the same amount - // of physical distance will give you different results logically depending on - // whether you scrolled a little at a time or in one continuous motion. Some - // fields account for this while others do not. - // - // Fourth, for trackpads there is a concept of chunkiness. When scrolling - // continuously, events can be delivered in chunks. That is to say, lots of - // scroll events with delta 0 will be delivered, and every so often an event - // with a non-zero delta will be delivered, containing the accumulated deltas - // from all the intermediate moves. [2] - // - // For notchy wheel mice (kCGScrollWheelEventIsContinuous == 0) - // ------------------------------------------------------------ - // - // kCGScrollWheelEventDeltaAxis* - // This is the rawest of raw events. For each mouse notch you get a value of - // +1/-1. This does not take acceleration into account and thus is less - // useful for building UIs. - // - // kCGScrollWheelEventPointDeltaAxis* - // This is smarter. In general, for each mouse notch you get a value of - // +1/-1, but this _does_ take acceleration into account, so you will get - // larger values on longer scrolls. This field would be ideal for building - // UIs except for one nasty bug: when the shift key is pressed, this set of - // fields fails to move the value into the axis2 field (the other two types - // of data do). This wouldn't be so bad except for the fact that while the - // number of axes is used in the creation of a CGScrollWheelEvent, there is - // no way to get that information out of the event once created. - // - // kCGScrollWheelEventFixedPtDeltaAxis* - // This is a fixed value, and for each mouse notch you get a value of - // +0.1/-0.1 (but, like above, scaled appropriately for acceleration). This - // value takes acceleration into account, and in fact is identical to the - // results you get from -[NSEvent delta*]. (That is, if you linked on Tiger - // or greater; see [2] for details.) - // - // A note about continuous devices - // ------------------------------- - // - // There are two devices that provide continuous scrolling events (trackpads - // and Mighty Mouses) and they behave rather differently. The Mighty Mouse - // behaves a lot like a regular mouse. There is no chunking, and the - // FixedPtDelta values are the PointDelta values multiplied by 0.1. With the - // trackpad, though, there is chunking. While the FixedPtDelta values are - // reasonable (they occur about every fifth event but have values five times - // larger than usual) the Delta values are unreasonable. They don't appear to - // accumulate properly. - // - // For continuous devices (kCGScrollWheelEventIsContinuous != 0) - // ------------------------------------------------------------- - // - // kCGScrollWheelEventDeltaAxis* - // This provides values with no acceleration. With a trackpad, these values - // are chunked but each non-zero value does not appear to be cumulative. - // This seems to be a bug. - // - // kCGScrollWheelEventPointDeltaAxis* - // This provides values with acceleration. With a trackpad, these values are - // not chunked and are highly accurate. - // - // kCGScrollWheelEventFixedPtDeltaAxis* - // This provides values with acceleration. With a trackpad, these values are - // chunked but unlike Delta events are properly cumulative. - // - // Summary - // ------- - // - // In general the best approach to take is: determine if the event is - // continuous. If it is not, then use the FixedPtDelta events (or just stick - // with Cocoa events). They provide both acceleration and proper horizontal - // scrolling. If the event is continuous, then doing pixel scrolling with the - // PointDelta is the way to go. In general, avoid the Delta events. They're - // the oldest (dating back to 10.4, before CGEvents were public) but they lack - // acceleration and precision, making them useful only in specific edge cases. - // - // References - // ---------- - // - // [1] <http://developer.apple.com/documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html> - // [2] <http://developer.apple.com/releasenotes/Cocoa/AppKitOlderNotes.html> - // Scroll to the section headed "NSScrollWheel events". - // - // P.S. The "smooth scrolling" option in the system preferences is utterly - // unrelated to any of this. - - CGEventRef cgEvent = [event CGEvent]; - ASSERT(cgEvent); - - // Wheel ticks are supposed to be raw, unaccelerated values, one per physical - // mouse wheel notch. The delta event is perfect for this (being a good - // "specific edge case" as mentioned above). Trackpads, unfortunately, do - // event chunking, and sending mousewheel events with 0 ticks causes some - // websites to malfunction. Therefore, for all continuous input devices we use - // the point delta data instead, since we cannot distinguish trackpad data - // from data from any other continuous device. - - if (CGEventGetIntegerValueField(cgEvent, kCGScrollWheelEventIsContinuous)) { - result.wheelTicksY = result.deltaY = - CGEventGetIntegerValueField(cgEvent, kCGScrollWheelEventPointDeltaAxis1); - result.wheelTicksX = result.deltaX = - CGEventGetIntegerValueField(cgEvent, kCGScrollWheelEventPointDeltaAxis2); - } else { - result.wheelTicksY = - CGEventGetIntegerValueField(cgEvent, kCGScrollWheelEventDeltaAxis1); - result.wheelTicksX = - CGEventGetIntegerValueField(cgEvent, kCGScrollWheelEventDeltaAxis2); - - // Convert wheel delta amount to a number of pixels to scroll. - static const double scrollbarPixelsPerCocoaTick = 40.0; - - result.deltaX = [event deltaX] * scrollbarPixelsPerCocoaTick; - result.deltaY = [event deltaY] * scrollbarPixelsPerCocoaTick; - } - - result.timeStampSeconds = [event timestamp]; - - return result; -} - -} // namespace WebKit diff --git a/webkit/api/src/mac/WebScreenInfoFactory.mm b/webkit/api/src/mac/WebScreenInfoFactory.mm deleted file mode 100644 index 2805f7a..0000000 --- a/webkit/api/src/mac/WebScreenInfoFactory.mm +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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 "WebScreenInfoFactory.h" - -#import <AppKit/AppKit.h> - -#include "WebScreenInfo.h" - -namespace WebKit { - -static NSScreen* screenForWindow(NSWindow* window) -{ - NSScreen* screen = [window screen]; // nil if the window is off-screen - if (screen) - return screen; - - NSArray* screens = [NSScreen screens]; - if ([screens count] > 0) - return [screens objectAtIndex:0]; // screen containing the menubar - - return nil; -} - -static WebRect toUserSpace(const NSRect& rect, NSWindow* destination) -{ - CGRect userRect = NSRectToCGRect(rect); - - userRect.origin.y = - NSMaxY([screenForWindow(destination) frame]) - (userRect.origin.y + userRect.size.height); // flip - - if (destination) { - CGFloat scale = 1 / [destination userSpaceScaleFactor]; // scale down - userRect.origin.x *= scale; - userRect.origin.y *= scale; - userRect.size.width *= scale; - userRect.size.height *= scale; - } - - return WebRect(userRect.origin.x, - userRect.origin.y, - userRect.size.width, - userRect.size.height); -} - -WebScreenInfo WebScreenInfoFactory::screenInfo(NSView* view) -{ - NSString *colorSpace = NSColorSpaceFromDepth([[NSScreen deepestScreen] depth]); - - WebScreenInfo results; - results.depth = - NSBitsPerPixelFromDepth([[NSScreen deepestScreen] depth]); - results.depthPerComponent = - NSBitsPerSampleFromDepth([[NSScreen deepestScreen] depth]); - results.isMonochrome = colorSpace == NSCalibratedWhiteColorSpace - || colorSpace == NSCalibratedBlackColorSpace - || colorSpace == NSDeviceWhiteColorSpace - || colorSpace == NSDeviceBlackColorSpace; - results.rect = - toUserSpace([screenForWindow([view window]) frame], [view window]); - results.availableRect = - toUserSpace([screenForWindow([view window]) visibleFrame], [view window]); - return results; -} - -} // namespace WebKit diff --git a/webkit/api/src/win/WebInputEventFactory.cpp b/webkit/api/src/win/WebInputEventFactory.cpp deleted file mode 100644 index a5bd935..0000000 --- a/webkit/api/src/win/WebInputEventFactory.cpp +++ /dev/null @@ -1,437 +0,0 @@ -/* - * Copyright (C) 2006-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 "WebInputEventFactory.h" - -#include "WebInputEvent.h" - -#include <wtf/Assertions.h> - -namespace WebKit { - -static const unsigned long defaultScrollLinesPerWheelDelta = 3; -static const unsigned long defaultScrollCharsPerWheelDelta = 1; - -// WebKeyboardEvent ----------------------------------------------------------- - -static bool isKeyPad(WPARAM wparam, LPARAM lparam) -{ - bool keypad = false; - switch (wparam) { - case VK_RETURN: - keypad = (lparam >> 16) & KF_EXTENDED; - break; - case VK_INSERT: - case VK_DELETE: - case VK_HOME: - case VK_END: - case VK_PRIOR: - case VK_NEXT: - case VK_UP: - case VK_DOWN: - case VK_LEFT: - case VK_RIGHT: - keypad = !((lparam >> 16) & KF_EXTENDED); - break; - case VK_NUMLOCK: - case VK_NUMPAD0: - case VK_NUMPAD1: - case VK_NUMPAD2: - case VK_NUMPAD3: - case VK_NUMPAD4: - case VK_NUMPAD5: - case VK_NUMPAD6: - case VK_NUMPAD7: - case VK_NUMPAD8: - case VK_NUMPAD9: - case VK_DIVIDE: - case VK_MULTIPLY: - case VK_SUBTRACT: - case VK_ADD: - case VK_DECIMAL: - case VK_CLEAR: - keypad = true; - break; - default: - keypad = false; - } - return keypad; -} - -WebKeyboardEvent WebInputEventFactory::keyboardEvent(HWND hwnd, UINT message, - WPARAM wparam, LPARAM lparam) -{ - WebKeyboardEvent result; - - // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that - // GetMessageTime() refers to is the same one that we're passed in? Perhaps - // one of the construction parameters should be the time passed by the - // caller, who would know for sure. - result.timeStampSeconds = GetMessageTime() / 1000.0; - - result.windowsKeyCode = result.nativeKeyCode = static_cast<int>(wparam); - - switch (message) { - case WM_SYSKEYDOWN: - result.isSystemKey = true; - case WM_KEYDOWN: - result.type = WebInputEvent::RawKeyDown; - break; - case WM_SYSKEYUP: - result.isSystemKey = true; - case WM_KEYUP: - result.type = WebInputEvent::KeyUp; - break; - case WM_IME_CHAR: - result.type = WebInputEvent::Char; - break; - case WM_SYSCHAR: - result.isSystemKey = true; - result.type = WebInputEvent::Char; - case WM_CHAR: - result.type = WebInputEvent::Char; - break; - default: - ASSERT_NOT_REACHED(); - } - - if (result.type == WebInputEvent::Char || result.type == WebInputEvent::RawKeyDown) { - result.text[0] = result.windowsKeyCode; - result.unmodifiedText[0] = result.windowsKeyCode; - } - if (result.type != WebInputEvent::Char) - result.setKeyIdentifierFromWindowsKeyCode(); - - if (GetKeyState(VK_SHIFT) & 0x8000) - result.modifiers |= WebInputEvent::ShiftKey; - if (GetKeyState(VK_CONTROL) & 0x8000) - result.modifiers |= WebInputEvent::ControlKey; - if (GetKeyState(VK_MENU) & 0x8000) - result.modifiers |= WebInputEvent::AltKey; - // NOTE: There doesn't seem to be a way to query the mouse button state in - // this case. - - if (LOWORD(lparam) > 1) - result.modifiers |= WebInputEvent::IsAutoRepeat; - if (isKeyPad(wparam, lparam)) - result.modifiers |= WebInputEvent::IsKeyPad; - - return result; -} - -// WebMouseEvent -------------------------------------------------------------- - -static int gLastClickCount; -static double gLastClickTime; - -static LPARAM GetRelativeCursorPos(HWND hwnd) -{ - POINT pos = {-1, -1}; - GetCursorPos(&pos); - ScreenToClient(hwnd, &pos); - return MAKELPARAM(pos.x, pos.y); -} - -void WebInputEventFactory::resetLastClickState() -{ - gLastClickTime = gLastClickCount = 0; -} - -WebMouseEvent WebInputEventFactory::mouseEvent(HWND hwnd, UINT message, - WPARAM wparam, LPARAM lparam) -{ - WebMouseEvent result; //(WebInputEvent::Uninitialized()); - - switch (message) { - case WM_MOUSEMOVE: - result.type = WebInputEvent::MouseMove; - if (wparam & MK_LBUTTON) - result.button = WebMouseEvent::ButtonLeft; - else if (wparam & MK_MBUTTON) - result.button = WebMouseEvent::ButtonMiddle; - else if (wparam & MK_RBUTTON) - result.button = WebMouseEvent::ButtonRight; - else - result.button = WebMouseEvent::ButtonNone; - break; - case WM_MOUSELEAVE: - result.type = WebInputEvent::MouseLeave; - result.button = WebMouseEvent::ButtonNone; - // set the current mouse position (relative to the client area of the - // current window) since none is specified for this event - lparam = GetRelativeCursorPos(hwnd); - break; - case WM_LBUTTONDOWN: - case WM_LBUTTONDBLCLK: - result.type = WebInputEvent::MouseDown; - result.button = WebMouseEvent::ButtonLeft; - break; - case WM_MBUTTONDOWN: - case WM_MBUTTONDBLCLK: - result.type = WebInputEvent::MouseDown; - result.button = WebMouseEvent::ButtonMiddle; - break; - case WM_RBUTTONDOWN: - case WM_RBUTTONDBLCLK: - result.type = WebInputEvent::MouseDown; - result.button = WebMouseEvent::ButtonRight; - break; - case WM_LBUTTONUP: - result.type = WebInputEvent::MouseUp; - result.button = WebMouseEvent::ButtonLeft; - break; - case WM_MBUTTONUP: - result.type = WebInputEvent::MouseUp; - result.button = WebMouseEvent::ButtonMiddle; - break; - case WM_RBUTTONUP: - result.type = WebInputEvent::MouseUp; - result.button = WebMouseEvent::ButtonRight; - break; - default: - ASSERT_NOT_REACHED(); - } - - // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that - // GetMessageTime() refers to is the same one that we're passed in? Perhaps - // one of the construction parameters should be the time passed by the - // caller, who would know for sure. - result.timeStampSeconds = GetMessageTime() / 1000.0; - - // set position fields: - - result.x = static_cast<short>(LOWORD(lparam)); - result.y = static_cast<short>(HIWORD(lparam)); - result.windowX = result.x; - result.windowY = result.y; - - POINT globalPoint = { result.x, result.y }; - ClientToScreen(hwnd, &globalPoint); - - result.globalX = globalPoint.x; - result.globalY = globalPoint.y; - - // calculate number of clicks: - - // This differs slightly from the WebKit code in WebKit/win/WebView.cpp - // where their original code looks buggy. - static int lastClickPositionX; - static int lastClickPositionY; - static WebMouseEvent::Button lastClickButton = WebMouseEvent::ButtonLeft; - - double currentTime = result.timeStampSeconds; - bool cancelPreviousClick = - (abs(lastClickPositionX - result.x) > (GetSystemMetrics(SM_CXDOUBLECLK) / 2)) - || (abs(lastClickPositionY - result.y) > (GetSystemMetrics(SM_CYDOUBLECLK) / 2)) - || ((currentTime - gLastClickTime) * 1000.0 > GetDoubleClickTime()); - - if (result.type == WebInputEvent::MouseDown) { - if (!cancelPreviousClick && (result.button == lastClickButton)) - ++gLastClickCount; - else { - gLastClickCount = 1; - lastClickPositionX = result.x; - lastClickPositionY = result.y; - } - gLastClickTime = currentTime; - lastClickButton = result.button; - } else if (result.type == WebInputEvent::MouseMove - || result.type == WebInputEvent::MouseLeave) { - if (cancelPreviousClick) { - gLastClickCount = 0; - lastClickPositionX = 0; - lastClickPositionY = 0; - gLastClickTime = 0; - } - } - result.clickCount = gLastClickCount; - - // set modifiers: - - if (wparam & MK_CONTROL) - result.modifiers |= WebInputEvent::ControlKey; - if (wparam & MK_SHIFT) - result.modifiers |= WebInputEvent::ShiftKey; - if (GetKeyState(VK_MENU) & 0x8000) - result.modifiers |= WebInputEvent::AltKey; - if (wparam & MK_LBUTTON) - result.modifiers |= WebInputEvent::LeftButtonDown; - if (wparam & MK_MBUTTON) - result.modifiers |= WebInputEvent::MiddleButtonDown; - if (wparam & MK_RBUTTON) - result.modifiers |= WebInputEvent::RightButtonDown; - - return result; -} - -// WebMouseWheelEvent --------------------------------------------------------- - -WebMouseWheelEvent WebInputEventFactory::mouseWheelEvent(HWND hwnd, UINT message, - WPARAM wparam, LPARAM lparam) -{ - WebMouseWheelEvent result; //(WebInputEvent::Uninitialized()); - - result.type = WebInputEvent::MouseWheel; - - // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that - // GetMessageTime() refers to is the same one that we're passed in? Perhaps - // one of the construction parameters should be the time passed by the - // caller, who would know for sure. - result.timeStampSeconds = GetMessageTime() / 1000.0; - - result.button = WebMouseEvent::ButtonNone; - - // Get key state, coordinates, and wheel delta from event. - typedef SHORT (WINAPI *GetKeyStateFunction)(int key); - GetKeyStateFunction getKeyState; - UINT keyState; - float wheelDelta; - bool horizontalScroll = false; - if ((message == WM_VSCROLL) || (message == WM_HSCROLL)) { - // Synthesize mousewheel event from a scroll event. This is needed to - // simulate middle mouse scrolling in some laptops. Use GetAsyncKeyState - // for key state since we are synthesizing the input event. - getKeyState = GetAsyncKeyState; - keyState = 0; - if (getKeyState(VK_SHIFT)) - keyState |= MK_SHIFT; - if (getKeyState(VK_CONTROL)) - keyState |= MK_CONTROL; - // NOTE: There doesn't seem to be a way to query the mouse button state - // in this case. - - POINT cursorPosition = {0}; - GetCursorPos(&cursorPosition); - result.globalX = cursorPosition.x; - result.globalY = cursorPosition.y; - - switch (LOWORD(wparam)) { - case SB_LINEUP: // == SB_LINELEFT - wheelDelta = WHEEL_DELTA; - break; - case SB_LINEDOWN: // == SB_LINERIGHT - wheelDelta = -WHEEL_DELTA; - break; - case SB_PAGEUP: - wheelDelta = 1; - result.scrollByPage = true; - break; - case SB_PAGEDOWN: - wheelDelta = -1; - result.scrollByPage = true; - break; - default: // We don't supoprt SB_THUMBPOSITION or SB_THUMBTRACK here. - wheelDelta = 0; - break; - } - - if (message == WM_HSCROLL) - horizontalScroll = true; - } else { - // Non-synthesized event; we can just read data off the event. - getKeyState = GetKeyState; - keyState = GET_KEYSTATE_WPARAM(wparam); - - result.globalX = static_cast<short>(LOWORD(lparam)); - result.globalY = static_cast<short>(HIWORD(lparam)); - - wheelDelta = static_cast<float>(GET_WHEEL_DELTA_WPARAM(wparam)); - if (message == WM_MOUSEHWHEEL) { - horizontalScroll = true; - wheelDelta = -wheelDelta; // Windows is <- -/+ ->, WebKit <- +/- ->. - } - } - if (keyState & MK_SHIFT) - horizontalScroll = true; - - // Set modifiers based on key state. - if (keyState & MK_SHIFT) - result.modifiers |= WebInputEvent::ShiftKey; - if (keyState & MK_CONTROL) - result.modifiers |= WebInputEvent::ControlKey; - if (getKeyState(VK_MENU) & 0x8000) - result.modifiers |= WebInputEvent::AltKey; - if (keyState & MK_LBUTTON) - result.modifiers |= WebInputEvent::LeftButtonDown; - if (keyState & MK_MBUTTON) - result.modifiers |= WebInputEvent::MiddleButtonDown; - if (keyState & MK_RBUTTON) - result.modifiers |= WebInputEvent::RightButtonDown; - - // Set coordinates by translating event coordinates from screen to client. - POINT clientPoint = { result.globalX, result.globalY }; - MapWindowPoints(0, hwnd, &clientPoint, 1); - result.x = clientPoint.x; - result.y = clientPoint.y; - result.windowX = result.x; - result.windowY = result.y; - - // Convert wheel delta amount to a number of pixels to scroll. - // - // How many pixels should we scroll per line? Gecko uses the height of the - // current line, which means scroll distance changes as you go through the - // page or go to different pages. IE 7 is ~50 px/line, although the value - // seems to vary slightly by page and zoom level. Since IE 7 has a smoothing - // algorithm on scrolling, it can get away with slightly larger scroll values - // without feeling jerky. Here we use 100 px per three lines (the default - // scroll amount is three lines per wheel tick). - static const float scrollbarPixelsPerLine = 100.0f / 3.0f; - wheelDelta /= WHEEL_DELTA; - float scrollDelta = wheelDelta; - if (horizontalScroll) { - unsigned long scrollChars = defaultScrollCharsPerWheelDelta; - SystemParametersInfo(SPI_GETWHEELSCROLLCHARS, 0, &scrollChars, 0); - // TODO(pkasting): Should probably have a different multiplier - // scrollbarPixelsPerChar here. - scrollDelta *= static_cast<float>(scrollChars) * scrollbarPixelsPerLine; - } else { - unsigned long scrollLines = defaultScrollLinesPerWheelDelta; - SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &scrollLines, 0); - if (scrollLines == WHEEL_PAGESCROLL) - result.scrollByPage = true; - if (!result.scrollByPage) - scrollDelta *= static_cast<float>(scrollLines) * scrollbarPixelsPerLine; - } - - // Set scroll amount based on above calculations. WebKit expects positive - // deltaY to mean "scroll up" and positive deltaX to mean "scroll left". - if (horizontalScroll) { - result.deltaX = scrollDelta; - result.wheelTicksX = wheelDelta; - } else { - result.deltaY = scrollDelta; - result.wheelTicksY = wheelDelta; - } - - return result; -} - -} // namespace WebKit diff --git a/webkit/api/src/win/WebScreenInfoFactory.cpp b/webkit/api/src/win/WebScreenInfoFactory.cpp deleted file mode 100644 index 8416acc..0000000 --- a/webkit/api/src/win/WebScreenInfoFactory.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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 "WebScreenInfoFactory.h" - -#include "WebScreenInfo.h" - -#include <windows.h> - -namespace WebKit { - -static WebRect toWebRect(const RECT& input) -{ - WebRect output; - output.x = input.left; - output.y = input.top; - output.width = input.right - input.left; - output.height = input.bottom - input.top; - return output; -} - -WebScreenInfo WebScreenInfoFactory::screenInfo(HWND window) -{ - HMONITOR monitor = MonitorFromWindow(window, MONITOR_DEFAULTTOPRIMARY); - - MONITORINFOEX monitorInfo; - monitorInfo.cbSize = sizeof(MONITORINFOEX); - GetMonitorInfo(monitor, &monitorInfo); - - DEVMODE devMode; - devMode.dmSize = sizeof(devMode); - devMode.dmDriverExtra = 0; - EnumDisplaySettings(monitorInfo.szDevice, ENUM_CURRENT_SETTINGS, &devMode); - - WebScreenInfo results; - results.depth = devMode.dmBitsPerPel; - results.depthPerComponent = devMode.dmBitsPerPel / 3; // Assumes RGB - results.isMonochrome = devMode.dmColor == DMCOLOR_MONOCHROME; - results.rect = toWebRect(monitorInfo.rcMonitor); - results.availableRect = toWebRect(monitorInfo.rcWork); - return results; -} - -} // namespace WebKit diff --git a/webkit/api/src/x11/WebScreenInfoFactory.cpp b/webkit/api/src/x11/WebScreenInfoFactory.cpp deleted file mode 100644 index 548880c..0000000 --- a/webkit/api/src/x11/WebScreenInfoFactory.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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 "WebScreenInfoFactory.h" - -#include "WebScreenInfo.h" - -#include <X11/Xlib.h> - -namespace WebKit { - -WebScreenInfo WebScreenInfoFactory::screenInfo(Display* display, int screenNumber) -{ - WebScreenInfo results; - // FIXME: not all screens with use 8bpp. - results.depthPerComponent = 8; - - int displayWidth = XDisplayWidth(display, screenNumber); - int displayHeight = XDisplayHeight(display, screenNumber); - results.depth = XDisplayPlanes(display, screenNumber); - results.isMonochrome = results.depth == 1; - - results.rect = WebRect(0, 0, displayWidth, displayHeight); - - // I don't know of a way to query the "maximize" size of the window (e.g. - // screen size less sidebars etc) since this is something which only the - // window manager knows. - results.availableRect = results.rect; - - return results; -} - -} // namespace WebKit |