Merge from Chromium at DEPS revision r205460

This commit was generated by merge_to_master.py.

Change-Id: Id50fcfa40590db3bd322348190cb5192c432eadf
diff --git a/public/webpage/WebAccessibilityNotification.h b/public/webpage/WebAccessibilityNotification.h
new file mode 100644
index 0000000..629d988
--- /dev/null
+++ b/public/webpage/WebAccessibilityNotification.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2010 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 WebAccessibilityNotification_h
+#define WebAccessibilityNotification_h
+
+namespace WebKit {
+
+// These values must match WebCore::AXObjectCache::AXNotification values.
+// Enforced in AssertMatchingEnums.cpp.
+enum WebAccessibilityNotification {
+    WebAccessibilityNotificationActiveDescendantChanged,
+    WebAccessibilityNotificationAutocorrectionOccured,
+    WebAccessibilityNotificationCheckedStateChanged,
+    WebAccessibilityNotificationChildrenChanged,
+    WebAccessibilityNotificationFocusedUIElementChanged,
+    WebAccessibilityNotificationLayoutComplete,
+    WebAccessibilityNotificationLoadComplete,
+    WebAccessibilityNotificationSelectedChildrenChanged,
+    WebAccessibilityNotificationSelectedTextChanged,
+    WebAccessibilityNotificationValueChanged,
+    WebAccessibilityNotificationScrolledToAnchor,
+    WebAccessibilityNotificationLiveRegionChanged,
+    WebAccessibilityNotificationMenuListItemSelected,
+    WebAccessibilityNotificationMenuListValueChanged,
+    WebAccessibilityNotificationRowCountChanged,
+    WebAccessibilityNotificationRowCollapsed,
+    WebAccessibilityNotificationRowExpanded,
+    WebAccessibilityNotificationInvalidStatusChanged,
+    WebAccessibilityNotificationTextChanged,
+    WebAccessibilityNotificationAriaAttributeChanged
+};
+
+} // namespace WebKit
+
+#endif // WebAccessibilityNotification_h
diff --git a/public/webpage/WebAccessibilityObject.h b/public/webpage/WebAccessibilityObject.h
new file mode 100644
index 0000000..a8f149a
--- /dev/null
+++ b/public/webpage/WebAccessibilityObject.h
@@ -0,0 +1,216 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "../platform/WebVector.h"
+#include "WebAccessibilityRole.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebCore { class AccessibilityObject; }
+
+namespace WebKit {
+
+class WebNode;
+class WebDocument;
+class WebString;
+class WebURL;
+struct WebPoint;
+struct WebRect;
+
+// A container for passing around a reference to AccessibilityObject.
+class WebAccessibilityObject {
+public:
+    ~WebAccessibilityObject() { reset(); }
+
+    WebAccessibilityObject() { }
+    WebAccessibilityObject(const WebAccessibilityObject& o) { assign(o); }
+    WebAccessibilityObject& operator=(const WebAccessibilityObject& o)
+    {
+        assign(o);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebAccessibilityObject&);
+    WEBKIT_EXPORT bool equals(const WebAccessibilityObject&) const;
+
+    bool isNull() const { return m_private.isNull(); }
+    // isDetached also checks for null, so it's safe to just call isDetached.
+    WEBKIT_EXPORT bool isDetached() const;
+
+    // Static methods for enabling accessibility.
+    WEBKIT_EXPORT static void enableAccessibility();
+    WEBKIT_EXPORT static bool accessibilityEnabled();
+
+    WEBKIT_EXPORT void startCachingComputedObjectAttributesUntilTreeMutates();
+    WEBKIT_EXPORT void stopCachingComputedObjectAttributes();
+
+    WEBKIT_EXPORT int axID() const;
+
+    // Update the underlying tree, and return true if this object is
+    // still valid (not detached). Note that calling this method
+    // can cause other WebAccessibilityObjects to become invalid, too,
+    // so always call isDetached if updateBackingStoreAndCheckValidity
+    // has been called on any object, or if any other WebCore code has run.
+    WEBKIT_EXPORT bool updateBackingStoreAndCheckValidity();
+
+    WEBKIT_EXPORT WebString accessibilityDescription() const;
+    WEBKIT_EXPORT unsigned childCount() const;
+
+    WEBKIT_EXPORT WebAccessibilityObject childAt(unsigned) const;
+    WEBKIT_EXPORT WebAccessibilityObject parentObject() const;
+
+    WEBKIT_EXPORT bool isAnchor() const;
+    WEBKIT_EXPORT bool isAriaReadOnly() const;
+    WEBKIT_EXPORT bool isButtonStateMixed() const;
+    WEBKIT_EXPORT bool isChecked() const;
+    WEBKIT_EXPORT bool isCollapsed() const;
+    WEBKIT_EXPORT bool isControl() const;
+    WEBKIT_EXPORT bool isEnabled() const;
+    WEBKIT_EXPORT bool isFocused() const;
+    WEBKIT_EXPORT bool isHovered() const;
+    WEBKIT_EXPORT bool isIndeterminate() const;
+    WEBKIT_EXPORT bool isLinked() const;
+    WEBKIT_EXPORT bool isLoaded() const;
+    WEBKIT_EXPORT bool isMultiSelectable() const;
+    WEBKIT_EXPORT bool isOffScreen() const;
+    WEBKIT_EXPORT bool isPasswordField() const;
+    WEBKIT_EXPORT bool isPressed() const;
+    WEBKIT_EXPORT bool isReadOnly() const;
+    WEBKIT_EXPORT bool isRequired() const;
+    WEBKIT_EXPORT bool isSelected() const;
+    WEBKIT_EXPORT bool isSelectedOptionActive() const;
+    WEBKIT_EXPORT bool isVertical() const;
+    WEBKIT_EXPORT bool isVisible() const;
+    WEBKIT_EXPORT bool isVisited() const;
+
+    WEBKIT_EXPORT WebString accessKey() const;
+    WEBKIT_EXPORT bool ariaHasPopup() const;
+    WEBKIT_EXPORT bool ariaLiveRegionAtomic() const;
+    WEBKIT_EXPORT bool ariaLiveRegionBusy() const;
+    WEBKIT_EXPORT WebString ariaLiveRegionRelevant() const;
+    WEBKIT_EXPORT WebString ariaLiveRegionStatus() const;
+    WEBKIT_EXPORT WebRect boundingBoxRect() const;
+    WEBKIT_EXPORT bool canvasHasFallbackContent() const;
+    WEBKIT_EXPORT WebPoint clickPoint() const;
+    WEBKIT_EXPORT void colorValue(int& r, int& g, int& b) const;
+    WEBKIT_EXPORT double estimatedLoadingProgress() const;
+    WEBKIT_EXPORT WebString helpText() const;
+    WEBKIT_EXPORT int headingLevel() const;
+    WEBKIT_EXPORT int hierarchicalLevel() const;
+    WEBKIT_EXPORT WebAccessibilityObject hitTest(const WebPoint&) const;
+    WEBKIT_EXPORT WebString keyboardShortcut() const;
+    WEBKIT_EXPORT WebAccessibilityRole roleValue() const;
+    WEBKIT_EXPORT unsigned selectionEnd() const;
+    WEBKIT_EXPORT unsigned selectionEndLineNumber() const;
+    WEBKIT_EXPORT unsigned selectionStart() const;
+    WEBKIT_EXPORT unsigned selectionStartLineNumber() const;
+    WEBKIT_EXPORT WebString stringValue() const;
+    WEBKIT_EXPORT WebString title() const;
+    WEBKIT_EXPORT WebAccessibilityObject titleUIElement() const;
+    WEBKIT_EXPORT WebURL url() const;
+
+    WEBKIT_EXPORT bool supportsRangeValue() const;
+    WEBKIT_EXPORT WebString valueDescription() const;
+    WEBKIT_EXPORT float valueForRange() const;
+    WEBKIT_EXPORT float maxValueForRange() const;
+    WEBKIT_EXPORT float minValueForRange() const;
+
+    WEBKIT_EXPORT WebNode node() const;
+    WEBKIT_EXPORT WebDocument document() const;
+    WEBKIT_EXPORT bool hasComputedStyle() const;
+    WEBKIT_EXPORT WebString computedStyleDisplay() const;
+    WEBKIT_EXPORT bool accessibilityIsIgnored() const;
+    WEBKIT_EXPORT bool lineBreaks(WebVector<int>&) const;
+
+    // Actions
+    WEBKIT_EXPORT WebString actionVerb() const; // The verb corresponding to performDefaultAction.
+    WEBKIT_EXPORT bool canDecrement() const;
+    WEBKIT_EXPORT bool canIncrement() const;
+    WEBKIT_EXPORT bool canPress() const;
+    WEBKIT_EXPORT bool canSetFocusAttribute() const;
+    WEBKIT_EXPORT bool canSetSelectedAttribute() const;
+    WEBKIT_EXPORT bool canSetValueAttribute() const;
+    WEBKIT_EXPORT bool performDefaultAction() const;
+    WEBKIT_EXPORT bool press() const;
+    WEBKIT_EXPORT bool increment() const;
+    WEBKIT_EXPORT bool decrement() const;
+    WEBKIT_EXPORT void setFocused(bool) const;
+    WEBKIT_EXPORT void setSelectedTextRange(int selectionStart, int selectionEnd) const;
+
+    // For a table
+    WEBKIT_EXPORT unsigned columnCount() const;
+    WEBKIT_EXPORT unsigned rowCount() const;
+    WEBKIT_EXPORT WebAccessibilityObject cellForColumnAndRow(unsigned column, unsigned row) const;
+    WEBKIT_EXPORT WebAccessibilityObject headerContainerObject() const;
+    WEBKIT_EXPORT WebAccessibilityObject rowAtIndex(unsigned rowIndex) const;
+    WEBKIT_EXPORT WebAccessibilityObject columnAtIndex(unsigned columnIndex) const;
+
+    // For a table row
+    WEBKIT_EXPORT unsigned rowIndex() const;
+    WEBKIT_EXPORT WebAccessibilityObject rowHeader() const;
+
+    // For a table column
+    WEBKIT_EXPORT unsigned columnIndex() const;
+    WEBKIT_EXPORT WebAccessibilityObject columnHeader() const;
+
+    // For a table cell
+    WEBKIT_EXPORT unsigned cellColumnIndex() const;
+    WEBKIT_EXPORT unsigned cellColumnSpan() const;
+    WEBKIT_EXPORT unsigned cellRowIndex() const;
+    WEBKIT_EXPORT unsigned cellRowSpan() const;
+
+    // Make this object visible by scrolling as many nested scrollable views as needed.
+    WEBKIT_EXPORT void scrollToMakeVisible() const;
+    // Same, but if the whole object can't be made visible, try for this subrect, in local coordinates.
+    WEBKIT_EXPORT void scrollToMakeVisibleWithSubFocus(const WebRect&) const;
+    // Scroll this object to a given point in global coordinates of the top-level window.
+    WEBKIT_EXPORT void scrollToGlobalPoint(const WebPoint&) 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:
+    WebPrivatePtr<WebCore::AccessibilityObject> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebAccessibilityRole.h b/public/webpage/WebAccessibilityRole.h
new file mode 100644
index 0000000..196ef22
--- /dev/null
+++ b/public/webpage/WebAccessibilityRole.h
@@ -0,0 +1,155 @@
+/*
+ * 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 "../platform/WebCommon.h"
+
+namespace WebKit {
+
+// These values must match WebCore::AccessibilityRole values
+enum WebAccessibilityRole {
+    WebAccessibilityRoleAnnotation = 1,
+    WebAccessibilityRoleApplication,
+    WebAccessibilityRoleApplicationAlert,
+    WebAccessibilityRoleApplicationAlertDialog,
+    WebAccessibilityRoleApplicationDialog,
+    WebAccessibilityRoleApplicationLog,
+    WebAccessibilityRoleApplicationMarquee,
+    WebAccessibilityRoleApplicationStatus,
+    WebAccessibilityRoleApplicationTimer, 
+    WebAccessibilityRoleBrowser,
+    WebAccessibilityRoleBusyIndicator,
+    WebAccessibilityRoleButton,
+    WebAccessibilityRoleCanvas,
+    WebAccessibilityRoleCell, 
+    WebAccessibilityRoleCheckBox,
+    WebAccessibilityRoleColorWell,
+    WebAccessibilityRoleColumn,
+    WebAccessibilityRoleColumnHeader,
+    WebAccessibilityRoleComboBox,
+    WebAccessibilityRoleDefinition,
+    WebAccessibilityRoleDescriptionListTerm,
+    WebAccessibilityRoleDescriptionListDetail,
+    WebAccessibilityRoleDirectory,
+    WebAccessibilityRoleDisclosureTriangle,
+    WebAccessibilityRoleDiv,
+    WebAccessibilityRoleDocument,
+    WebAccessibilityRoleDocumentArticle,
+    WebAccessibilityRoleDocumentMath,
+    WebAccessibilityRoleDocumentNote,
+    WebAccessibilityRoleDocumentRegion,
+    WebAccessibilityRoleDrawer,
+    WebAccessibilityRoleEditableText,
+    WebAccessibilityRoleFooter,
+    WebAccessibilityRoleForm,
+    WebAccessibilityRoleGrid,
+    WebAccessibilityRoleGroup,
+    WebAccessibilityRoleGrowArea,
+    WebAccessibilityRoleHeading,
+    WebAccessibilityRoleHelpTag,
+    WebAccessibilityRoleHorizontalRule,
+    WebAccessibilityRoleIgnored,
+    WebAccessibilityRoleImage,
+    WebAccessibilityRoleImageMap,
+    WebAccessibilityRoleImageMapLink,
+    WebAccessibilityRoleIncrementor,
+    WebAccessibilityRoleLabel,
+    WebAccessibilityRoleLandmarkApplication,
+    WebAccessibilityRoleLandmarkBanner,
+    WebAccessibilityRoleLandmarkComplementary,
+    WebAccessibilityRoleLandmarkContentInfo,
+    WebAccessibilityRoleLandmarkMain,
+    WebAccessibilityRoleLandmarkNavigation,
+    WebAccessibilityRoleLandmarkSearch,
+    WebAccessibilityRoleLegend,
+    WebAccessibilityRoleLink,
+    WebAccessibilityRoleList,
+    WebAccessibilityRoleListBox,
+    WebAccessibilityRoleListBoxOption,
+    WebAccessibilityRoleListItem,
+    WebAccessibilityRoleListMarker,
+    WebAccessibilityRoleMathElement,
+    WebAccessibilityRoleMatte,
+    WebAccessibilityRoleMenu,
+    WebAccessibilityRoleMenuBar,
+    WebAccessibilityRoleMenuButton,
+    WebAccessibilityRoleMenuItem,
+    WebAccessibilityRoleMenuListPopup,
+    WebAccessibilityRoleMenuListOption,
+    WebAccessibilityRoleOutline,
+    WebAccessibilityRoleParagraph,
+    WebAccessibilityRolePopUpButton,
+    WebAccessibilityRolePresentational,
+    WebAccessibilityRoleProgressIndicator,
+    WebAccessibilityRoleRadioButton,
+    WebAccessibilityRoleRadioGroup,
+    WebAccessibilityRoleRowHeader,
+    WebAccessibilityRoleRow,
+    WebAccessibilityRoleRuler,
+    WebAccessibilityRoleRulerMarker,
+    WebAccessibilityRoleScrollArea,
+    WebAccessibilityRoleScrollBar,
+    WebAccessibilityRoleSeamlessWebArea,
+    WebAccessibilityRoleSheet,
+    WebAccessibilityRoleSlider,
+    WebAccessibilityRoleSliderThumb,
+    WebAccessibilityRoleSpinButton,
+    WebAccessibilityRoleSpinButtonPart,
+    WebAccessibilityRoleSplitGroup,
+    WebAccessibilityRoleSplitter,
+    WebAccessibilityRoleStaticText,
+    WebAccessibilityRoleSystemWide,
+    WebAccessibilityRoleSVGRoot,
+    WebAccessibilityRoleTabGroup,
+    WebAccessibilityRoleTabList,
+    WebAccessibilityRoleTabPanel,
+    WebAccessibilityRoleTab,
+    WebAccessibilityRoleTable,
+    WebAccessibilityRoleTableHeaderContainer,
+    WebAccessibilityRoleTextArea,
+    WebAccessibilityRoleTreeRole,
+    WebAccessibilityRoleTreeGrid,
+    WebAccessibilityRoleTreeItemRole,
+    WebAccessibilityRoleTextField,
+    WebAccessibilityRoleToggleButton,
+    WebAccessibilityRoleToolbar,
+    WebAccessibilityRoleUnknown,
+    WebAccessibilityRoleUserInterfaceTooltip,
+    WebAccessibilityRoleValueIndicator,
+    WebAccessibilityRoleWebArea,
+    WebAccessibilityRoleWebCoreLink,
+    WebAccessibilityRoleWindow,
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebActiveWheelFlingParameters.h b/public/webpage/WebActiveWheelFlingParameters.h
new file mode 100644
index 0000000..8804bb1
--- /dev/null
+++ b/public/webpage/WebActiveWheelFlingParameters.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2012 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 AND ITS 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 APPLE OR ITS 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 WebActiveWheelFlingParameters_h
+#define WebActiveWheelFlingParameters_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebFloatPoint.h"
+#include "../platform/WebPoint.h"
+#include "../platform/WebSize.h"
+#include "WebInputEvent.h"
+
+namespace WebKit {
+
+struct WebActiveWheelFlingParameters {
+    WebFloatPoint delta;
+    WebPoint point;
+    WebPoint globalPoint;
+    int modifiers;
+    WebGestureEvent::SourceDevice sourceDevice;
+    WebSize cumulativeScroll;
+    double startTime;
+
+    WebActiveWheelFlingParameters()
+        : modifiers(0)
+        , sourceDevice(WebGestureEvent::Touchpad)
+        , startTime(0)
+    {
+    }
+};
+
+}
+
+#endif
diff --git a/public/webpage/WebApplicationCacheHost.h b/public/webpage/WebApplicationCacheHost.h
new file mode 100644
index 0000000..4731b45
--- /dev/null
+++ b/public/webpage/WebApplicationCacheHost.h
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2010 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 "../platform/WebCommon.h"
+#include "../platform/WebURL.h"
+#include "../platform/WebVector.h"
+
+namespace WebKit {
+
+class WebApplicationCacheHostClient;
+class WebFrame;
+class WebURL;
+class WebURLRequest;
+class WebURLResponse;
+struct WebURLError;
+
+// This interface is used by webkit to call out to the embedder. Webkit uses
+// the WebFrameClient::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& r, const WebFrame*) { }
+    virtual void willStartSubResourceRequest(WebURLRequest&) { }
+
+    // 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() { }
+    virtual bool selectCacheWithManifest(const WebURL& manifestURL) { return true; }
+
+    // Called as the main resource is retrieved.
+    virtual void didReceiveResponseForMainResource(const WebURLResponse&) { }
+    virtual void didReceiveDataForMainResource(const char* data, int len) { }
+    virtual void didFinishLoadingMainResource(bool success) { }
+
+    // Called on behalf of the scriptable interface.
+    virtual Status status() { return Uncached; }
+    virtual bool startUpdate() { return false; }
+    virtual bool swapCache() { return false; }
+    virtual void abort() { }
+
+    // Structures and methods to support inspecting Application Caches.
+    struct CacheInfo {
+        WebURL manifestURL; // Empty if there is no associated cache.
+        double creationTime;
+        double updateTime;
+        long long totalSize;
+        CacheInfo() : creationTime(0), updateTime(0), totalSize(0) { }
+    };
+    struct ResourceInfo {
+        WebURL url;
+        long long size;
+        bool isMaster;
+        bool isManifest;
+        bool isExplicit;
+        bool isForeign;
+        bool isFallback;
+        ResourceInfo() : size(0), isMaster(false), isManifest(false), isExplicit(false), isForeign(false), isFallback(false) { }
+    };
+    virtual void getAssociatedCacheInfo(CacheInfo*) { }
+    virtual void getResourceList(WebVector<ResourceInfo>*) { }
+    virtual void deleteAssociatedCacheGroup() { }
+};
+
+}  // namespace WebKit
+
+#endif  // WebApplicationCacheHost_h
diff --git a/public/webpage/WebApplicationCacheHostClient.h b/public/webpage/WebApplicationCacheHostClient.h
new file mode 100644
index 0000000..9f08a72
--- /dev/null
+++ b/public/webpage/WebApplicationCacheHostClient.h
@@ -0,0 +1,57 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "WebApplicationCacheHost.h"
+
+namespace WebKit {
+
+// This interface is used by the embedder to call into webkit.
+class WebApplicationCacheHostClient {
+public:
+    // Called when a different cache, including possibly no cache, is associated with the host.
+    virtual void didChangeCacheAssociation() = 0;
+
+    // Called to fire events in the scriptable interface.
+    virtual void notifyEventListener(WebApplicationCacheHost::EventID) = 0;
+    virtual void notifyProgressEventListener(const WebURL&, int num_total, int num_complete) = 0;
+
+protected:
+    // Should not be deleted by the embedder.
+    virtual ~WebApplicationCacheHostClient() { }
+};
+
+}  // namespace WebKit
+
+#endif  // WebApplicationCacheHostClient_h
+
diff --git a/public/webpage/WebArrayBuffer.h b/public/webpage/WebArrayBuffer.h
new file mode 100644
index 0000000..ecee122
--- /dev/null
+++ b/public/webpage/WebArrayBuffer.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2011 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 WebArrayBuffer_h
+#define WebArrayBuffer_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+namespace v8 {
+class Value;
+template <class T> class Handle;
+}
+
+namespace WTF { class ArrayBuffer; }
+
+namespace WebKit {
+
+class WebArrayBuffer {
+public:
+    ~WebArrayBuffer() { reset(); }
+
+    WebArrayBuffer() { }
+    WebArrayBuffer(const WebArrayBuffer& b) { assign(b); }
+    WebArrayBuffer& operator=(const WebArrayBuffer& b)
+    {
+        assign(b);
+        return *this;
+    }
+
+    WEBKIT_EXPORT static WebArrayBuffer create(unsigned numElements, unsigned elementByteSize);
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebArrayBuffer&);
+
+    bool isNull() const { return m_private.isNull(); }
+    WEBKIT_EXPORT void* data() const;
+    WEBKIT_EXPORT unsigned byteLength() const;
+
+    WEBKIT_EXPORT v8::Handle<v8::Value> toV8Value();
+    WEBKIT_EXPORT static WebArrayBuffer* createFromV8Value(v8::Handle<v8::Value>);
+
+#if WEBKIT_IMPLEMENTATION
+    WebArrayBuffer(const WTF::PassRefPtr<WTF::ArrayBuffer>&);
+    WebArrayBuffer& operator=(const PassRefPtr<WTF::ArrayBuffer>&);
+    operator WTF::PassRefPtr<WTF::ArrayBuffer>() const;
+#endif
+
+protected:
+    WebPrivatePtr<WTF::ArrayBuffer> m_private;
+};
+
+} // namespace WebKit
+
+#endif // WebArrayBuffer_h
diff --git a/public/webpage/WebArrayBufferView.h b/public/webpage/WebArrayBufferView.h
new file mode 100644
index 0000000..db29119
--- /dev/null
+++ b/public/webpage/WebArrayBufferView.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2011 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.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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 WebArrayBufferView_h
+#define WebArrayBufferView_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+namespace v8 {
+class Value;
+template <class T> class Handle;
+}
+
+namespace WTF { class ArrayBufferView; }
+
+namespace WebKit {
+
+// Provides access to an ArrayBufferView.
+class WebArrayBufferView {
+public:
+    ~WebArrayBufferView() { reset(); }
+    WebArrayBufferView() { }
+    WebArrayBufferView(const WebArrayBufferView& v) { assign(v); }
+
+    WEBKIT_EXPORT void* baseAddress() const;
+    WEBKIT_EXPORT unsigned byteOffset() const;
+    WEBKIT_EXPORT unsigned byteLength() const;
+
+    WEBKIT_EXPORT void assign(const WebArrayBufferView&);
+    WEBKIT_EXPORT void reset();
+
+    WEBKIT_EXPORT static WebArrayBufferView* createFromV8Value(v8::Handle<v8::Value>);
+
+#if WEBKIT_IMPLEMENTATION
+    WebArrayBufferView(const WTF::PassRefPtr<WTF::ArrayBufferView>&);
+    WebArrayBufferView& operator=(const WTF::PassRefPtr<WTF::ArrayBufferView>&);
+    operator WTF::PassRefPtr<WTF::ArrayBufferView>() const;
+#endif
+
+private:
+    WebPrivatePtr<WTF::ArrayBufferView> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebAudioSourceProvider.h b/public/webpage/WebAudioSourceProvider.h
new file mode 100644
index 0000000..c23d3c1
--- /dev/null
+++ b/public/webpage/WebAudioSourceProvider.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2011, 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 INC. AND ITS 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 APPLE INC. OR ITS 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 WebAudioSourceProvider_h
+#define WebAudioSourceProvider_h
+
+#include "../platform/WebVector.h"
+
+namespace WebKit {
+    
+class WebAudioSourceProviderClient;
+
+// Abstract interface for a pull-model client.
+class WebAudioSourceProvider {
+public:
+    // provideInput() gets called repeatedly to render time-slices of a continuous audio stream.
+    virtual void provideInput(const WebVector<float*>& audioData, size_t numberOfFrames) = 0;
+
+    // If a client is set, we call it back when the audio format is available.
+    virtual void setClient(WebAudioSourceProviderClient*) { };
+
+protected:
+    virtual ~WebAudioSourceProvider() { }
+};
+
+} // WebKit
+
+#endif // WebAudioSourceProvider_h
diff --git a/public/webpage/WebAudioSourceProviderClient.h b/public/webpage/WebAudioSourceProviderClient.h
new file mode 100644
index 0000000..ab21a0e
--- /dev/null
+++ b/public/webpage/WebAudioSourceProviderClient.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2011, 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 INC. AND ITS 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 APPLE INC. OR ITS 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 WebAudioSourceProviderClient_h
+#define WebAudioSourceProviderClient_h
+
+namespace WebKit {
+
+class WebAudioSourceProviderClient {
+public:
+    virtual void setFormat(size_t numberOfChannels, float sampleRate) = 0;
+protected:
+    virtual ~WebAudioSourceProviderClient() { }
+};
+
+} // WebKit
+
+#endif // WebAudioSourceProviderClient_h
diff --git a/public/webpage/WebAutofillClient.h b/public/webpage/WebAutofillClient.h
new file mode 100644
index 0000000..b690433
--- /dev/null
+++ b/public/webpage/WebAutofillClient.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2010 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 WebAutofillClient_h
+#define WebAutofillClient_h
+
+namespace WebKit {
+
+class WebFormElement;
+class WebFrame;
+class WebInputElement;
+class WebKeyboardEvent;
+class WebNode;
+class WebString;
+
+template <typename T> class WebVector;
+
+class WebAutofillClient {
+public:
+    enum {
+        MenuItemIDAutocompleteEntry = 0,
+        MenuItemIDWarningMessage = -1,
+        MenuItemIDPasswordEntry = -2,
+        MenuItemIDSeparator = -3,
+        MenuItemIDClearForm = -4,
+        MenuItemIDAutofillOptions = -5,
+        MenuItemIDDataListEntry = -6
+    };
+
+    // Informs the browser that the user has accepted an Autofill suggestion for
+    // a WebNode. A positive |itemID| is a unique id used to identify the set
+    // of Autofill profiles. If it is AutocompleteEntryMenuItemID, then the
+    // suggestion is an Autocomplete suggestion; and |value| stores the
+    // suggested text. |index| is an index of the selected suggestion in the
+    // list of suggestions provided by the client.
+    virtual void didAcceptAutofillSuggestion(const WebNode&,
+                                             const WebString& value,
+                                             const WebString& label,
+                                             int itemID,
+                                             unsigned index) { }
+
+    // Informs the browser that the user has selected an Autofill suggestion for
+    // a WebNode.  This happens when the user hovers over a suggestion or uses
+    // the arrow keys to navigate to a suggestion.
+    virtual void didSelectAutofillSuggestion(const WebNode&,
+                                             const WebString& name,
+                                             const WebString& label,
+                                             int itemID) { }
+
+    // Informs the browser that the user has cleared the selection from the
+    // Autofill suggestions popup. This happens when a user uses the arrow
+    // keys to navigate outside the range of possible selections.
+    virtual void didClearAutofillSelection(const WebNode&) { }
+
+    // Informs the browser an interactive autocomplete has been requested.
+    virtual void didRequestAutocomplete(WebFrame*, const WebFormElement&) { }
+
+    // Instructs the browser to remove the Autocomplete entry specified from
+    // its DB.
+    virtual void removeAutocompleteSuggestion(const WebString& name,
+                                              const WebString& value) { }
+
+    // These methods are called when the users edits a text-field.
+    virtual void textFieldDidEndEditing(const WebInputElement&) { }
+    virtual void textFieldDidChange(const WebInputElement&) { }
+    virtual void textFieldDidReceiveKeyDown(const WebInputElement&, const WebKeyboardEvent&) { }
+
+    // Informs the client whether or not any subsequent text changes should be ignored.
+    virtual void setIgnoreTextChanges(bool ignore) { }
+
+    virtual void didAssociateFormControls(const WebVector<WebNode>&) { }
+
+protected:
+    virtual ~WebAutofillClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebBindings.h b/public/webpage/WebBindings.h
new file mode 100644
index 0000000..da33672
--- /dev/null
+++ b/public/webpage/WebBindings.h
@@ -0,0 +1,186 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+#include <bindings/npruntime.h>
+
+namespace v8 {
+class Value;
+template <class T> class Handle;
+template <class T> class Local;
+}
+
+namespace WebKit {
+
+class WebArrayBuffer;
+class WebArrayBufferView;
+class WebDragData;
+class WebElement;
+class WebNode;
+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_EXPORT static bool construct(NPP, NPObject*, const NPVariant* args, uint32_t argCount, NPVariant* result);
+
+    // NPN_CreateObject
+    WEBKIT_EXPORT static NPObject* createObject(NPP, NPClass*);
+
+    // NPN_Enumerate
+    WEBKIT_EXPORT static bool enumerate(NPP, NPObject*, NPIdentifier**, uint32_t* identifierCount);
+
+    // NPN_Evaluate
+    WEBKIT_EXPORT static bool evaluate(NPP, NPObject*, NPString* script, NPVariant* result);
+
+    // NPN_EvaluateHelper
+    WEBKIT_EXPORT static bool evaluateHelper(NPP, bool popupsAllowed, NPObject*, NPString* script, NPVariant* result);
+
+    // NPN_GetIntIdentifier
+    WEBKIT_EXPORT static NPIdentifier getIntIdentifier(int32_t number);
+
+    // NPN_GetProperty
+    WEBKIT_EXPORT static bool getProperty(NPP, NPObject*, NPIdentifier property, NPVariant *result);
+
+    // NPN_GetStringIdentifier
+    WEBKIT_EXPORT static NPIdentifier getStringIdentifier(const NPUTF8* string);
+
+    // NPN_GetStringIdentifiers
+    WEBKIT_EXPORT static void getStringIdentifiers(const NPUTF8** names, int32_t nameCount, NPIdentifier*);
+
+    // NPN_HasMethod
+    WEBKIT_EXPORT static bool hasMethod(NPP, NPObject*, NPIdentifier method);
+
+    // NPN_HasProperty
+    WEBKIT_EXPORT static bool hasProperty(NPP, NPObject*, NPIdentifier property);
+
+    // NPN_IdentifierIsString
+    WEBKIT_EXPORT static bool identifierIsString(NPIdentifier);
+
+    // NPN_InitializeVariantWithStringCopy (though sometimes prefixed with an underscore)
+    WEBKIT_EXPORT static void initializeVariantWithStringCopy(NPVariant*, const NPString*);
+
+    // NPN_IntFromIdentifier
+    WEBKIT_EXPORT static int32_t intFromIdentifier(NPIdentifier);
+
+    // NPN_Invoke
+    WEBKIT_EXPORT static bool invoke(NPP, NPObject*, NPIdentifier method, const NPVariant* args, uint32_t argCount, NPVariant* result);
+
+    // NPN_InvokeDefault
+    WEBKIT_EXPORT static bool invokeDefault(NPP, NPObject*, const NPVariant* args, uint32_t argCount, NPVariant* result);
+
+    // NPN_ReleaseObject
+    WEBKIT_EXPORT static void releaseObject(NPObject*);
+
+    // NPN_ReleaseVariantValue
+    WEBKIT_EXPORT static void releaseVariantValue(NPVariant*);
+
+    // NPN_RemoveProperty
+    WEBKIT_EXPORT static bool removeProperty(NPP, NPObject*, NPIdentifier);
+
+    // NPN_RetainObject
+    WEBKIT_EXPORT static NPObject* retainObject(NPObject*);
+
+    // NPN_SetException
+    WEBKIT_EXPORT static void setException(NPObject*, const NPUTF8* message);
+
+    // NPN_SetProperty
+    WEBKIT_EXPORT static bool setProperty(NPP, NPObject*, NPIdentifier, const NPVariant*);
+
+    // _NPN_RegisterObjectOwner
+    WEBKIT_EXPORT static void registerObjectOwner(NPP);
+
+    // _NPN_UnregisterObjectOwner
+    WEBKIT_EXPORT static void unregisterObjectOwner(NPP);
+
+    // _NPN_UnregisterObject
+    WEBKIT_EXPORT static void unregisterObject(NPObject*);
+
+    // NPN_UTF8FromIdentifier
+    WEBKIT_EXPORT 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_EXPORT static void extractIdentifierData(const NPIdentifier&, const NPUTF8*& string, int32_t& number, bool& isString);
+
+    // DumpRenderTree support -------------------------------------------------
+
+    // Return true (success) if the given npobj is a range object.
+    // If so, return that range as a WebRange object.
+    WEBKIT_EXPORT static bool getRange(NPObject* range, WebRange*);
+
+    // Return true (success) if the given npobj is an ArrayBuffer object.
+    // If so, return it as a WebArrayBuffer object.
+    WEBKIT_EXPORT static bool getArrayBuffer(NPObject* arrayBuffer, WebArrayBuffer*);
+
+    // Return true (success) if the given npobj is an ArrayBufferView object.
+    // If so, return it as a WebArrayBufferView object.
+    WEBKIT_EXPORT static bool getArrayBufferView(NPObject* arrayBufferView, WebArrayBufferView*);
+
+    // Return true (success) if the given npobj is a node.
+    // If so, return that node as a WebNode object.
+    WEBKIT_EXPORT static bool getNode(NPObject* element, WebNode*);
+
+    // Return true (success) if the given npobj is an element.
+    // If so, return that element as a WebElement object.
+    WEBKIT_EXPORT static bool getElement(NPObject* element, WebElement*);
+
+    WEBKIT_EXPORT static NPObject* makeIntArray(const WebVector<int>&);
+    WEBKIT_EXPORT static NPObject* makeStringArray(const WebVector<WebString>&);
+
+    // Exceptions -------------------------------------------------------------
+
+    typedef void (ExceptionHandler)(void* data, const NPUTF8* message);
+
+    // The exception handler will be notified of any exceptions thrown while
+    // operating on a NPObject.
+    WEBKIT_EXPORT static void pushExceptionHandler(ExceptionHandler, void* data);
+    WEBKIT_EXPORT static void popExceptionHandler();
+
+    // Conversion utilities to/from V8 native objects and NPVariant wrappers.
+    WEBKIT_EXPORT static void toNPVariant(v8::Local<v8::Value>, NPObject* root, NPVariant* result);
+    WEBKIT_EXPORT static v8::Handle<v8::Value> toV8Value(const NPVariant*);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebBlob.h b/public/webpage/WebBlob.h
new file mode 100644
index 0000000..81f519b
--- /dev/null
+++ b/public/webpage/WebBlob.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2011 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 WebBlob_h
+#define WebBlob_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "../platform/WebString.h"
+
+namespace v8 {
+class Value;
+template <class T> class Handle;
+}
+
+namespace WebCore { class Blob; }
+
+namespace WebKit {
+
+class WebBlob {
+public:
+    ~WebBlob() { reset(); }
+
+    WebBlob() { }
+    WebBlob(const WebBlob& b) { assign(b); }
+    WebBlob& operator=(const WebBlob& b)
+    {
+        assign(b);
+        return *this;
+    }
+
+    WEBKIT_EXPORT static WebBlob createFromFile(const WebString& path, long long size);
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebBlob&);
+
+    bool isNull() const { return m_private.isNull(); }
+
+    WEBKIT_EXPORT v8::Handle<v8::Value>  toV8Value();
+
+#if WEBKIT_IMPLEMENTATION
+    WebBlob(const WTF::PassRefPtr<WebCore::Blob>&);
+    WebBlob& operator=(const WTF::PassRefPtr<WebCore::Blob>&);
+    operator WTF::PassRefPtr<WebCore::Blob>() const;
+#endif
+
+protected:
+    WebPrivatePtr<WebCore::Blob> m_private;
+};
+
+} // namespace WebKit
+
+#endif // WebBlob_h
diff --git a/public/webpage/WebCache.h b/public/webpage/WebCache.h
new file mode 100644
index 0000000..0696ebe
--- /dev/null
+++ b/public/webpage/WebCache.h
@@ -0,0 +1,94 @@
+/*
+ * 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 "../platform/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::MemoryCache::TypeStatistic.
+    struct ResourceTypeStat {
+        size_t count;
+        size_t size;
+        size_t liveSize;
+        size_t decodedSize;
+    };
+
+    // A struct mirroring WebCore::MemoryCache::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_EXPORT 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). Note that this method
+    // only removes resources from live list, w/o releasing cache memory.
+    WEBKIT_EXPORT static void clear();
+
+    // Prunes resource cache. Destroys decoded images data and returns
+    // memory to the system.
+    WEBKIT_EXPORT static void prune();
+
+    // Gets the usage statistics from the resource cache.
+    WEBKIT_EXPORT static void getUsageStats(UsageStats*);
+
+    // Get usage stats about the resource cache.
+    WEBKIT_EXPORT static void getResourceTypeStats(ResourceTypeStats*);
+
+private:
+    WebCache();  // Not intended to be instanced.
+};
+
+}  // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebCachedURLRequest.h b/public/webpage/WebCachedURLRequest.h
new file mode 100644
index 0000000..c0bff22
--- /dev/null
+++ b/public/webpage/WebCachedURLRequest.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2012 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 WebCachedURLRequest_h
+#define WebCachedURLRequest_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivateOwnPtr.h"
+#include "../platform/WebString.h"
+
+namespace WebCore { class CachedResourceRequest; }
+
+namespace WebKit {
+
+class WebString;
+class WebURLRequest;
+class WrappedResourceRequest;
+
+class WebCachedURLRequest {
+public:
+    ~WebCachedURLRequest() { reset(); }
+    WEBKIT_EXPORT void reset();
+
+    WEBKIT_EXPORT const WebURLRequest& urlRequest() const;
+    WEBKIT_EXPORT WebString charset() const;
+    WEBKIT_EXPORT bool forPreload() const;
+    WEBKIT_EXPORT WebString initiatorName() const;
+
+#if WEBKIT_IMPLEMENTATION
+    explicit WebCachedURLRequest(WebCore::CachedResourceRequest*);
+#endif
+
+private:
+    WebCachedURLRequest(const WebCachedURLRequest&);
+    WebCachedURLRequest& operator=(const WebCachedURLRequest&);
+
+    WebCore::CachedResourceRequest* m_private;
+    mutable WebPrivateOwnPtr<WrappedResourceRequest> m_resourceRequestWrapper;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebColorChooser.h b/public/webpage/WebColorChooser.h
new file mode 100644
index 0000000..53d15f8
--- /dev/null
+++ b/public/webpage/WebColorChooser.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2011 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 AND ITS 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 APPLE OR ITS 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 WebColorChooser_h
+#define WebColorChooser_h
+
+#include "../platform/WebColor.h"
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+// This represents a color chooser.
+class WebColorChooser {
+public:
+    virtual ~WebColorChooser() { }
+
+    // Set selected color in the color chooser.
+    virtual void setSelectedColor(const WebColor color) { }
+
+    // Calling this ends the color chooser and the client won't be recieving
+    // didChooseColor callbacks anymore.
+    virtual void endChooser() { }
+};
+
+}
+
+#endif // WebColorChooser_h
diff --git a/public/webpage/WebColorChooserClient.h b/public/webpage/WebColorChooserClient.h
new file mode 100644
index 0000000..6099bfe
--- /dev/null
+++ b/public/webpage/WebColorChooserClient.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2011 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 AND ITS 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 APPLE OR ITS 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 WebColorChooserClient_h
+#define WebColorChooserClient_h
+
+#include "../platform/WebColor.h"
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+// Receives calls from WebColorChooser and passes it to the WebCore side.
+class WebColorChooserClient {
+public:
+    virtual ~WebColorChooserClient() { }
+
+    // Called when user selects a color in the color chooser.
+    virtual void didChooseColor(const WebColor&) { }
+
+    // Called when color chooser has ended.
+    virtual void didEndChooser() { }
+};
+
+}
+
+#endif // WebColorChooserClient_h
diff --git a/public/webpage/WebColorName.h b/public/webpage/WebColorName.h
new file mode 100644
index 0000000..1f28d89
--- /dev/null
+++ b/public/webpage/WebColorName.h
@@ -0,0 +1,77 @@
+/*
+* 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
+
+#include "../platform/WebColor.h"
+#include "../platform/WebCommon.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
+};
+
+// Sets the values of a set of named colors.
+WEBKIT_EXPORT void setNamedColors(const WebColorName*, const WebColor*, size_t length);
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebCommonWorkerClient.h b/public/webpage/WebCommonWorkerClient.h
new file mode 100644
index 0000000..489859e
--- /dev/null
+++ b/public/webpage/WebCommonWorkerClient.h
@@ -0,0 +1,85 @@
+/*
+ * 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
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebFileSystem.h"
+#include "../platform/WebFileSystemType.h"
+// FIXME: need to move this to Platform
+#include "WebStorageQuotaCallbacks.h"
+#include "WebStorageQuotaType.h"
+
+namespace WebKit {
+
+class WebApplicationCacheHost;
+class WebApplicationCacheHostClient;
+class WebFrame;
+class WebNotificationPresenter;
+class WebString;
+class WebWorker;
+class WebWorkerClient;
+
+class WebCommonWorkerClient {
+public:
+    // Called on the main webkit thread before opening a web database.
+    virtual bool allowDatabase(WebFrame*, const WebString& name, const WebString& displayName, unsigned long estimatedSize)
+    {
+        return true;
+    }
+
+    // Called on the main webkit thread before opening a file system.
+    virtual bool allowFileSystem()
+    {
+        return true;
+    }
+
+    // Called on the main webkit thread before opening a file system.
+    virtual void openFileSystem(WebFileSystemType, long long size, bool create, WebFileSystemCallbacks*)
+    {
+        WEBKIT_ASSERT_NOT_REACHED();
+    }
+
+    // Called on the main webkit thread before opening an indexed database.
+    virtual bool allowIndexedDB(const WebString& name)
+    {
+        return true;
+    }
+    virtual void queryUsageAndQuota(WebStorageQuotaType, WebStorageQuotaCallbacks*)
+    {
+        WEBKIT_ASSERT_NOT_REACHED();
+    }
+};
+
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebCompositionUnderline.h b/public/webpage/WebCompositionUnderline.h
new file mode 100644
index 0000000..1c5c1f1
--- /dev/null
+++ b/public/webpage/WebCompositionUnderline.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2010 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 WebCompositionUnderline_h
+#define WebCompositionUnderline_h
+
+#include "../platform/WebColor.h"
+
+namespace WebKit {
+
+// Class WebCompositionUnderline is intended to be used with WebWidget's
+// setComposition() method.
+struct WebCompositionUnderline {
+    WebCompositionUnderline()
+        : startOffset(0)
+        , endOffset(0)
+        , color(0)
+        , thick(false) { }
+
+    WebCompositionUnderline(unsigned s, unsigned e, WebColor c, bool t)
+        : startOffset(s)
+        , endOffset(e)
+        , color(c)
+        , thick(t) { }
+
+    unsigned startOffset;
+    unsigned endOffset;
+    WebColor color;
+    bool thick;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebConsoleMessage.h b/public/webpage/WebConsoleMessage.h
new file mode 100644
index 0000000..6e2d627
--- /dev/null
+++ b/public/webpage/WebConsoleMessage.h
@@ -0,0 +1,58 @@
+/*
+ * 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 "../platform/WebString.h"
+
+namespace WebKit {
+
+struct WebConsoleMessage {
+    enum Level {
+        LevelDebug = 4,
+        LevelLog = 1,
+        LevelWarning = 2,
+        LevelError = 3,
+    };
+
+    Level level;
+    WebString text;
+
+    WebConsoleMessage()
+        : level(LevelLog) { }
+    WebConsoleMessage(Level level, const WebString& text)
+        : level(level)
+        , text(text) { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebContentDetectionResult.h b/public/webpage/WebContentDetectionResult.h
new file mode 100644
index 0000000..d9516ae
--- /dev/null
+++ b/public/webpage/WebContentDetectionResult.h
@@ -0,0 +1,64 @@
+/*
+* Copyright (C) 2012 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 AND ITS 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 APPLE OR ITS 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 WebContentDetectionResult_h
+#define WebContentDetectionResult_h
+
+#include "../platform/WebString.h"
+#include "../platform/WebURL.h"
+#include "WebRange.h"
+
+namespace WebKit {
+
+class WebContentDetectionResult {
+public:
+    WebContentDetectionResult()
+        : m_isValid(false)
+    {
+    }
+
+    WebContentDetectionResult(const WebRange& range, const WebString& string, const WebURL& intent)
+        : m_isValid(true)
+        , m_range(range)
+        , m_string(string)
+        , m_intent(intent)
+    {
+    }
+
+    bool isValid() const { return m_isValid; }
+    const WebRange& range() const { return m_range; }
+    const WebString& string() const { return m_string; }
+    const WebURL& intent() const { return m_intent; }
+
+private:
+    bool m_isValid;
+    WebRange m_range;
+    WebString m_string;
+    WebURL m_intent;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebContentSecurityPolicy.h b/public/webpage/WebContentSecurityPolicy.h
new file mode 100644
index 0000000..ad1d297
--- /dev/null
+++ b/public/webpage/WebContentSecurityPolicy.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2012 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 WebContentSecurityPolicy_h
+#define WebContentSecurityPolicy_h
+
+namespace WebKit {
+
+enum WebContentSecurityPolicyType {
+    WebContentSecurityPolicyTypeReport,
+    WebContentSecurityPolicyTypeEnforce,
+    WebContentSecurityPolicyTypePrefixedReport,
+    WebContentSecurityPolicyTypePrefixedEnforce,
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebContextMenuData.h b/public/webpage/WebContextMenuData.h
new file mode 100644
index 0000000..53be1b6
--- /dev/null
+++ b/public/webpage/WebContextMenuData.h
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2009, 2012 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 "../platform/WebPoint.h"
+#include "../platform/WebReferrerPolicy.h"
+#include "../platform/WebString.h"
+#include "../platform/WebURL.h"
+#include "../platform/WebVector.h"
+#include "WebHistoryItem.h"
+#include "WebMenuItemInfo.h"
+#include "WebNode.h"
+
+#define WEBCONTEXT_MEDIATYPEFILE_DEFINED
+
+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,
+        // A file node is selected.
+        MediaTypeFile,
+        // A plugin node is selected.
+        MediaTypePlugin,
+    };
+    // 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;
+
+    // Whether the image in context has been blocked.
+    bool isImageBlocked;
+
+    // The absolute URL of the page in context.
+    WebURL pageURL;
+
+    // The absolute keyword search URL including the %s search tag when the
+    // "Add as search engine..." option is clicked (left empty if not used).
+    WebURL keywordURL;
+
+    // The absolute URL of the subframe in context.
+    WebURL frameURL;
+
+    // The encoding for the frame in context.
+    WebString frameEncoding;
+
+    // History state of the subframe in context.
+    WebHistoryItem frameHistoryItem;
+
+    enum MediaFlags {
+        MediaNone = 0x0,
+        MediaInError = 0x1,
+        MediaPaused = 0x2,
+        MediaMuted = 0x4,
+        MediaLoop = 0x8,
+        MediaCanSave = 0x10,
+        MediaHasAudio = 0x20,
+        MediaHasVideo = 0x40,
+        MediaControls = 0x80,
+        MediaCanPrint = 0x100,
+        MediaCanRotate = 0x200,
+    };
+
+    // Extra attributes describing media elements.
+    int mediaFlags;
+
+    // The raw text of the selection in context.
+    WebString selectedText;
+
+    // Whether speech input is enabled.
+    bool isSpeechInputEnabled;
+
+    // Whether spell checking is enabled.
+    bool isSpellCheckingEnabled;
+
+    // The editable (possibily) misspelled word.
+    WebString misspelledWord;
+
+    // The identifier of the misspelling.
+    uint32_t misspellingHash;
+
+    // If misspelledWord is not empty, holds suggestions from the dictionary.
+    WebVector<WebString> dictionarySuggestions;
+
+    // Whether context is editable.
+    bool isEditable;
+
+    enum CheckableMenuItemFlags {
+        CheckableMenuItemDisabled = 0x0,
+        CheckableMenuItemEnabled = 0x1,
+        CheckableMenuItemChecked = 0x2,
+    };
+
+    // Writing direction menu items - values are unions of
+    // CheckableMenuItemFlags.
+    // Currently only used on OS X.
+    int writingDirectionDefault;
+    int writingDirectionLeftToRight;
+    int writingDirectionRightToLeft;
+
+    enum EditFlags {
+        CanDoNone = 0x0,
+        CanUndo = 0x1,
+        CanRedo = 0x2,
+        CanCut = 0x4,
+        CanCopy = 0x8,
+        CanPaste = 0x10,
+        CanDelete = 0x20,
+        CanSelectAll = 0x40,
+        CanTranslate = 0x80,
+    };
+
+    // Which edit operations are available in the context.
+    int editFlags;
+
+    // Security information for the context.
+    WebCString securityInfo;
+
+    // The referrer policy applicable to this context.
+    WebReferrerPolicy referrerPolicy;
+
+    // Custom context menu items provided by the WebCore internals.
+    WebVector<WebMenuItemInfo> customItems;
+
+    // The node that was clicked.
+    WebNode node;
+
+    WebContextMenuData()
+        : mediaType(MediaTypeNone)
+        , isImageBlocked(false)
+        , mediaFlags(MediaNone)
+        , isSpeechInputEnabled(false)
+        , isSpellCheckingEnabled(false)
+        , isEditable(false)
+        , writingDirectionDefault(CheckableMenuItemDisabled)
+        , writingDirectionLeftToRight(CheckableMenuItemEnabled)
+        , writingDirectionRightToLeft(CheckableMenuItemEnabled)
+        , editFlags(0) { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebCrossOriginPreflightResultCache.h b/public/webpage/WebCrossOriginPreflightResultCache.h
new file mode 100644
index 0000000..3f80096
--- /dev/null
+++ b/public/webpage/WebCrossOriginPreflightResultCache.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebCrossOriginPreflightResultCache_h
+#define WebCrossOriginPreflightResultCache_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+// An interface to configure WebKit's cross-origin preflight result cache.
+class WebCrossOriginPreflightResultCache {
+public:
+    // Clears the cache.
+    WEBKIT_EXPORT static void clear();
+
+private:
+    WebCrossOriginPreflightResultCache();  // Not intended to be instanced.
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebCursorInfo.h b/public/webpage/WebCursorInfo.h
new file mode 100644
index 0000000..6767d87
--- /dev/null
+++ b/public/webpage/WebCursorInfo.h
@@ -0,0 +1,32 @@
+/*
+* Copyright (C) 2013 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 "../platform/WebCursorInfo.h"
+
diff --git a/public/webpage/WebDOMActivityLogger.h b/public/webpage/WebDOMActivityLogger.h
new file mode 100644
index 0000000..2830b1d
--- /dev/null
+++ b/public/webpage/WebDOMActivityLogger.h
@@ -0,0 +1,56 @@
+/*
+ * 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 WebDOMActivityLogger_h
+#define WebDOMActivityLogger_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebString.h"
+#include <v8.h>
+
+namespace WebKit {
+
+class WebDOMActivityLogger {
+public:
+    virtual ~WebDOMActivityLogger() { }
+    virtual void log(const WebString& apiName, int argc, const v8::Handle<v8::Value>* argv, const WebString& extraInfo) { }
+};
+
+// Checks if a logger already exists for the world identified
+// by worldId (worldId may be 0 identifying the main world).
+WEBKIT_EXPORT bool hasDOMActivityLogger(int worldId);
+
+// Checks if the provided logger is non-null and if so associates it
+// with the world identified by worldId (worldId may be 0 identifying the main world).
+WEBKIT_EXPORT void setDOMActivityLogger(int worldId, WebDOMActivityLogger*);
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMCustomEvent.h b/public/webpage/WebDOMCustomEvent.h
new file mode 100644
index 0000000..9165cf6
--- /dev/null
+++ b/public/webpage/WebDOMCustomEvent.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2012 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 WebDOMCustomEvent_h
+#define WebDOMCustomEvent_h
+
+#include "WebDOMEvent.h"
+#include "WebSerializedScriptValue.h"
+
+namespace WebKit {
+
+class WebFrame;
+class WebString;
+
+class WebDOMCustomEvent : public WebDOMEvent {
+public:
+    WebDOMCustomEvent() { }
+    WEBKIT_EXPORT void initCustomEvent(const WebString& type, bool canBubble, bool cancelable, const WebSerializedScriptValue& messageData);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMEvent.h b/public/webpage/WebDOMEvent.h
new file mode 100644
index 0000000..9e7e998
--- /dev/null
+++ b/public/webpage/WebDOMEvent.h
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2010 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 WebDOMEvent_h
+#define WebDOMEvent_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "../platform/WebString.h"
+#include "WebNode.h"
+
+namespace WebCore { class Event; }
+#if WEBKIT_IMPLEMENTATION
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+
+class WebDOMEvent {
+public:
+    enum PhaseType {
+        CapturingPhase     = 1,
+        AtTarget           = 2,
+        BubblingPhase      = 3
+    };
+
+    ~WebDOMEvent() { reset(); }
+
+    WebDOMEvent() { }
+    WebDOMEvent(const WebDOMEvent& other) { assign(other); }
+    WebDOMEvent& operator=(const WebDOMEvent& e)
+    {
+        assign(e);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebDOMEvent&);
+
+    bool isNull() const { return m_private.isNull(); }
+
+    WEBKIT_EXPORT WebString type() const;
+    WEBKIT_EXPORT WebNode target() const;
+    WEBKIT_EXPORT WebNode currentTarget() const;
+
+    WEBKIT_EXPORT PhaseType eventPhase() const;
+    WEBKIT_EXPORT bool bubbles() const;
+    WEBKIT_EXPORT bool cancelable() const;
+
+    WEBKIT_EXPORT bool isUIEvent() const;
+    WEBKIT_EXPORT bool isMouseEvent() const;
+    WEBKIT_EXPORT bool isMutationEvent() const;
+    WEBKIT_EXPORT bool isKeyboardEvent() const;
+    WEBKIT_EXPORT bool isTextEvent() const;
+    WEBKIT_EXPORT bool isCompositionEvent() const;
+    WEBKIT_EXPORT bool isDragEvent() const;
+    WEBKIT_EXPORT bool isClipboardEvent() const;
+    WEBKIT_EXPORT bool isMessageEvent() const;
+    WEBKIT_EXPORT bool isWheelEvent() const;
+    WEBKIT_EXPORT bool isBeforeTextInsertedEvent() const;
+    WEBKIT_EXPORT bool isOverflowEvent() const;
+    WEBKIT_EXPORT bool isPageTransitionEvent() const;
+    WEBKIT_EXPORT bool isPopStateEvent() const;
+    WEBKIT_EXPORT bool isProgressEvent() const;
+    WEBKIT_EXPORT bool isXMLHttpRequestProgressEvent() const;
+    WEBKIT_EXPORT bool isBeforeLoadEvent() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebDOMEvent(const WTF::PassRefPtr<WebCore::Event>&);
+    operator WTF::PassRefPtr<WebCore::Event>() const;
+#endif
+
+    template<typename T> T to()
+    {
+        T res;
+        res.WebDOMEvent::assign(*this);
+        return res;
+    }
+
+    template<typename T> const T toConst() const
+    {
+        T res;
+        res.WebDOMEvent::assign(*this);
+        return res;
+    }
+
+protected:
+    typedef WebCore::Event WebDOMEventPrivate;
+#if WEBKIT_IMPLEMENTATION
+    void assign(const WTF::PassRefPtr<WebDOMEventPrivate>&);
+
+    template<typename T> T* unwrap()
+    {
+        return static_cast<T*>(m_private.get());
+    }
+
+    template<typename T> const T* constUnwrap() const
+    {
+        return static_cast<const T*>(m_private.get());
+    }
+#endif
+
+    WebPrivatePtr<WebDOMEventPrivate> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMEventListener.h b/public/webpage/WebDOMEventListener.h
new file mode 100644
index 0000000..58992fe
--- /dev/null
+++ b/public/webpage/WebDOMEventListener.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2010 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 WebDOMEventListener_h
+#define WebDOMEventListener_h
+
+#include "../platform/WebCommon.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class EventTarget; }
+#endif
+
+namespace WebKit {
+
+class EventListenerWrapper;
+class WebDOMEvent;
+class WebDOMEventListenerPrivate;
+class WebNode;
+class WebString;
+
+class WebDOMEventListener {
+public:
+    WEBKIT_EXPORT WebDOMEventListener();
+    WEBKIT_EXPORT virtual ~WebDOMEventListener();
+
+    // Called when an event is received.
+    virtual void handleEvent(const WebDOMEvent&) = 0;
+
+#if WEBKIT_IMPLEMENTATION
+    void notifyEventListenerDeleted(EventListenerWrapper*);
+    EventListenerWrapper* createEventListenerWrapper(const WebString& eventType, bool useCapture, WebCore::EventTarget*);
+    EventListenerWrapper* getEventListenerWrapper(const WebString& eventType, bool useCapture, WebCore::EventTarget*);
+#endif
+
+private:
+    WebDOMEventListenerPrivate* m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMMessageEvent.h b/public/webpage/WebDOMMessageEvent.h
new file mode 100644
index 0000000..dace153
--- /dev/null
+++ b/public/webpage/WebDOMMessageEvent.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2011 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 WebDOMMessageEvent_h
+#define WebDOMMessageEvent_h
+
+#include "../platform/WebMessagePortChannel.h"
+#include "WebDOMEvent.h"
+#include "WebSerializedScriptValue.h"
+
+#if WEBKIT_IMPLEMENTATION
+#include "core/dom/Event.h"
+#include "core/dom/MessageEvent.h"
+#endif
+
+namespace WebKit {
+
+class WebFrame;
+class WebString;
+
+class WebDOMMessageEvent : public WebDOMEvent {
+public:
+    WebDOMMessageEvent() { }
+    WEBKIT_EXPORT void initMessageEvent(const WebString& type, bool canBubble, bool cancelable, const WebSerializedScriptValue& messageData, const WebString& origin, const WebFrame* sourceFrame, const WebString& lastEventId);
+
+    WEBKIT_EXPORT WebSerializedScriptValue data() const;
+    WEBKIT_EXPORT WebString origin() const;
+
+#if WEBKIT_IMPLEMENTATION
+    explicit WebDOMMessageEvent(const WTF::PassRefPtr<WebCore::MessageEvent>& e) : WebDOMEvent(e) { }
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMMouseEvent.h b/public/webpage/WebDOMMouseEvent.h
new file mode 100644
index 0000000..373c9ee
--- /dev/null
+++ b/public/webpage/WebDOMMouseEvent.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2010 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 WebDOMMouseEvent_h
+#define WebDOMMouseEvent_h
+
+#include "WebDOMEvent.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class Event; }
+#endif
+
+namespace WebKit {
+
+class WebDOMMouseEvent : public WebDOMEvent {
+public:
+    WEBKIT_EXPORT int screenX() const;
+    WEBKIT_EXPORT int screenY() const;
+    WEBKIT_EXPORT int clientX() const;
+    WEBKIT_EXPORT int clientY() const;
+    WEBKIT_EXPORT int offsetX();
+    WEBKIT_EXPORT int offsetY();
+    WEBKIT_EXPORT int pageX() const;
+    WEBKIT_EXPORT int pageY() const;
+    WEBKIT_EXPORT int x() const;
+    WEBKIT_EXPORT int y() const;
+
+    WEBKIT_EXPORT int button() const;
+    WEBKIT_EXPORT bool buttonDown() const;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMMutationEvent.h b/public/webpage/WebDOMMutationEvent.h
new file mode 100644
index 0000000..8eb3b12
--- /dev/null
+++ b/public/webpage/WebDOMMutationEvent.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2010 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 WebDOMMutationEvent_h
+#define WebDOMMutationEvent_h
+
+#include "WebDOMEvent.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class Event; }
+#endif
+
+namespace WebKit {
+
+class WebDOMMutationEvent : public WebDOMEvent {
+public:
+    enum AttrChangeType {
+        Modification    = 1,
+        Addition        = 2,
+        Removal         = 3
+    };
+
+    WEBKIT_EXPORT WebNode relatedNode() const;
+    WEBKIT_EXPORT WebString prevValue() const;
+    WEBKIT_EXPORT WebString newValue() const;
+    WEBKIT_EXPORT WebString attrName() const;
+    WEBKIT_EXPORT AttrChangeType attrChange() const;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMProgressEvent.h b/public/webpage/WebDOMProgressEvent.h
new file mode 100644
index 0000000..e9b0921
--- /dev/null
+++ b/public/webpage/WebDOMProgressEvent.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2013 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 WebDOMProgressEvent_h
+#define WebDOMProgressEvent_h
+
+#include "WebDOMEvent.h"
+
+namespace WebKit {
+
+class WebString;
+
+class WebDOMProgressEvent : public WebDOMEvent {
+public:
+    WebDOMProgressEvent() { }
+    WEBKIT_EXPORT WebDOMProgressEvent(const WebString& type, bool lengthIsComputable, unsigned long long loaded, unsigned long long total);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDOMResourceProgressEvent.h b/public/webpage/WebDOMResourceProgressEvent.h
new file mode 100644
index 0000000..b65d93c
--- /dev/null
+++ b/public/webpage/WebDOMResourceProgressEvent.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2013 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 WebDOMResourceProgressEvent_h
+#define WebDOMResourceProgressEvent_h
+
+#include "WebDOMProgressEvent.h"
+
+namespace WebKit {
+
+class WebString;
+
+class WebDOMResourceProgressEvent : public WebDOMProgressEvent {
+public:
+    WebDOMResourceProgressEvent() { }
+    WEBKIT_EXPORT WebDOMResourceProgressEvent(const WebString& type, bool lengthIsComputable, unsigned long long loaded, unsigned long long total, const WebString& url);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDataSource.h b/public/webpage/WebDataSource.h
new file mode 100644
index 0000000..e7eab6a
--- /dev/null
+++ b/public/webpage/WebDataSource.h
@@ -0,0 +1,124 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "WebNavigationType.h"
+#include "WebTextDirection.h"
+
+namespace WebKit {
+
+class WebApplicationCacheHost;
+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 whether the navigation associated with this datasource is a
+    // client redirect that should replace the current history item.
+    virtual bool isClientRedirect() const = 0;
+
+    // Returns the title for the current page.
+    virtual WebString pageTitle() const = 0;
+
+    // Returns the text direction of the title for the current page.
+    virtual WebTextDirection pageTitleDirection() 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;
+
+    // The application cache host associated with this datasource.
+    virtual WebApplicationCacheHost* applicationCacheHost() = 0;
+
+    // Set deferMainResourceDataLoad flag on the loader.  This is used for
+    // testing.
+    virtual void setDeferMainResourceDataLoad(bool) = 0;
+
+    // Sets the navigation start time for this datasource. Ordinarily,
+    // navigation start is determined in WebCore. But, in some situations,
+    // the embedder might have a better value and can override it here. This
+    // should be called before WebFrameClient::didCommitProvisionalLoad.
+    // Calling it later may confuse users, because JavaScript may have run and
+    // the user may have already recorded the original value.
+    virtual void setNavigationStartTime(double) = 0;
+
+protected:
+    ~WebDataSource() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDatabase.h b/public/webpage/WebDatabase.h
new file mode 100644
index 0000000..f05d6c6
--- /dev/null
+++ b/public/webpage/WebDatabase.h
@@ -0,0 +1,76 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "WebSecurityOrigin.h"
+
+namespace WebCore { class DatabaseBackendBase; }
+
+namespace WebKit {
+
+class WebDatabaseObserver;
+class WebString;
+
+class WebDatabase {
+public:
+    WEBKIT_EXPORT WebString name() const;
+    WEBKIT_EXPORT WebString displayName() const;
+    WEBKIT_EXPORT unsigned long estimatedSize() const;
+    WEBKIT_EXPORT WebSecurityOrigin securityOrigin() const;
+    WEBKIT_EXPORT bool isSyncDatabase() const;
+
+    WEBKIT_EXPORT static void setObserver(WebDatabaseObserver*);
+    WEBKIT_EXPORT static WebDatabaseObserver* observer();
+
+    WEBKIT_EXPORT static void updateDatabaseSize(
+        const WebString& originIdentifier, const WebString& name, long long size);
+    WEBKIT_EXPORT static void updateSpaceAvailable(
+        const WebString& originIdentifier, long long spaceAvailable);
+    WEBKIT_EXPORT static void resetSpaceAvailable(
+        const WebString& originIdentifier);
+
+    WEBKIT_EXPORT static void closeDatabaseImmediately(
+        const WebString& originIdentifier, const WebString& databaseName);
+
+#if WEBKIT_IMPLEMENTATION
+    WebDatabase(const WebCore::DatabaseBackendBase*);
+#endif
+
+private:
+    WebDatabase() { }
+    const WebCore::DatabaseBackendBase* m_database;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDatabaseObserver.h b/public/webpage/WebDatabaseObserver.h
new file mode 100644
index 0000000..99e7db7
--- /dev/null
+++ b/public/webpage/WebDatabaseObserver.h
@@ -0,0 +1,56 @@
+/*
+ * 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;
+
+    virtual void reportOpenDatabaseResult(const WebDatabase&, int errorSite, int webSqlErrorCode, int sqliteErrorCode) { }
+    virtual void reportChangeVersionResult(const WebDatabase&, int errorSite, int webSqlErrorCode, int sqliteErrorCode) { }
+    virtual void reportStartTransactionResult(const WebDatabase&, int errorSite, int webSqlErrorCode, int sqliteErrorCode) { }
+    virtual void reportCommitTransactionResult(const WebDatabase&, int errorSite, int webSqlErrorCode, int sqliteErrorCode) { }
+    virtual void reportExecuteStatementResult(const WebDatabase&, int errorSite, int webSqlErrorCode, int sqliteErrorCode) { }
+    virtual void reportVacuumDatabaseResult(const WebDatabase&, int sqliteErrorCode) { }
+
+protected:
+    ~WebDatabaseObserver() {}
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDateTimeChooserCompletion.h b/public/webpage/WebDateTimeChooserCompletion.h
new file mode 100644
index 0000000..37522c6
--- /dev/null
+++ b/public/webpage/WebDateTimeChooserCompletion.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2012 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 INC. AND ITS 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 APPLE INC. OR ITS 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 WebDateTimeChooserCompletion_h
+#define WebDateTimeChooserCompletion_h
+
+#include "../platform/WebString.h"
+
+namespace WebKit {
+
+// Gets called back when WebViewClient finished choosing a date/time value.
+class WebDateTimeChooserCompletion {
+public:
+
+    // Called with a date/time value in the HTML format. The callback instance
+    // is destroyed when this method is called.
+    virtual void didChooseValue(const WebString&) = 0;
+
+    // Called when a user closed the chooser without choosing a value. The
+    // callback instance is destroyed when this method is called.
+    virtual void didCancelChooser() = 0;
+
+protected:
+    virtual ~WebDateTimeChooserCompletion() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDateTimeChooserParams.h b/public/webpage/WebDateTimeChooserParams.h
new file mode 100644
index 0000000..1adc445
--- /dev/null
+++ b/public/webpage/WebDateTimeChooserParams.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2012 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 INC. AND ITS 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 APPLE INC. OR ITS 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 WebDateTimeChooserParams_h
+#define WebDateTimeChooserParams_h
+
+#include "../platform/WebRect.h"
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+#include "WebDateTimeInputType.h"
+
+namespace WebKit {
+
+// This class conveys various information to make date/time chooser UI.
+// See WebViewClient::openDateTimeChooser.
+struct WebDateTimeChooserParams {
+    // The type of chooser to show.
+    WebDateTimeInputType type;
+    // Bounding rectangle of the requester element.
+    WebRect anchorRectInScreen;
+    // The current value of the requester element.
+    WebString currentValue;
+    // <datalist> option values associated to the requester element. These
+    // values should not be shown to users. The vector size might be 0.
+    WebVector<WebString> suggestionValues;
+    // Localized values of <datalist> options associated to the requester
+    // element. These values should be shown to users. The vector size must be
+    // same as suggestionValues size.
+    WebVector<WebString> localizedSuggestionValues;
+    // <datalist> option labels associated to the requester element. These
+    // values should be shown to users. The vector size must be same as
+    // suggestionValues size.
+    WebVector<WebString> suggestionLabels;
+    // HTMLInputElement::min attribute value parsed in the valusAsNumber rule,
+    // that is to say, milliseconds from the epoch for non-month types and
+    // months from the epoch for month type. If the min attribute is missing,
+    // this field has the hard minimum limit.
+    double minimum;
+    // Similar to minimum.
+    double maximum;
+    // Step value represented in milliseconds for non-month types, and
+    // represetnted in months for month type.
+    double step;
+    // Step-base value represeted in milliseconds, or months.
+    double stepBase;
+    // True if the requester element has required attribute.
+    bool isRequired;
+    // True if the requester element is rendered in rtl direction.
+    bool isAnchorElementRTL;
+
+    WebDateTimeChooserParams()
+        : minimum(0)
+        , maximum(0)
+        , step(0)
+        , stepBase(0)
+        , isRequired(false)
+        , isAnchorElementRTL(false)
+    {
+    }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDateTimeInputType.h b/public/webpage/WebDateTimeInputType.h
new file mode 100644
index 0000000..52d60fb
--- /dev/null
+++ b/public/webpage/WebDateTimeInputType.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2012 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 WebDateTimeInputType_h
+#define WebDateTimeInputType_h
+
+namespace WebKit {
+
+enum WebDateTimeInputType {
+    WebDateTimeInputTypeNone,
+    WebDateTimeInputTypeDate,
+    WebDateTimeInputTypeDateTime,
+    WebDateTimeInputTypeDateTimeLocal,
+    WebDateTimeInputTypeMonth,
+    WebDateTimeInputTypeTime,
+    WebDateTimeInputTypeWeek,
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDevToolsAgent.h b/public/webpage/WebDevToolsAgent.h
new file mode 100644
index 0000000..7b07371
--- /dev/null
+++ b/public/webpage/WebDevToolsAgent.h
@@ -0,0 +1,96 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebVector.h"
+
+namespace WebKit {
+class WebDevToolsAgentClient;
+class WebDevToolsMessageTransport;
+class WebFrame;
+class WebString;
+class WebURLRequest;
+class WebURLResponse;
+class WebView;
+struct WebDevToolsMessageData;
+struct WebPoint;
+struct WebMemoryUsageInfo;
+struct WebURLError;
+
+class WebDevToolsAgent {
+public:
+    virtual ~WebDevToolsAgent() {}
+
+    // Returns WebKit WebInspector protocol version.
+    WEBKIT_EXPORT static WebString inspectorProtocolVersion();
+
+    // Returns true if and only if the given protocol version is supported by the WebKit Web Inspector.
+    WEBKIT_EXPORT static bool supportsInspectorProtocolVersion(const WebString& version);
+
+    virtual void attach() = 0;
+    virtual void reattach(const WebString& savedState) = 0;
+    virtual void detach() = 0;
+
+    virtual void didNavigate() = 0;
+
+    virtual void dispatchOnInspectorBackend(const WebString& message) = 0;
+
+    virtual void inspectElementAt(const WebPoint&) = 0;
+    virtual void setProcessId(long) = 0;
+
+    virtual void didBeginFrame() = 0;
+    virtual void didCancelFrame() = 0;
+    virtual void willComposite() = 0;
+    virtual void didComposite() = 0;
+    
+    // Exposed for TestRunner.
+    virtual void evaluateInWebInspector(long callId, const WebString& script) = 0;
+
+    virtual WebVector<WebMemoryUsageInfo> processMemoryDistribution() const = 0;
+
+    class MessageDescriptor {
+    public:
+        virtual ~MessageDescriptor() { }
+        virtual WebDevToolsAgent* agent() = 0;
+        virtual WebString message() = 0;
+    };
+    // Asynchronously request debugger to pause immediately and run the command.
+    WEBKIT_EXPORT static void interruptAndDispatch(MessageDescriptor*);
+    WEBKIT_EXPORT static bool shouldInterruptForMessage(const WebString&);
+    WEBKIT_EXPORT static void processPendingMessages();
+
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDevToolsAgentClient.h b/public/webpage/WebDevToolsAgentClient.h
new file mode 100644
index 0000000..f853873
--- /dev/null
+++ b/public/webpage/WebDevToolsAgentClient.h
@@ -0,0 +1,92 @@
+/*
+ * 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 "../platform/WebCString.h"
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+class WebString;
+struct WebDevToolsMessageData;
+
+class WebDevToolsAgentClient {
+public:
+    virtual void sendMessageToInspectorFrontend(const WebString&) { }
+    virtual void sendDebuggerOutput(const WebString&) { }
+
+    // Returns the identifier of the entity hosting this agent.
+    virtual int hostIdentifier() { return -1; }
+
+    // Save the agent state in order to pass it later into WebDevToolsAgent::reattach
+    // if the same client is reattached to another agent.
+    virtual void saveAgentRuntimeState(const WebString&) { }
+
+    class WebKitClientMessageLoop {
+    public:
+        virtual ~WebKitClientMessageLoop() { }
+        virtual void run() = 0;
+        virtual void quitNow() = 0;
+    };
+    virtual WebKitClientMessageLoop* createClientMessageLoop() { return 0; }
+
+    virtual void clearBrowserCache() { }
+    virtual void clearBrowserCookies() { }
+
+    class AllocatedObjectVisitor {
+    public:
+        virtual bool visitObject(const void* ptr) = 0;
+    protected:
+        virtual ~AllocatedObjectVisitor() { }
+    };
+    virtual void visitAllocatedObjects(AllocatedObjectVisitor*) { }
+
+    class InstrumentedObjectSizeProvider {
+    public:
+        virtual size_t objectSize(const void* ptr) const = 0;
+    protected:
+        virtual ~InstrumentedObjectSizeProvider() { }
+    };
+    virtual void dumpUncountedAllocatedObjects(const InstrumentedObjectSizeProvider*) { }
+
+    typedef void (*TraceEventCallback)(char phase, const unsigned char*, const char* name, unsigned long long id,
+        int numArgs, const char* const* argNames, const unsigned char* argTypes, const unsigned long long* argValues,
+        unsigned char flags);
+
+    virtual void setTraceEventCallback(TraceEventCallback) { }
+
+protected:
+    ~WebDevToolsAgentClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDevToolsFrontend.h b/public/webpage/WebDevToolsFrontend.h
new file mode 100644
index 0000000..2194ee3
--- /dev/null
+++ b/public/webpage/WebDevToolsFrontend.h
@@ -0,0 +1,57 @@
+/*
+ * 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 "../platform/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_EXPORT static WebDevToolsFrontend* create(WebView* view,
+                                                     WebDevToolsFrontendClient* client,
+                                                     const WebString& applicationLocale);
+
+    virtual ~WebDevToolsFrontend() {}
+
+    virtual void dispatchOnInspectorFrontend(const WebString&) = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDevToolsFrontendClient.h b/public/webpage/WebDevToolsFrontendClient.h
new file mode 100644
index 0000000..3e53539
--- /dev/null
+++ b/public/webpage/WebDevToolsFrontendClient.h
@@ -0,0 +1,69 @@
+/*
+ * 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;
+struct WebFloatPoint;
+struct WebDevToolsMessageData;
+
+class WebDevToolsFrontendClient {
+public:
+    WebDevToolsFrontendClient() { }
+
+    virtual void sendMessageToBackend(const WebString&) { }
+
+    virtual void activateWindow() { }
+    virtual void changeAttachedWindowHeight(unsigned height) { }
+    virtual void closeWindow() { }
+    virtual void requestDockWindow() { }
+    virtual void requestUndockWindow() { }
+    virtual void requestSetDockSide(const WebString& side) { }
+    virtual void moveWindowBy(const WebFloatPoint&) { }
+    virtual void openInNewTab(const WebString& side) { }
+    virtual void save(const WebString& url, const WebString& content, bool saveAs) { }
+    virtual void append(const WebString& url, const WebString& content) { }
+
+    virtual void requestFileSystems() { }
+    virtual void addFileSystem() { }
+    virtual void removeFileSystem(const WebString& fileSystemPath) { }
+
+    virtual bool isUnderTest() { return false; }
+
+protected:
+    virtual ~WebDevToolsFrontendClient() {}
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDeviceOrientation.h b/public/webpage/WebDeviceOrientation.h
new file mode 100644
index 0000000..f56c032
--- /dev/null
+++ b/public/webpage/WebDeviceOrientation.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebDeviceOrientation_h
+#define WebDeviceOrientation_h
+
+#if WEBKIT_IMPLEMENTATION
+namespace WTF { template <typename T> class PassRefPtr; }
+namespace WebCore { class DeviceOrientationData; }
+#endif
+
+namespace WebKit {
+
+class WebDeviceOrientation {
+public:
+    WebDeviceOrientation()
+        : m_isNull(true)
+        , m_canProvideAlpha(false)
+        , m_alpha(0)
+        , m_canProvideBeta(false)
+        , m_beta(0)
+        , m_canProvideGamma(false)
+        , m_gamma(0)
+        , m_canProvideAbsolute(false)
+        , m_absolute(false)
+    {
+    }
+
+    static WebDeviceOrientation nullOrientation() { return WebDeviceOrientation(); }
+
+    void setNull(bool isNull) { m_isNull = isNull; }
+    bool isNull() const { return m_isNull; }
+
+    void setAlpha(double alpha)
+    {
+        m_canProvideAlpha = true;
+        m_alpha = alpha;
+    }
+    bool canProvideAlpha() const { return m_canProvideAlpha; }
+    double alpha() const { return m_alpha; }
+
+    void setBeta(double beta)
+    {
+        m_canProvideBeta = true;
+        m_beta = beta;
+    }
+    bool canProvideBeta() const { return m_canProvideBeta; }
+    double beta() const { return m_beta; }
+
+    void setGamma(double gamma)
+    {
+        m_canProvideGamma = true;
+        m_gamma = gamma;
+    }
+    bool canProvideGamma() const { return m_canProvideGamma; }
+    double gamma() const { return m_gamma; }
+
+    void setAbsolute(bool absolute)
+    {
+        m_canProvideAbsolute = true;
+        m_absolute = absolute;
+    }
+    bool canProvideAbsolute() const {return m_canProvideAbsolute; }
+    bool absolute() const { return m_absolute; }
+
+#if WEBKIT_IMPLEMENTATION
+    WebDeviceOrientation(const WebCore::DeviceOrientationData*);
+    operator WTF::PassRefPtr<WebCore::DeviceOrientationData>() const;
+#endif
+
+private:
+    bool m_isNull;
+    bool m_canProvideAlpha;
+    double m_alpha;
+    bool m_canProvideBeta;
+    double m_beta;
+    bool m_canProvideGamma;
+    double m_gamma;
+    bool m_canProvideAbsolute;
+    bool m_absolute;
+};
+
+} // namespace WebKit
+
+#endif // WebDeviceOrientation_h
diff --git a/public/webpage/WebDeviceOrientationClient.h b/public/webpage/WebDeviceOrientationClient.h
new file mode 100644
index 0000000..095e2b3
--- /dev/null
+++ b/public/webpage/WebDeviceOrientationClient.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebDeviceOrientationClient_h
+#define WebDeviceOrientationClient_h
+
+#include "../platform/WebCommon.h"
+#include "WebDeviceOrientation.h"
+
+namespace WebKit {
+
+class WebDeviceOrientation;
+class WebDeviceOrientationController;
+
+class WebDeviceOrientationClient {
+public:
+    virtual ~WebDeviceOrientationClient() {}
+
+    virtual void setController(WebDeviceOrientationController*) { WEBKIT_ASSERT_NOT_REACHED(); }
+    virtual void startUpdating() { WEBKIT_ASSERT_NOT_REACHED(); }
+    virtual void stopUpdating() { WEBKIT_ASSERT_NOT_REACHED(); }
+
+    virtual WebDeviceOrientation lastOrientation() const
+    {
+        WEBKIT_ASSERT_NOT_REACHED();
+        return WebDeviceOrientation::nullOrientation();
+    }
+};
+
+} // namespace WebKit
+
+#endif // WebDeviceOrientationClient_h
diff --git a/public/webpage/WebDeviceOrientationClientMock.h b/public/webpage/WebDeviceOrientationClientMock.h
new file mode 100644
index 0000000..b2e34d3
--- /dev/null
+++ b/public/webpage/WebDeviceOrientationClientMock.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebDeviceOrientationClientMock_h
+#define WebDeviceOrientationClientMock_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivateOwnPtr.h"
+#include "WebDeviceOrientationClient.h"
+
+namespace WebCore { class DeviceOrientationClientMock; }
+
+namespace WebKit {
+
+class WebDeviceOrientationClientMock : public WebDeviceOrientationClient {
+public:
+    WEBKIT_EXPORT static WebDeviceOrientationClientMock* create();
+    ~WebDeviceOrientationClientMock() { reset(); }
+
+    virtual void setController(WebDeviceOrientationController*) OVERRIDE;
+    virtual void startUpdating() OVERRIDE;
+    virtual void stopUpdating() OVERRIDE;
+    virtual WebDeviceOrientation lastOrientation() const OVERRIDE;
+
+    WEBKIT_EXPORT void setOrientation(WebDeviceOrientation&);
+
+private:
+    WebDeviceOrientationClientMock() { initialize(); }
+    WEBKIT_EXPORT void initialize();
+    WEBKIT_EXPORT void reset();
+
+    WebPrivateOwnPtr<WebCore::DeviceOrientationClientMock> m_clientMock;
+};
+
+} // namespace WebKit
+
+#endif // WebDeviceOrientationClientMock_h
diff --git a/public/webpage/WebDeviceOrientationController.h b/public/webpage/WebDeviceOrientationController.h
new file mode 100644
index 0000000..8e98422
--- /dev/null
+++ b/public/webpage/WebDeviceOrientationController.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebDeviceOrientationController_h
+#define WebDeviceOrientationController_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebCore { class DeviceOrientationController; }
+
+namespace WebKit {
+
+class WebDeviceOrientation;
+
+class WebDeviceOrientationController {
+public:
+    WebDeviceOrientationController(WebCore::DeviceOrientationController* c)
+        : m_controller(c)
+    {
+    }
+
+    WEBKIT_EXPORT void didChangeDeviceOrientation(const WebDeviceOrientation&);
+
+#if WEBKIT_IMPLEMENTATION
+    WebCore::DeviceOrientationController* controller() const;
+#endif
+
+private:
+    WebCore::DeviceOrientationController* m_controller;
+};
+
+} // namespace WebKit
+
+#endif // WebDeviceOrientationController_h
diff --git a/public/webpage/WebDocument.h b/public/webpage/WebDocument.h
new file mode 100644
index 0000000..8d1d009
--- /dev/null
+++ b/public/webpage/WebDocument.h
@@ -0,0 +1,137 @@
+/*
+ * 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 WebDocument_h
+#define WebDocument_h
+
+#include "../platform/WebReferrerPolicy.h"
+#include "../platform/WebVector.h"
+#include "WebDraggableRegion.h"
+#include "WebNode.h"
+#include "WebSecurityOrigin.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore {
+class Document;
+class DocumentType;
+}
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+class WebAccessibilityObject;
+class WebDocumentType;
+class WebElement;
+class WebFormElement;
+class WebFrame;
+class WebNodeCollection;
+class WebNodeList;
+class WebString;
+class WebURL;
+
+// Provides readonly access to some properties of a DOM document.
+class WebDocument : public WebNode {
+public:
+    enum UserStyleLevel {
+        UserStyleUserLevel,
+        UserStyleAuthorLevel
+    };
+
+    WebDocument() { }
+    WebDocument(const WebDocument& e) : WebNode(e) { }
+
+    WebDocument& operator=(const WebDocument& e)
+    {
+        WebNode::assign(e);
+        return *this;
+    }
+    void assign(const WebDocument& e) { WebNode::assign(e); }
+
+    WEBKIT_EXPORT WebURL url() const;
+    // Note: Security checks should use the securityOrigin(), not url().
+    WEBKIT_EXPORT WebSecurityOrigin securityOrigin() const;
+
+    WEBKIT_EXPORT WebString encoding() const;
+    WEBKIT_EXPORT WebString contentLanguage() const;
+
+    // The url of the OpenSearch Desription Document (if any).
+    WEBKIT_EXPORT WebURL openSearchDescriptionURL() const;
+
+    // Returns the frame the document belongs to or 0 if the document is frameless.
+    WEBKIT_EXPORT WebFrame* frame() const;
+    WEBKIT_EXPORT bool isHTMLDocument() const;
+    WEBKIT_EXPORT bool isXHTMLDocument() const;
+    WEBKIT_EXPORT bool isPluginDocument() const;
+    WEBKIT_EXPORT WebURL baseURL() const;
+    WEBKIT_EXPORT WebURL firstPartyForCookies() const;
+    WEBKIT_EXPORT WebElement documentElement() const;
+    WEBKIT_EXPORT WebElement body() const;
+    WEBKIT_EXPORT WebElement head();
+    WEBKIT_EXPORT WebString title() const;
+    WEBKIT_EXPORT WebNodeCollection all();
+    WEBKIT_EXPORT void forms(WebVector<WebFormElement>&) const;
+    WEBKIT_EXPORT void images(WebVector<WebElement>&);
+    WEBKIT_EXPORT WebURL completeURL(const WebString&) const;
+    WEBKIT_EXPORT WebElement getElementById(const WebString&) const;
+    WEBKIT_EXPORT WebNode focusedNode() const;
+    WEBKIT_EXPORT WebDocumentType doctype() const;
+    WEBKIT_EXPORT void cancelFullScreen();
+    WEBKIT_EXPORT WebElement fullScreenElement() const;
+    WEBKIT_EXPORT WebDOMEvent createEvent(const WebString& eventType);
+    WEBKIT_EXPORT WebReferrerPolicy referrerPolicy() const;
+    WEBKIT_EXPORT WebElement createElement(const WebString& tagName);
+
+    // Accessibility support. These methods should only be called on the
+    // top-level document, because one accessibility cache spans all of
+    // the documents on the page.
+
+    // Gets the accessibility object for this document.
+    WEBKIT_EXPORT WebAccessibilityObject accessibilityObject() const;
+
+    // Gets the accessibility object for an object on this page by ID.
+    WEBKIT_EXPORT WebAccessibilityObject accessibilityObjectFromID(int axID) const;
+    // Inserts the given CSS source code as a user stylesheet in the document.
+    // Meant for programatic/one-off injection, as opposed to
+    // WebView::addUserStyleSheet which inserts styles for the lifetime of the
+    // WebView.
+    WEBKIT_EXPORT void insertUserStyleSheet(const WebString& sourceCode, UserStyleLevel);
+
+    WEBKIT_EXPORT WebVector<WebDraggableRegion> draggableRegions() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebDocument(const WTF::PassRefPtr<WebCore::Document>&);
+    WebDocument& operator=(const WTF::PassRefPtr<WebCore::Document>&);
+    operator WTF::PassRefPtr<WebCore::Document>() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDocumentType.h b/public/webpage/WebDocumentType.h
new file mode 100644
index 0000000..a9113bb
--- /dev/null
+++ b/public/webpage/WebDocumentType.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2010 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 WebDocumentType_h
+#define WebDocumentType_h
+
+#include "WebNode.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class DocumentType; }
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+class WebString;
+
+// Provides readonly access to some properties of a DOM document type.
+class WebDocumentType : public WebNode {
+public:
+    WebDocumentType() { }
+    WebDocumentType(const WebDocumentType& e) : WebNode(e) { }
+
+    WebDocumentType& operator=(const WebDocumentType& e)
+    {
+        WebNode::assign(e);
+        return *this;
+    }
+    void assign(const WebDocumentType& e) { WebNode::assign(e); }
+
+    WEBKIT_EXPORT WebString name() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebDocumentType(const WTF::PassRefPtr<WebCore::DocumentType>&);
+    WebDocumentType& operator=(const WTF::PassRefPtr<WebCore::DocumentType>&);
+    operator WTF::PassRefPtr<WebCore::DocumentType>() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDragOperation.h b/public/webpage/WebDragOperation.h
new file mode 100644
index 0000000..050b74f
--- /dev/null
+++ b/public/webpage/WebDragOperation.h
@@ -0,0 +1,59 @@
+/*
+* 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/public/webpage/WebDragStatus.h b/public/webpage/WebDragStatus.h
new file mode 100644
index 0000000..fb490d3
--- /dev/null
+++ b/public/webpage/WebDragStatus.h
@@ -0,0 +1,46 @@
+/*
+* Copyright (C) 2012 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 WebDragStatus_h
+#define WebDragStatus_h
+
+namespace WebKit {
+
+enum WebDragStatus {
+    WebDragStatusUnknown = 0,
+    WebDragStatusEnter,
+    WebDragStatusOver,
+    WebDragStatusLeave,
+    WebDragStatusDrop
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebDraggableRegion.h b/public/webpage/WebDraggableRegion.h
new file mode 100644
index 0000000..1ec01db
--- /dev/null
+++ b/public/webpage/WebDraggableRegion.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2012 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 WebDraggableRegion_h
+#define WebDraggableRegion_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebRect.h"
+#include "../platform/WebString.h"
+
+namespace WebKit {
+
+struct WebDraggableRegion {
+    bool draggable;
+    WebRect bounds;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebEditingAction.h b/public/webpage/WebEditingAction.h
new file mode 100644
index 0000000..4e76100
--- /dev/null
+++ b/public/webpage/WebEditingAction.h
@@ -0,0 +1,44 @@
+/*
+ * 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/public/webpage/WebElement.h b/public/webpage/WebElement.h
new file mode 100644
index 0000000..ae1a9c2
--- /dev/null
+++ b/public/webpage/WebElement.h
@@ -0,0 +1,96 @@
+/*
+ * 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; }
+#endif
+
+namespace WebKit {
+struct WebRect;
+
+    // Provides 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; }
+        void assign(const WebElement& e) { WebNode::assign(e); }
+
+        WEBKIT_EXPORT bool isFormControlElement() const;
+        WEBKIT_EXPORT bool isTextFormControlElement() const;
+        // Returns the qualified name, which may contain a prefix and a colon.
+        WEBKIT_EXPORT WebString tagName() const;
+        // Check if this element has the specified qualified name. This function
+        // doesn't makes much sense because we have no ways to check namespace
+        // URI. Do not use this.
+        WEBKIT_EXPORT bool hasTagName(const WebString&) const;
+        // Check if this element has the specified local tag name, and the HTML
+        // namespace. Tag name matching is case-insensitive.
+        WEBKIT_EXPORT bool hasHTMLTagName(const WebString&) const;
+        WEBKIT_EXPORT bool hasAttribute(const WebString&) const;
+        WEBKIT_EXPORT void removeAttribute(const WebString&);
+        WEBKIT_EXPORT WebString getAttribute(const WebString&) const;
+        WEBKIT_EXPORT bool setAttribute(const WebString& name, const WebString& value);
+        WEBKIT_EXPORT WebString innerText();
+        WEBKIT_EXPORT WebDocument document() const;
+        WEBKIT_EXPORT void requestFullScreen();
+        WEBKIT_EXPORT WebString attributeLocalName(unsigned index) const;
+        WEBKIT_EXPORT WebString attributeValue(unsigned index) const;
+        WEBKIT_EXPORT unsigned attributeCount() const;
+        WEBKIT_EXPORT WebNode shadowRoot() const;
+
+        // Returns the language code specified for this element.  This attribute
+        // is inherited, so the returned value is drawn from the closest parent
+        // element that has the lang attribute set, or from the HTTP
+        // "Content-Language" header as a fallback.
+        WEBKIT_EXPORT WebString computeInheritedLanguage() const;
+
+        // Returns the bounds of the element in viewport space. The bounds
+        // have been adjusted to include any transformations. This view is
+        // also called the Root View in WebKit.
+        // This function will update the layout if required.
+        WEBKIT_EXPORT WebRect boundsInViewportSpace();
+
+#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/public/webpage/WebExceptionCode.h b/public/webpage/WebExceptionCode.h
new file mode 100644
index 0000000..61d53d9
--- /dev/null
+++ b/public/webpage/WebExceptionCode.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 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 WebExceptionCode_h
+#define WebExceptionCode_h
+
+namespace WebKit {
+
+// This should match how ExceptionCode is defined in WebCore.
+typedef int WebExceptionCode;
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebExternalPopupMenu.h b/public/webpage/WebExternalPopupMenu.h
new file mode 100644
index 0000000..49630cf
--- /dev/null
+++ b/public/webpage/WebExternalPopupMenu.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 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 WebExternalPopupMenu_h
+#define WebExternalPopupMenu_h
+
+namespace WebKit {
+
+struct WebRect;
+
+class WebExternalPopupMenu {
+public:
+    virtual void show(const WebRect& bounds) = 0;
+    virtual void close() = 0;
+};
+
+} // namespace WebKit
+
+#endif // WebExternalPopupMenu_h
diff --git a/public/webpage/WebExternalPopupMenuClient.h b/public/webpage/WebExternalPopupMenuClient.h
new file mode 100644
index 0000000..1396c65
--- /dev/null
+++ b/public/webpage/WebExternalPopupMenuClient.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2010 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 WebExternalPopupMenuClient_h
+#define WebExternalPopupMenuClient_h
+
+#include "../platform/WebVector.h"
+
+namespace WebKit {
+
+class WebExternalPopupMenuClient {
+public:
+    // Should be called when the currently selected item in the popup menu
+    // changed. Can be -1 if there is no selection.
+    virtual void didChangeSelection(int index) = 0;
+
+    // Should be called when an index has been accepted.
+    // Note that it is not safe to access this WebExternalPopupClientMenu after
+    // this has been called as it might not be valid anymore.
+    virtual void didAcceptIndex(int index) = 0;
+
+    // Should be called when a set of indices have been selected.
+    // Note that it is not safe to access this WebExternalPopupClientMenu after
+    // this has been called as it might not be valid anymore.
+    virtual void didAcceptIndices(const WebVector<int>& indices) = 0;
+
+    // Should be called when the popup menu was discarded (closed without a
+    // selection.
+    // Note that it is not safe to access this WebExternalPopupClientMenu after
+    // this has been called as it might not be valid anymore.
+    virtual void didCancel() = 0;
+};
+
+} // namespace WebKit
+
+#endif // WebExternalPopupMenuClient_h
diff --git a/public/webpage/WebFileChooserCompletion.h b/public/webpage/WebFileChooserCompletion.h
new file mode 100644
index 0000000..dc946f0
--- /dev/null
+++ b/public/webpage/WebFileChooserCompletion.h
@@ -0,0 +1,70 @@
+/*
+ * 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
+
+#include "../platform/WebString.h"
+
+namespace WebKit {
+
+template <typename T> class WebVector;
+
+// Gets called back when WebViewClient finished choosing a file.
+class WebFileChooserCompletion {
+public:
+    struct SelectedFileInfo {
+        // The actual path of the selected file.
+        WebString path;
+
+        // The display name of the file that is to be exposed as File.name in
+        // the DOM layer. If it is empty the base part of the |path| is used.
+        WebString displayName;
+    };
+
+    // 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;
+
+    // Called with zero or more files, given as a vector of SelectedFileInfo.
+    // Zero-lengthed vector means that the user cancelled or that file
+    // choosing failed. The callback instance is destroyed when this method
+    // is called.
+    // FIXME: Deprecate either one of the didChooseFile (and rename it to
+    // didChooseFile*s*).
+    virtual void didChooseFile(const WebVector<SelectedFileInfo>&) { }
+protected:
+    virtual ~WebFileChooserCompletion() {}
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFileChooserParams.h b/public/webpage/WebFileChooserParams.h
new file mode 100644
index 0000000..b92e39f
--- /dev/null
+++ b/public/webpage/WebFileChooserParams.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2010, 2011 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 WebFileChooserParams_h
+#define WebFileChooserParams_h
+
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+#include "WebFileChooserCompletion.h"
+
+namespace WebKit {
+
+struct WebFileChooserParams {
+    // If |multiSelect| is true, the dialog allows the user to select multiple files.
+    bool multiSelect;
+    // If |directory| is true, the dialog allows the user to select a directory.
+    bool directory;
+    // If |saveAs| is true, the dialog allows the user to select a possibly
+    // non-existent file. This can be used for a "Save As" dialog.
+    bool saveAs;
+    // |title| is the title for a file chooser dialog. It can be an empty string.
+    WebString title;
+    // |initialValue| is a filename which the dialog should select by default.
+    // It can be an empty string.
+    WebString initialValue;
+    // This contains MIME type strings such as "audio/*" "text/plain" or file
+    // extensions beginning with a period (.) such as ".mp3" ".txt".
+    // The dialog may restrict selectable files to files with the specified MIME
+    // types or file extensions.
+    // This list comes from an 'accept' attribute value of an INPUT element, and
+    // it contains only lower-cased MIME type strings and file extensions.
+    WebVector<WebString> acceptTypes;
+    // |selectedFiles| has filenames which a file upload control already selected.
+    // A WebViewClient implementation may ask a user to select
+    //  - removing a file from the selected files,
+    //  - appending other files, or
+    //  - replacing with other files
+    // before opening a file chooser dialog.
+    WebVector<WebString> selectedFiles;
+    // See http://www.w3.org/TR/html-media-capture/ for the semantics of the
+    // capture attribute. This string will either be empty (meaning the feature
+    // is disabled) or one of the following values:
+    //  - filesystem (default)
+    //  - camera
+    //  - camcorder
+    //  - microphone
+    WebString capture;
+
+    WebFileChooserParams()
+        : multiSelect(false)
+        , directory(false)
+        , saveAs(false)
+    {
+    }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFileError.h b/public/webpage/WebFileError.h
new file mode 100644
index 0000000..771e98b
--- /dev/null
+++ b/public/webpage/WebFileError.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2010 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 "../platform/WebFileError.h"
diff --git a/public/webpage/WebFileInfo.h b/public/webpage/WebFileInfo.h
new file mode 100644
index 0000000..0ed4347
--- /dev/null
+++ b/public/webpage/WebFileInfo.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2012 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 "../platform/WebFileInfo.h"
diff --git a/public/webpage/WebFileSystemCallbacks.h b/public/webpage/WebFileSystemCallbacks.h
new file mode 100644
index 0000000..2e67662
--- /dev/null
+++ b/public/webpage/WebFileSystemCallbacks.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2010 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 "../platform/WebFileSystemCallbacks.h"
diff --git a/public/webpage/WebFileSystemEntry.h b/public/webpage/WebFileSystemEntry.h
new file mode 100644
index 0000000..6e4ba40
--- /dev/null
+++ b/public/webpage/WebFileSystemEntry.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2010 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 "../platform/WebFileSystemEntry.h"
diff --git a/public/webpage/WebFileUtilities.h b/public/webpage/WebFileUtilities.h
new file mode 100644
index 0000000..5fcda94
--- /dev/null
+++ b/public/webpage/WebFileUtilities.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2010 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 "../platform/WebFileUtilities.h"
diff --git a/public/webpage/WebFileWriter.h b/public/webpage/WebFileWriter.h
new file mode 100644
index 0000000..e2a534b
--- /dev/null
+++ b/public/webpage/WebFileWriter.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2010 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 WebFileWriter_h
+#define WebFileWriter_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebString.h"
+
+namespace WebKit {
+
+class WebURL;
+
+class WebFileWriter {
+public:
+    virtual ~WebFileWriter() { }
+
+    // Only one write or one truncate operation can be in progress at a time.
+    // These functions are asynchronous and will report results through the WebFileWriter's associated WebFileWriterClient.
+    virtual void write(long long position, const WebURL& blobURL) = 0;
+    virtual void truncate(long long length) = 0;
+
+    // Cancel will attempt to abort a running write or truncate.  However, it may not be possible to cancel an in-progress action, or the call may have come in too late.  Partial writes are possible.
+    // Do not call cancel when there is no write or truncate in progress.
+    virtual void cancel() = 0;
+};
+    
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFileWriterClient.h b/public/webpage/WebFileWriterClient.h
new file mode 100644
index 0000000..b41cf51
--- /dev/null
+++ b/public/webpage/WebFileWriterClient.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2010 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 WebFileWriterClient_h
+#define WebFileWriterClient_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebFileError.h"
+
+namespace WebKit {
+
+class WebFileWriterClient {
+public:
+    // Called for each chunk of a write, to indicate progress.
+    // On the final chunk, when the write is finished, complete will be true.
+    virtual void didWrite(long long bytes, bool complete) = 0;
+
+    // Called once when the truncate completes successfully.
+    virtual void didTruncate() = 0;
+
+    // Called if the write or truncate fails, or if it is cancelled before the write or truncate completes.  Completion of an operation will be signalled exactly once, either by didFail, didTruncate, or didWrite(..., true).
+    virtual void didFail(WebFileError) = 0;
+
+protected:
+    virtual ~WebFileWriterClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFindOptions.h b/public/webpage/WebFindOptions.h
new file mode 100644
index 0000000..f76bd94
--- /dev/null
+++ b/public/webpage/WebFindOptions.h
@@ -0,0 +1,57 @@
+/*
+ * 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 "../platform/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/public/webpage/WebFont.h b/public/webpage/WebFont.h
new file mode 100644
index 0000000..5d2d1a4
--- /dev/null
+++ b/public/webpage/WebFont.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2010 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 WebFont_h
+#define WebFont_h
+
+#include "../platform/WebCanvas.h"
+#include "../platform/WebColor.h"
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+struct WebFontDescription;
+struct WebFloatPoint;
+struct WebFloatRect;
+struct WebPoint;
+struct WebRect;
+struct WebTextRun;
+
+class WebFont {
+public:
+    virtual ~WebFont() { }
+
+    WEBKIT_EXPORT static WebFont* create(const WebFontDescription&);
+
+    virtual WebFontDescription fontDescription() const = 0;
+
+    virtual int ascent() const = 0;
+    virtual int descent() const = 0;
+    virtual int height() const = 0;
+    virtual int lineSpacing() const = 0;
+    virtual float xHeight() const = 0;
+
+    // Draws the text run to the given canvas. The text is positioned at the
+    // given left-hand point at the baseline.
+    //
+    // The text will be clipped to the given clip rect. |canvasIsOpaque| is
+    // used to control whether subpixel antialiasing is possible. If there is a
+    // possibility the area drawn could be semi-transparent, subpixel
+    // antialiasing will be disabled.
+    //
+    // |from| and |to| allow the caller to specify a subrange of the given text
+    // run to draw. If |to| is -1, the entire run will be drawn.
+    virtual void drawText(WebCanvas*, const WebTextRun&, const WebFloatPoint& leftBaseline, WebColor,
+                          const WebRect& clip, bool canvasIsOpaque,
+                          int from = 0, int to = -1) const = 0;
+
+    // Measures the width in pixels of the given text run.
+    virtual int calculateWidth(const WebTextRun&) const = 0;
+
+    // Returns the character offset corresponding to the given horizontal pixel
+    // position as measured from from the left of the run.
+    virtual int offsetForPosition(const WebTextRun&, float position) const = 0;
+
+    // Returns the rectangle representing the selection rect for the subrange
+    // |from| -> |to| of the given text run. You can use -1 for |to| to specify
+    // the entire run (this will do something similar to calling width()).
+    //
+    // The rect will be positioned as if the text was drawn at the given
+    // |leftBaseline| position. |height| indicates the height of the selection
+    // rect you want, typically this will just be the height() of this font.
+    //
+    // To get the pixel offset of some character (the opposite of
+    // offsetForPosition()), pass in a |leftBaseline| = (0, 0), |from| = 0, and
+    // |to| = the character you want. The right edge of the resulting selection
+    // rect will tell you the right side of the character.
+    virtual WebFloatRect selectionRectForText(const WebTextRun&, const WebFloatPoint& leftBaseline,
+                                              int height, int from = 0, int to = -1) const = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFontCache.h b/public/webpage/WebFontCache.h
new file mode 100644
index 0000000..0a46236
--- /dev/null
+++ b/public/webpage/WebFontCache.h
@@ -0,0 +1,59 @@
+/*
+ * 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 "../platform/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_EXPORT static size_t fontDataCount();
+
+    // Returns the number of inactive items in the font data cache.
+    WEBKIT_EXPORT static size_t inactiveFontDataCount();
+
+    // Clears the cache.
+    WEBKIT_EXPORT static void clear();
+
+    // Purges inactive font data.
+    WEBKIT_EXPORT static void prune();
+
+private:
+    WebFontCache();  // Not intended to be instanced.
+};
+
+}  // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFontDescription.h b/public/webpage/WebFontDescription.h
new file mode 100644
index 0000000..145fd59
--- /dev/null
+++ b/public/webpage/WebFontDescription.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2010 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 WebFontDescription_h
+#define WebFontDescription_h
+
+#include "../platform/WebString.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class FontDescription; }
+#endif
+
+namespace WebKit {
+
+struct WebFontDescription {
+    enum GenericFamily {
+        GenericFamilyNone,
+        GenericFamilyStandard,
+        GenericFamilySerif,
+        GenericFamilySansSerif,
+        GenericFamilyMonospace,
+        GenericFamilyCursive,
+        GenericFamilyFantasy
+    };
+
+    enum Smoothing {
+        SmoothingAuto,
+        SmoothingNone,
+        SmoothingGrayscale,
+        SmoothingSubpixel
+    };
+
+    enum Weight { 
+        Weight100,
+        Weight200,
+        Weight300,
+        Weight400,
+        Weight500,
+        Weight600,
+        Weight700,
+        Weight800,
+        Weight900,
+        WeightNormal = Weight400,
+        WeightBold = Weight700
+    };
+
+    WebFontDescription()
+        : genericFamily(GenericFamilyNone)
+        , size(0)
+        , italic(false)
+        , smallCaps(false)
+        , weight(WeightNormal)
+        , smoothing(SmoothingAuto)
+        , letterSpacing(0)
+        , wordSpacing(0)
+    {
+    }
+
+    WebString family;
+    GenericFamily genericFamily;
+    float size;
+    bool italic;
+    bool smallCaps;
+    Weight weight;
+    Smoothing smoothing;
+
+    short letterSpacing;
+    short wordSpacing;
+
+#if WEBKIT_IMPLEMENTATION
+    WebFontDescription(const WebCore::FontDescription&, short fontLetterSpacing, short fontWordSpacing);
+
+    operator WebCore::FontDescription() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFormControlElement.h b/public/webpage/WebFormControlElement.h
new file mode 100644
index 0000000..1be6610
--- /dev/null
+++ b/public/webpage/WebFormControlElement.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2010 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 WebFormControlElement_h
+#define WebFormControlElement_h
+
+#include "../platform/WebString.h"
+#include "WebElement.h"
+#include "WebFormElement.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class HTMLFormControlElement; }
+#endif
+
+namespace WebKit {
+
+// Provides readonly access to some properties of a DOM form control element node.
+class WebFormControlElement : public WebElement {
+public:
+    WebFormControlElement() : WebElement() { }
+    WebFormControlElement(const WebFormControlElement& e) : WebElement(e) { }
+
+    WebFormControlElement& operator=(const WebFormControlElement& e)
+    {
+        WebElement::assign(e);
+        return *this;
+    }
+    void assign(const WebFormControlElement& e) { WebElement::assign(e); }
+
+    WEBKIT_EXPORT bool isEnabled() const;
+    WEBKIT_EXPORT bool isReadOnly() const;
+    WEBKIT_EXPORT WebString formControlName() const;
+    WEBKIT_EXPORT WebString formControlType() const;
+
+    WEBKIT_EXPORT void dispatchFormControlChangeEvent();
+
+    // 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.
+    WEBKIT_EXPORT WebString nameForAutofill() const;
+
+    WEBKIT_EXPORT WebFormElement form() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebFormControlElement(const WTF::PassRefPtr<WebCore::HTMLFormControlElement>&);
+    WebFormControlElement& operator=(const WTF::PassRefPtr<WebCore::HTMLFormControlElement>&);
+    operator WTF::PassRefPtr<WebCore::HTMLFormControlElement>() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFormElement.h b/public/webpage/WebFormElement.h
new file mode 100644
index 0000000..b5f1c3a
--- /dev/null
+++ b/public/webpage/WebFormElement.h
@@ -0,0 +1,89 @@
+/*
+ * 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 "../platform/WebVector.h"
+#include "WebElement.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class HTMLFormElement; }
+#endif
+
+namespace WebKit {
+
+    class WebInputElement;
+    class WebFormControlElement;
+
+    // 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& element) : WebElement(element) { }
+
+        WebFormElement& operator=(const WebFormElement& element)
+        {
+            WebElement::assign(element);
+            return *this;
+        }
+        void assign(const WebFormElement& element) { WebElement::assign(element); }
+
+        WEBKIT_EXPORT bool autoComplete() const;
+        WEBKIT_EXPORT WebString action() const;
+        WEBKIT_EXPORT WebString name() const;
+        WEBKIT_EXPORT WebString method() const;
+        WEBKIT_EXPORT bool wasUserSubmitted() const;
+        WEBKIT_EXPORT void submit();
+        // FIXME: Deprecate and replace with WebVector<WebElement>.
+        WEBKIT_EXPORT void getNamedElements(const WebString&, WebVector<WebNode>&);
+        WEBKIT_EXPORT void getFormControlElements(WebVector<WebFormControlElement>&) const;
+
+        enum AutocompleteResult {
+            AutocompleteResultSuccess,
+            AutocompleteResultErrorDisabled,
+            AutocompleteResultErrorCancel,
+            AutocompleteResultErrorInvalid,
+        };
+        WEBKIT_EXPORT void finishRequestAutocomplete(WebFormElement::AutocompleteResult);
+
+#if WEBKIT_IMPLEMENTATION
+        WebFormElement(const WTF::PassRefPtr<WebCore::HTMLFormElement>&);
+        WebFormElement& operator=(const WTF::PassRefPtr<WebCore::HTMLFormElement>&);
+        operator WTF::PassRefPtr<WebCore::HTMLFormElement>() const;
+#endif
+    };
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFrame.h b/public/webpage/WebFrame.h
new file mode 100644
index 0000000..4d7d1e2
--- /dev/null
+++ b/public/webpage/WebFrame.h
@@ -0,0 +1,660 @@
+/*
+ * 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 "../platform/WebCanvas.h"
+#include "../platform/WebFileSystem.h"
+#include "../platform/WebFileSystemType.h"
+#include "../platform/WebMessagePortChannel.h"
+#include "../platform/WebReferrerPolicy.h"
+#include "../platform/WebURL.h"
+#include "WebIconURL.h"
+#include "WebNode.h"
+#include "WebURLLoaderOptions.h"
+
+struct NPObject;
+
+namespace v8 {
+class Context;
+class Function;
+class Object;
+class Value;
+template <class T> class Handle;
+template <class T> class Local;
+}
+
+namespace WebKit {
+
+class WebData;
+class WebDataSource;
+class WebDocument;
+class WebElement;
+class WebFormElement;
+class WebHistoryItem;
+class WebInputElement;
+class WebPerformance;
+class WebRange;
+class WebSecurityOrigin;
+class WebString;
+class WebURL;
+class WebURLLoader;
+class WebURLRequest;
+class WebView;
+struct WebConsoleMessage;
+struct WebFindOptions;
+struct WebFloatPoint;
+struct WebFloatRect;
+struct WebPoint;
+struct WebPrintParams;
+struct WebRect;
+struct WebScriptSource;
+struct WebSize;
+struct WebURLLoaderOptions;
+
+template <typename T> class WebVector;
+
+class WebFrame {
+public:
+    // Control of renderTreeAsText output
+    enum RenderAsTextControl {
+        RenderAsTextNormal = 0,
+        RenderAsTextDebug = 1 << 0,
+        RenderAsTextPrinting = 1 << 1
+    };
+    typedef unsigned RenderAsTextControls;
+
+    // Returns the number of live WebFrame objects, used for leak checking.
+    WEBKIT_EXPORT static int instanceCount();
+
+    // Returns the WebFrame associated with the current V8 context. This
+    // function can return 0 if the context is associated with a Document that
+    // is not currently being displayed in a Frame.
+    WEBKIT_EXPORT static WebFrame* frameForCurrentContext();
+
+    // Returns the frame corresponding to the given context. This can return 0
+    // if the context is detached from the frame, or if the context doesn't
+    // correspond to a frame (e.g., workers).
+    WEBKIT_EXPORT static WebFrame* frameForContext(v8::Handle<v8::Context>);
+
+    // Returns the frame inside a given frame or iframe element. Returns 0 if
+    // the given element is not a frame, iframe or if the frame is empty.
+    WEBKIT_EXPORT static WebFrame* fromFrameOwnerElement(const WebElement&);
+
+
+    // Basic properties ---------------------------------------------------
+
+    // The unique name of this frame.
+    virtual WebString uniqueName() const = 0;
+
+    // The name of this frame. If no name is given, empty string is returned.
+    virtual WebString assignedName() const = 0;
+
+    // Sets the name of this frame. For child frames (frames that are not a
+    // top-most frame) the actual name may have a suffix appended to make the
+    // frame name unique within the hierarchy.
+    virtual void setName(const WebString&) = 0;
+
+    // A globally unique identifier for this frame.
+    virtual long long identifier() const = 0;
+
+    // The urls of the given combination types of favicon (if any) specified by
+    // the document loaded in this frame. The iconTypesMask is a bit-mask of
+    // WebIconURL::Type values, used to select from the available set of icon
+    // URLs
+    virtual WebVector<WebIconURL> iconURLs(int iconTypesMask) 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.
+
+    // If set to false, do not draw scrollbars on this frame's view.
+    virtual void setCanHaveScrollbars(bool) = 0;
+
+    // The scroll offset from the top-left corner of the frame in pixels.
+    virtual WebSize scrollOffset() const = 0;
+    virtual void setScrollOffset(const WebSize&) = 0;
+
+    // The minimum and maxium scroll positions in pixels.
+    virtual WebSize minimumScrollOffset() const = 0;
+    virtual WebSize maximumScrollOffset() const = 0;
+
+    // The size of the contents area.
+    virtual WebSize contentsSize() const = 0;
+
+    // Returns true if the contents (minus scrollbars) has non-zero area.
+    virtual bool hasVisibleContent() const = 0;
+
+    // Returns the visible content rect (minus scrollbars, in absolute coordinate)
+    virtual WebRect visibleContentRect() const = 0;
+
+    virtual bool hasHorizontalScrollbar() const = 0;
+    virtual bool hasVerticalScrollbar() 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;
+
+    // Sets the frame that opened this one or 0 if there is none.
+    virtual void setOpener(const WebFrame*) = 0;
+
+    // Reset the frame that opened this frame to 0.
+    // This is executed between layout tests runs
+    void clearOpener() { setOpener(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 WebDocument document() const = 0;
+
+    virtual WebPerformance performance() const = 0;
+
+
+    // Scripting ----------------------------------------------------------
+
+    // 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;
+    virtual void bindToWindowObject(
+        const WebString& name, NPObject*, void*) = 0;
+
+    // Executes script in the context of the current page.
+    virtual void executeScript(const WebScriptSource&) = 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.
+    //
+    // worldID must be > 0 (as 0 represents the main world).
+    virtual void executeScriptInIsolatedWorld(
+        int worldID, const WebScriptSource* sources, unsigned numSources,
+        int extensionGroup) = 0;
+
+    // Associates an isolated world (see above for description) with a security
+    // origin. XMLHttpRequest instances used in that world will be considered
+    // to come from that origin, not the frame's.
+    virtual void setIsolatedWorldSecurityOrigin(
+        int worldID, const WebSecurityOrigin&) = 0;
+
+    // Associates a content security policy with an isolated world. This policy
+    // should be used when evaluating script in the isolated world, and should
+    // also replace a protected resource's CSP when evaluating resources
+    // injected into the DOM.
+    //
+    // FIXME: Setting this simply bypasses the protected resource's CSP. It
+    //     doesn't yet restrict the isolated world to the provided policy.
+    virtual void setIsolatedWorldContentSecurityPolicy(
+        int worldID, const WebString&) = 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;
+
+    // Check if the scripting URL represents a mixed content condition relative
+    // to this frame.
+    virtual bool checkIfRunInsecureContent(const WebURL&) const = 0;
+
+    // Executes script in the context of the current page and returns the value
+    // that the script evaluated to.
+    virtual v8::Handle<v8::Value> executeScriptAndReturnValue(
+        const WebScriptSource&) = 0;
+
+    // worldID must be > 0 (as 0 represents the main world).
+    virtual void executeScriptInIsolatedWorld(
+        int worldID, const WebScriptSource* sourcesIn, unsigned numSources,
+        int extensionGroup, WebVector<v8::Local<v8::Value> >* results) = 0;
+
+    // Call the function with the given receiver and arguments, bypassing
+    // canExecute().
+    virtual v8::Handle<v8::Value> callFunctionEvenIfScriptDisabled(
+        v8::Handle<v8::Function>,
+        v8::Handle<v8::Object>,
+        int argc,
+        v8::Handle<v8::Value> argv[]) = 0;
+
+    // Returns the V8 context for associated with the main world and this
+    // frame. There can be many V8 contexts associated with this frame, one for
+    // each isolated world and one for the main world. If you don't know what
+    // the "main world" or an "isolated world" is, then you probably shouldn't
+    // be calling this API.
+    virtual v8::Local<v8::Context> mainWorldScriptContext() const = 0;
+
+    // Creates an instance of file system object.
+    virtual v8::Handle<v8::Value> createFileSystem(WebFileSystemType,
+        const WebString& name,
+        const WebString& rootURL) = 0;
+    // Creates an instance of serializable file system object.
+    // FIXME: Remove this API after we have a better way of creating serialized
+    // file system object.
+    virtual v8::Handle<v8::Value> createSerializableFileSystem(WebFileSystemType,
+        const WebString& name,
+        const WebString& rootURL) = 0;
+    // Creates an instance of file or directory entry object.
+    virtual v8::Handle<v8::Value> createFileEntry(WebFileSystemType,
+        const WebString& fileSystemName,
+        const WebString& fileSystemRootURL,
+        const WebString& filePath,
+        bool isDirectory) = 0;
+
+    // Navigation ----------------------------------------------------------
+
+    // Reload the current document.
+    // True |ignoreCache| explicitly bypasses caches.
+    // False |ignoreCache| revalidates any existing cache entries.
+    virtual void reload(bool ignoreCache = false) = 0;
+
+    // This is used for situations where we want to reload a different URL because of a redirect.
+    virtual void reloadWithOverrideURL(const WebURL& overrideUrl, bool ignoreCache = false) = 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.
+    // DEPRECATED: Please use createAssociatedURLLoader instead.
+    virtual void dispatchWillSendRequest(WebURLRequest&) = 0;
+
+    // Returns a WebURLLoader that is associated with this frame.  The loader
+    // will, for example, be cancelled when WebFrame::stopLoading is called.
+    // FIXME: stopLoading does not yet cancel an associated loader!!
+    virtual WebURLLoader* createAssociatedURLLoader(const WebURLLoaderOptions& = WebURLLoaderOptions()) = 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 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;
+
+    // Returns the frame rectangle in window coordinate space of the given text
+    // range.
+    virtual bool firstRectForCharacterRange(unsigned location, unsigned length, WebRect&) const = 0;
+
+    // Returns the index of a character in the Frame's text stream at the given
+    // point. The point is in the window coordinate space. Will return
+    // WTF::notFound if the point is invalid.
+    virtual size_t characterIndexForPoint(const WebPoint&) 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&, const WebNode& = WebNode()) = 0;
+    virtual bool executeCommand(const WebString&, const WebString& value, const WebNode& = WebNode()) = 0;
+    virtual bool isCommandEnabled(const WebString&) const = 0;
+
+    // Spell-checking support.
+    virtual void enableContinuousSpellChecking(bool) = 0;
+    virtual bool isContinuousSpellCheckingEnabled() const = 0;
+    virtual void requestTextChecking(const WebElement&) = 0;
+    virtual void replaceMisspelledRange(const WebString&) = 0;
+    virtual void removeSpellingMarkers() = 0;
+
+    // Selection -----------------------------------------------------------
+
+    virtual bool hasSelection() const = 0;
+
+    virtual WebRange selectionRange() const = 0;
+
+    virtual WebString selectionAsText() const = 0;
+    virtual WebString selectionAsMarkup() const = 0;
+
+    // Expands the selection to a word around the caret and returns
+    // true. Does nothing and returns false if there is no caret or
+    // there is ranged selection.
+    virtual bool selectWordAroundCaret() = 0;
+
+    // DEPRECATED: Use moveRangeSelection/moveCaretSelection.
+    virtual void selectRange(const WebPoint& base, const WebPoint& extent) = 0;
+    virtual void moveCaretSelectionTowardsWindowPoint(const WebPoint&) = 0;
+
+    virtual void selectRange(const WebRange&) = 0;
+
+    // Move the current selection to the provided window point/points. If the
+    // current selection is editable, the new selection will be restricted to
+    // the root editable element.
+    virtual void moveRangeSelection(const WebPoint& base, const WebPoint& extent) = 0;
+    virtual void moveCaretSelection(const WebPoint&) = 0;
+
+    // Printing ------------------------------------------------------------
+
+    // Reformats the WebFrame for printing. WebPrintParams specifies the printable
+    // content size, paper size, printable area size, printer DPI and print
+    // scaling option. If constrainToNode node is specified, then only the given node
+    // is printed (for now only plugins are supported), instead of the entire frame.
+    // Returns the number of pages that can be printed at the given
+    // page size. The out param useBrowserOverlays specifies whether the browser
+    // process should use its overlays (header, footer, margins etc) or whether
+    // the renderer controls this.
+    virtual int printBegin(const WebPrintParams&,
+                           const WebNode& constrainToNode = WebNode(),
+                           bool* useBrowserOverlays = 0) = 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;
+
+    // If the frame contains a full-frame plugin or the given node refers to a
+    // plugin whose content indicates that printed output should not be scaled,
+    // return true, otherwise return false.
+    virtual bool isPrintScalingDisabledForPlugin(const WebNode& = WebNode()) = 0;
+
+    // CSS3 Paged Media ----------------------------------------------------
+
+    // Returns true if page box (margin boxes and page borders) is visible.
+    virtual bool isPageBoxVisible(int pageIndex) = 0;
+
+    // Returns true if the page style has custom size information.
+    virtual bool hasCustomPageSizeStyle(int pageIndex) = 0;
+
+    // Returns the preferred page size and margins in pixels, assuming 96
+    // pixels per inch. pageSize, marginTop, marginRight, marginBottom,
+    // marginLeft must be initialized to the default values that are used if
+    // auto is specified.
+    virtual void pageSizeAndMarginsInPixels(int pageIndex,
+                                            WebSize& pageSize,
+                                            int& marginTop,
+                                            int& marginRight,
+                                            int& marginBottom,
+                                            int& marginLeft) = 0;
+
+    // Returns the value for a page property that is only defined when printing.
+    // printBegin must have been called before this method.
+    virtual WebString pageProperty(const WebString& propertyName, int pageIndex) = 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;
+
+    // Returns a counter that is incremented when the find-in-page markers are
+    // changed on any frame. Switching the active marker doesn't change the
+    // current version. Should be called only on the main frame.
+    virtual int findMatchMarkersVersion() const = 0;
+
+    // Returns the bounding box of the active find-in-page match marker or an
+    // empty rect if no such marker exists. The rect is returned in find-in-page
+    // coordinates whatever frame the active marker is.
+    // Should be called only on the main frame.
+    virtual WebFloatRect activeFindMatchRect() = 0;
+
+    // Swaps the contents of the provided vector with the bounding boxes of the
+    // find-in-page match markers from all frames. The bounding boxes are returned
+    // in find-in-page coordinates. This method should be called only on the main frame.
+    virtual void findMatchRects(WebVector<WebFloatRect>&) = 0;
+
+    // Selects the find-in-page match in the appropriate frame closest to the
+    // provided point in find-in-page coordinates. Returns the ordinal of such
+    // match or -1 if none could be found. If not null, selectionRect is set to
+    // the bounding box of the selected match in window coordinates.
+    // This method should be called only on the main frame.
+    virtual int selectNearestFindMatch(const WebFloatPoint&,
+                                       WebRect* selectionRect) = 0;
+
+    // OrientationChange event ---------------------------------------------
+
+    // Orientation is the interface orientation in degrees.
+    // Some examples are:
+    //  0 is straight up; -90 is when the device is rotated 90 clockwise;
+    //  90 is when rotated counter clockwise.
+    virtual void sendOrientationChangeEvent(int orientation) = 0;
+
+    // Events --------------------------------------------------------------
+
+    // Dispatches a message event on the current DOMWindow in this WebFrame.
+    virtual void dispatchMessageEventWithOriginCheck(
+        const WebSecurityOrigin& intendedTargetOrigin,
+        const WebDOMEvent&) = 0;
+
+
+    // Utility -------------------------------------------------------------
+
+    // 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;
+
+    // Returns a text representation of the render tree.  This method is used
+    // to support layout tests.
+    virtual WebString renderTreeAsText(RenderAsTextControls toShow = RenderAsTextNormal) const = 0;
+
+    // Calls markerTextForListItem() defined in WebCore/rendering/RenderTreeAsText.h.
+    virtual WebString markerTextForListItem(const WebElement&) const = 0;
+
+    // Prints all of the pages into the canvas, with page boundaries drawn as
+    // one pixel wide blue lines. This method exists to support layout tests.
+    virtual void printPagesWithBoundaries(WebCanvas*, const WebSize&) = 0;
+
+    // Returns the bounds rect for current selection. If selection is performed
+    // on transformed text, the rect will still bound the selection but will
+    // not be transformed itself. If no selection is present, the rect will be
+    // empty ((0,0), (0,0)).
+    virtual WebRect selectionBoundsRect() const = 0;
+
+    // Only for testing purpose:
+    // Returns true if selection.anchorNode has a marker on range from |from| with |length|.
+    virtual bool selectionStartHasSpellingMarkerFor(int from, int length) const = 0;
+
+    // Dumps the layer tree, used by the accelerated compositor, in
+    // text form. This is used only by layout tests.
+    virtual WebString layerTreeAsText(bool showDebugInfo = false) const = 0;
+
+protected:
+    ~WebFrame() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebFrameClient.h b/public/webpage/WebFrameClient.h
new file mode 100644
index 0000000..53607d9
--- /dev/null
+++ b/public/webpage/WebFrameClient.h
@@ -0,0 +1,438 @@
+/*
+ * Copyright (C) 2011, 2012 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 "../platform/WebCommon.h"
+#include "../platform/WebFileSystem.h"
+#include "../platform/WebFileSystemType.h"
+#include "../platform/WebURLError.h"
+#include "../platform/WebURLRequest.h"
+#include "WebDOMMessageEvent.h"
+#include "WebIconURL.h"
+#include "WebNavigationPolicy.h"
+#include "WebNavigationType.h"
+#include "WebSecurityOrigin.h"
+#include "WebStorageQuotaType.h"
+#include "WebTextDirection.h"
+#include <v8.h>
+
+namespace WebKit {
+
+class WebApplicationCacheHost;
+class WebApplicationCacheHostClient;
+class WebCachedURLRequest;
+class WebCookieJar;
+class WebDataSource;
+class WebDOMEvent;
+class WebFormElement;
+class WebFrame;
+class WebMediaPlayer;
+class WebMediaPlayerClient;
+class WebNode;
+class WebPlugin;
+class WebRTCPeerConnectionHandler;
+class WebSharedWorker;
+class WebSharedWorkerClient;
+class WebSocketStreamHandle;
+class WebStorageQuotaCallbacks;
+class WebString;
+class WebURL;
+class WebURLLoader;
+class WebURLResponse;
+class WebWorker;
+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 WebSharedWorker* createSharedWorker(WebFrame*, const WebURL&, const WebString&, unsigned long long) { return 0; }
+
+    // May return null.
+    virtual WebMediaPlayer* createMediaPlayer(WebFrame*, const WebURL&, WebMediaPlayerClient*) { return 0; }
+
+    // May return null.
+    virtual WebApplicationCacheHost* createApplicationCacheHost(WebFrame*, WebApplicationCacheHostClient*) { return 0; }
+
+
+    // Services ------------------------------------------------------------
+
+    // A frame specific cookie jar.  May return null, in which case
+    // WebKitPlatformSupport::cookieJar() will be called to access cookies.
+    virtual WebCookieJar* cookieJar(WebFrame*) { return 0; }
+
+
+    // General notifications -----------------------------------------------
+
+    // Indicates that another page has accessed the DOM of the initial empty
+    // document of a main frame. After this, it is no longer safe to show a
+    // pending navigation's URL, because a URL spoof is possible.
+    virtual void didAccessInitialDocument(WebFrame*) { }
+
+    // A child frame was created in this frame. This is called when the frame
+    // is created and initialized.
+    virtual void didCreateFrame(WebFrame* parent, WebFrame* child) { }
+
+    // This frame set its opener to null, disowning it.
+    // See http://html.spec.whatwg.org/#dom-opener.
+    virtual void didDisownOpener(WebFrame*) { }
+
+    // This frame has been detached from the view, but has not been closed yet.
+    virtual void frameDetached(WebFrame*) { }
+
+    // This frame is about to be closed. This is called after frameDetached,
+    // when the document is being unloaded, due to new one committing.
+    virtual void willClose(WebFrame*) { }
+
+    // This frame's name has changed.
+    virtual void didChangeName(WebFrame*, const WebString&) { }
+
+    // Load commands -------------------------------------------------------
+
+    // The client should handle the navigation externally.
+    virtual void loadURLExternally(
+        WebFrame*, const WebURLRequest&, WebNavigationPolicy) { }
+    virtual void loadURLExternally(
+        WebFrame*, const WebURLRequest&, WebNavigationPolicy, const WebString& downloadName) { }
+
+
+    // Navigational queries ------------------------------------------------
+
+    // The client may choose to alter the navigation policy.  Otherwise,
+    // defaultPolicy should just be returned.
+    virtual WebNavigationPolicy decidePolicyForNavigation(
+        WebFrame*, const WebURLRequest&, WebNavigationType,
+        WebNavigationPolicy defaultPolicy, bool isRedirect) { return defaultPolicy; }
+
+    // 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 has been requested, but the page's submit event handler
+    // hasn't yet had a chance to run (and possibly alter/interrupt the submit.)
+    virtual void willSendSubmitEvent(WebFrame*, const WebFormElement&) { }
+
+    // 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* frame, const WebString& title, WebTextDirection direction) { }
+
+    // The icon for the page have changed.
+    virtual void didChangeIcon(WebFrame*, WebIconURL::Type) { }
+
+    // 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 no change to the documents within the page.
+    // For example, the navigation may have just resulted in scrolling to a
+    // named anchor or a PopState event may have been dispatched.
+    virtual void didNavigateWithinPage(WebFrame*, bool isNewNavigation) { }
+
+    // The navigation resulted in scrolling the page to a named anchor instead
+    // of downloading a new document.
+    virtual void didChangeLocationWithinPage(WebFrame*) { }
+
+    // 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 element will request a resource.
+    virtual void willRequestResource(WebFrame*, const WebCachedURLRequest&) { }
+
+    // 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&) { }
+
+    virtual void didChangeResourcePriority(
+        WebFrame*, unsigned identifier, const WebKit::WebURLRequest::Priority&) { }
+
+    // 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&, const WebURL& insecureURL) { }
+
+    // A reflected XSS was encountered in the page and suppressed.
+    virtual void didDetectXSS(WebFrame*, const WebURL&, bool didBlockEntirePage) { }
+
+    // Script notifications ------------------------------------------------
+
+    // 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*, v8::Handle<v8::Context>, int extensionGroup, int worldId) { }
+
+    // WebKit is about to release its reference to a v8 context for a frame.
+    virtual void willReleaseScriptContext(WebFrame*, v8::Handle<v8::Context>, int worldId) { }
+
+    // Geometry notifications ----------------------------------------------
+
+    // The frame's document finished the initial layout of a page.
+    virtual void didFirstLayout(WebFrame*) { }
+
+    // The frame's document finished the initial non-empty layout of a page.
+    virtual void didFirstVisuallyNonEmptyLayout(WebFrame*) { }
+
+    // The size of the content area changed.
+    virtual void didChangeContentsSize(WebFrame*, const WebSize&) { }
+
+    // The main frame scrolled.
+    virtual void didChangeScrollOffset(WebFrame*) { }
+
+    // If the frame is loading an HTML document, this will be called to
+    // notify that the <body> will be attached soon.
+    virtual void willInsertBody(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) { }
+
+    // FileSystem ----------------------------------------------------
+
+    // Requests to open a FileSystem.
+    // |size| indicates how much storage space (in bytes) the caller expects
+    // to need.
+    // WebFileSystemCallbacks::didOpenFileSystem() must be called with
+    // a name and root path for the requested FileSystem when the operation
+    // is completed successfully. WebFileSystemCallbacks::didFail() must be
+    // called otherwise. The create bool is for indicating whether or not to
+    // create root path for file systems if it do not exist.
+    virtual void openFileSystem(
+        WebFrame*, WebFileSystemType, long long size,
+        bool create, WebFileSystemCallbacks*) { }
+
+    // Deletes FileSystem.
+    // WebFileSystemCallbacks::didSucceed() must be called when the operation
+    // is completed successfully. WebFileSystemCallbacks::didFail() must be
+    // called otherwise.
+    // All in-flight operations and following operations may fail after the
+    // FileSystem is deleted.
+    virtual void deleteFileSystem(
+        WebFrame*, WebFileSystemType, WebFileSystemCallbacks*) { }
+
+    // Quota ---------------------------------------------------------
+
+    // Queries the origin's storage usage and quota information.
+    // WebStorageQuotaCallbacks::didQueryStorageUsageAndQuota will be called
+    // with the current usage and quota information for the origin. When
+    // an error occurs WebStorageQuotaCallbacks::didFail is called with an
+    // error code.
+    // The callbacks object is deleted when the callback method is called
+    // and does not need to be (and should not be) deleted manually.
+    virtual void queryStorageUsageAndQuota(
+        WebFrame*, WebStorageQuotaType, WebStorageQuotaCallbacks*) { }
+
+    // Requests a new quota size for the origin's storage.
+    // |newQuotaInBytes| indicates how much storage space (in bytes) the
+    // caller expects to need.
+    // WebStorageQuotaCallbacks::didGrantStorageQuota will be called when
+    // a new quota is granted. WebStorageQuotaCallbacks::didFail
+    // is called with an error code otherwise.
+    // Note that the requesting quota size may not always be granted and
+    // a smaller amount of quota than requested might be returned.
+    // The callbacks object is deleted when the callback method is called
+    // and does not need to be (and should not be) deleted manually.
+    virtual void requestStorageQuota(
+        WebFrame*, WebStorageQuotaType,
+        unsigned long long newQuotaInBytes,
+        WebStorageQuotaCallbacks*) { }
+
+    // WebSocket -----------------------------------------------------
+
+    // A WebSocket object is going to open new stream connection.
+    virtual void willOpenSocketStream(WebSocketStreamHandle*) { }
+
+    // MediaStream -----------------------------------------------------
+
+    // A new WebRTCPeerConnectionHandler is created.
+    virtual void willStartUsingPeerConnectionHandler(WebFrame*, WebRTCPeerConnectionHandler*) { }
+
+    // Messages ------------------------------------------------------
+
+    // Notifies the embedder that a postMessage was issued on this frame, and
+    // gives the embedder a chance to handle it instead of WebKit. Returns true
+    // if the embedder handled it.
+    virtual bool willCheckAndDispatchMessageEvent(
+        WebFrame* sourceFrame,
+        WebFrame* targetFrame,
+        WebSecurityOrigin target,
+        WebDOMMessageEvent event) { return false; }
+
+    // Asks the embedder if a specific user agent should be used for the given
+    // URL. Non-empty strings indicate an override should be used. Otherwise,
+    // Platform::current()->userAgent() will be called to provide one.
+    virtual WebString userAgentOverride(WebFrame*, const WebURL& url) { return WebString(); }
+
+    // Asks the embedder what value the network stack will send for the DNT
+    // header. An empty string indicates that no DNT header will be send.
+    virtual WebString doNotTrackValue(WebFrame*) { return WebString(); }
+
+    // WebGL ------------------------------------------------------
+
+    // Asks the embedder whether WebGL is allowed for the given WebFrame.
+    // This call is placed here instead of WebPermissionClient because this
+    // class is implemented in content/, and putting it here avoids adding
+    // more public content/ APIs.
+    virtual bool allowWebGL(WebFrame*, bool defaultValue) { return defaultValue; }
+
+    // Notifies the client that a WebGL context was lost on this page with the
+    // given reason (one of the GL_ARB_robustness status codes; see
+    // Extensions3D.h in WebCore/platform/graphics).
+    virtual void didLoseWebGLContext(WebFrame*, int) { }
+
+protected:
+    ~WebFrameClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebGeolocationClient.h b/public/webpage/WebGeolocationClient.h
new file mode 100644
index 0000000..1dfb0cd
--- /dev/null
+++ b/public/webpage/WebGeolocationClient.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebGeolocationClient_h
+#define WebGeolocationClient_h
+
+namespace WebKit {
+class WebGeolocationController;
+class WebGeolocationPermissionRequest;
+class WebGeolocationPosition;
+
+class WebGeolocationClient {
+public:
+    virtual ~WebGeolocationClient() {}
+
+    virtual void startUpdating() = 0;
+    virtual void stopUpdating() = 0;
+    virtual void setEnableHighAccuracy(bool) = 0;
+    virtual void geolocationDestroyed() = 0;
+    virtual bool lastPosition(WebGeolocationPosition&) = 0;
+
+    virtual void requestPermission(const WebGeolocationPermissionRequest&) = 0;
+    virtual void cancelPermissionRequest(const WebGeolocationPermissionRequest&) = 0;
+
+    // The controller is valid until geolocationDestroyed() is invoked.
+    // Ownership of the WebGeolocationController is transferred to the client.
+    virtual void setController(WebGeolocationController*) = 0;
+};
+
+} // namespace WebKit
+
+#endif // WebGeolocationClient_h
diff --git a/public/webpage/WebGeolocationClientMock.h b/public/webpage/WebGeolocationClientMock.h
new file mode 100644
index 0000000..06d8b1d
--- /dev/null
+++ b/public/webpage/WebGeolocationClientMock.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2010, 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 WebGeolocationClientMock_h
+#define WebGeolocationClientMock_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivateOwnPtr.h"
+#include "WebGeolocationClient.h"
+
+namespace WebCore {
+class GeolocationClientMock;
+}
+
+namespace WebKit {
+class WebGeolocationPosition;
+class WebString;
+
+class WebGeolocationClientMock : public WebGeolocationClient {
+public:
+    WEBKIT_EXPORT static WebGeolocationClientMock* create();
+    ~WebGeolocationClientMock() { reset(); }
+
+    WEBKIT_EXPORT void setPosition(double latitude, double longitude, double accuracy);
+    WEBKIT_EXPORT void setPositionUnavailableError(const WebString& message);
+    WEBKIT_EXPORT void setPermission(bool);
+    WEBKIT_EXPORT int numberOfPendingPermissionRequests() const;
+    WEBKIT_EXPORT void resetMock();
+
+    virtual void startUpdating();
+    virtual void stopUpdating();
+    virtual void setEnableHighAccuracy(bool);
+
+    virtual void geolocationDestroyed();
+    virtual void setController(WebGeolocationController*);
+
+    virtual void requestPermission(const WebGeolocationPermissionRequest&);
+    virtual void cancelPermissionRequest(const WebGeolocationPermissionRequest&);
+
+    virtual bool lastPosition(WebGeolocationPosition& webPosition);
+
+private:
+    WebGeolocationClientMock();
+    WEBKIT_EXPORT void reset();
+
+    WebPrivateOwnPtr<WebCore::GeolocationClientMock> m_clientMock;
+};
+}
+
+#endif // WebGeolocationClientMock_h
diff --git a/public/webpage/WebGeolocationController.h b/public/webpage/WebGeolocationController.h
new file mode 100644
index 0000000..ea56c35
--- /dev/null
+++ b/public/webpage/WebGeolocationController.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebGeolocationController_h
+#define WebGeolocationController_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebNonCopyable.h"
+
+namespace WebCore { class GeolocationController; }
+
+namespace WebKit {
+
+class WebGeolocationPosition;
+class WebGeolocationError;
+
+// Note that the WebGeolocationController is invalid after the
+// WebGeolocationClient::geolocationDestroyed() has been received.
+class WebGeolocationController : public WebNonCopyable {
+public:
+    WEBKIT_EXPORT void positionChanged(const WebGeolocationPosition&);
+    WEBKIT_EXPORT void errorOccurred(const WebGeolocationError&);
+
+#if WEBKIT_IMPLEMENTATION
+    WebGeolocationController(WebCore::GeolocationController* c)
+        : m_private(c)
+    {
+    }
+
+    WebCore::GeolocationController* controller() const { return m_private; }
+#endif
+
+private:
+    // No implementation for the default constructor. Declared private to ensure that no instances
+    // can be created by the consumers of Chromium WebKit.
+    WebGeolocationController();
+
+    WebCore::GeolocationController* m_private;
+};
+
+} // namespace WebKit
+
+#endif // WebGeolocationController_h
diff --git a/public/webpage/WebGeolocationError.h b/public/webpage/WebGeolocationError.h
new file mode 100644
index 0000000..046b5e6
--- /dev/null
+++ b/public/webpage/WebGeolocationError.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebGeolocationError_h
+#define WebGeolocationError_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+#if WEBKIT_IMPLEMENTATION
+#include <wtf/PassRefPtr.h>
+#endif
+
+namespace WebCore { class GeolocationError; }
+
+namespace WebKit {
+
+class WebString;
+
+class WebGeolocationError {
+public:
+    enum Error {
+        ErrorPermissionDenied,
+        ErrorPositionUnavailable
+    };
+
+    WebGeolocationError(Error code, const WebString& message) { assign(code, message); }
+    WebGeolocationError(const WebGeolocationError& other) { assign(other); }
+    ~WebGeolocationError() { reset(); }
+
+    WEBKIT_EXPORT void assign(Error code, const WebString& message);
+    WEBKIT_EXPORT void assign(const WebGeolocationError&);
+    WEBKIT_EXPORT void reset();
+
+#if WEBKIT_IMPLEMENTATION
+    WebGeolocationError(WTF::PassRefPtr<WebCore::GeolocationError>);
+    WebGeolocationError& operator=(WTF::PassRefPtr<WebCore::GeolocationError>);
+    operator WTF::PassRefPtr<WebCore::GeolocationError>() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::GeolocationError> m_private;
+};
+
+} // namespace WebKit
+
+#endif // WebGeolocationError_h
diff --git a/public/webpage/WebGeolocationPermissionRequest.h b/public/webpage/WebGeolocationPermissionRequest.h
new file mode 100644
index 0000000..e689a86
--- /dev/null
+++ b/public/webpage/WebGeolocationPermissionRequest.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebGeolocationPermissionRequest_h
+#define WebGeolocationPermissionRequest_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+namespace WebCore {
+class Geolocation;
+}
+
+namespace WebKit {
+class WebSecurityOrigin;
+
+// WebGeolocationPermissionRequest encapsulates a WebCore Geolocation object and represents
+// a request from WebCore for permission to be determined for that Geolocation object.
+// The underlying Geolocation object is guaranteed to be valid until the invocation of
+// either  WebGeolocationPermissionRequest::setIsAllowed (request complete) or
+// WebGeolocationClient::cancelPermissionRequest (request cancelled).
+class WebGeolocationPermissionRequest {
+public:
+    WEBKIT_EXPORT WebSecurityOrigin securityOrigin() const;
+    WEBKIT_EXPORT void setIsAllowed(bool);
+
+#if WEBKIT_IMPLEMENTATION
+    WebGeolocationPermissionRequest(WebCore::Geolocation* geolocation)
+        : m_private(geolocation)
+    {
+    }
+
+    WebCore::Geolocation* geolocation() const { return m_private; }
+#endif
+
+private:
+    WebCore::Geolocation* m_private;
+};
+}
+
+#endif // WebGeolocationPermissionRequest_h
diff --git a/public/webpage/WebGeolocationPermissionRequestManager.h b/public/webpage/WebGeolocationPermissionRequestManager.h
new file mode 100644
index 0000000..4291e24
--- /dev/null
+++ b/public/webpage/WebGeolocationPermissionRequestManager.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebGeolocationPermissionRequestManager_h
+#define WebGeolocationPermissionRequestManager_h
+
+#include "../platform/WebNonCopyable.h"
+#include "../platform/WebPrivateOwnPtr.h"
+
+namespace WebKit {
+
+class WebGeolocationPermissionRequest;
+class WebGeolocationPermissionRequestManagerPrivate;
+
+// This class is used to map between integer identifiers and WebGeolocationPermissionRequest
+// instances. The intended usage is that on WebGeolocationClient::requestPermission(),
+// the implementer can call add() to associate an id with the WebGeolocationPermissionRequest object.
+// Once the permission request has been decided, the second remove() method can be used to
+// find the request. On WebGeolocationClient::cancelPermissionRequest, the first remove() method will
+// remove the association with the id.
+class WebGeolocationPermissionRequestManager : public WebNonCopyable {
+public:
+    WebGeolocationPermissionRequestManager() { init(); }
+    ~WebGeolocationPermissionRequestManager() { reset(); }
+
+    WEBKIT_EXPORT int add(const WebKit::WebGeolocationPermissionRequest&);
+    WEBKIT_EXPORT bool remove(const WebKit::WebGeolocationPermissionRequest&, int&);
+    WEBKIT_EXPORT bool remove(int, WebKit::WebGeolocationPermissionRequest&);
+
+private:
+    WEBKIT_EXPORT void init();
+    WEBKIT_EXPORT void reset();
+
+    WebPrivateOwnPtr<WebGeolocationPermissionRequestManagerPrivate> m_private;
+    int m_lastId;
+};
+
+}
+
+#endif // WebGeolocationPermissionRequestManager_h
+
diff --git a/public/webpage/WebGeolocationPosition.h b/public/webpage/WebGeolocationPosition.h
new file mode 100644
index 0000000..64e8f97
--- /dev/null
+++ b/public/webpage/WebGeolocationPosition.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebGeolocationPosition_h
+#define WebGeolocationPosition_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+#if WEBKIT_IMPLEMENTATION
+#include <wtf/PassRefPtr.h>
+#endif
+
+namespace WebCore { class GeolocationPosition; }
+
+namespace WebKit {
+
+class WebGeolocationPosition {
+public:
+    WebGeolocationPosition() {}
+    WebGeolocationPosition(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
+    {
+        assign(timestamp, latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
+    }
+    WebGeolocationPosition(const WebGeolocationPosition& other) { assign(other); }
+    ~WebGeolocationPosition() { reset(); }
+
+    WEBKIT_EXPORT void assign(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
+    WEBKIT_EXPORT void assign(const WebGeolocationPosition&);
+    WEBKIT_EXPORT void reset();
+
+#if WEBKIT_IMPLEMENTATION
+    WebGeolocationPosition(WTF::PassRefPtr<WebCore::GeolocationPosition>);
+    WebGeolocationPosition& operator=(WTF::PassRefPtr<WebCore::GeolocationPosition>);
+    operator WTF::PassRefPtr<WebCore::GeolocationPosition>() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::GeolocationPosition> m_private;
+};
+
+} // namespace WebKit
+
+#endif // WebGeolocationPosition_h
diff --git a/public/webpage/WebGlyphCache.h b/public/webpage/WebGlyphCache.h
new file mode 100644
index 0000000..a417077
--- /dev/null
+++ b/public/webpage/WebGlyphCache.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2010 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 WebGlyphCache_h
+#define WebGlyphCache_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+// An interface to query WebKit's glyph cache (which maps unicode characters to
+// glyphs in particular fonts).
+class WebGlyphCache {
+public:
+    // Returns the number of pages in the glyph cache.
+    WEBKIT_EXPORT static size_t pageCount();
+
+private:
+    WebGlyphCache();  // Not intended to be instanced.
+};
+
+}  // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebHelperPlugin.h b/public/webpage/WebHelperPlugin.h
new file mode 100644
index 0000000..b10ffa5
--- /dev/null
+++ b/public/webpage/WebHelperPlugin.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2012 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 WebHelperPlugin_h
+#define WebHelperPlugin_h
+
+#include "../platform/WebCommon.h"
+#include "WebWidget.h"
+
+namespace WebKit {
+
+class WebFrameClient;
+class WebPlugin;
+class WebWidgetClient;
+
+class WebHelperPlugin : public WebWidget {
+public:
+    WEBKIT_EXPORT static WebHelperPlugin* create(WebWidgetClient*);
+
+    virtual void initializeFrame(WebFrameClient*) = 0;
+
+    // The returned pointer may be 0 even if initialization was successful.
+    // For example, if the plugin cannot be found or the plugin is disabled.
+    // If not 0, the returned pointer is valid for the lifetime of this object.
+    virtual WebPlugin* getPlugin() = 0;
+
+protected:
+    ~WebHelperPlugin() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebHistoryItem.h b/public/webpage/WebHistoryItem.h
new file mode 100644
index 0000000..e3d198a
--- /dev/null
+++ b/public/webpage/WebHistoryItem.h
@@ -0,0 +1,142 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+namespace WebCore { class HistoryItem; }
+
+namespace WebKit {
+class WebHTTPBody;
+class WebString;
+class WebSerializedScriptValue;
+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() { }
+    WebHistoryItem(const WebHistoryItem& h) { assign(h); }
+    WebHistoryItem& operator=(const WebHistoryItem& h)
+    {
+        assign(h);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void initialize();
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebHistoryItem&);
+
+    bool isNull() const { return m_private.isNull(); }
+
+    WEBKIT_EXPORT WebString urlString() const;
+    WEBKIT_EXPORT void setURLString(const WebString&);
+
+    WEBKIT_EXPORT WebString originalURLString() const;
+    WEBKIT_EXPORT void setOriginalURLString(const WebString&);
+
+    WEBKIT_EXPORT WebString referrer() const;
+    WEBKIT_EXPORT void setReferrer(const WebString&);
+
+    WEBKIT_EXPORT WebString target() const;
+    WEBKIT_EXPORT void setTarget(const WebString&);
+
+    WEBKIT_EXPORT WebString parent() const;
+    WEBKIT_EXPORT void setParent(const WebString&);
+
+    WEBKIT_EXPORT WebString title() const;
+    WEBKIT_EXPORT void setTitle(const WebString&);
+
+    WEBKIT_EXPORT WebString alternateTitle() const;
+    WEBKIT_EXPORT void setAlternateTitle(const WebString&);
+
+    WEBKIT_EXPORT double lastVisitedTime() const;
+    WEBKIT_EXPORT void setLastVisitedTime(double);
+
+    WEBKIT_EXPORT WebPoint scrollOffset() const;
+    WEBKIT_EXPORT void setScrollOffset(const WebPoint&);
+
+    WEBKIT_EXPORT float pageScaleFactor() const;
+    WEBKIT_EXPORT void setPageScaleFactor(float);
+
+    WEBKIT_EXPORT bool isTargetItem() const;
+    WEBKIT_EXPORT void setIsTargetItem(bool);
+
+    WEBKIT_EXPORT int visitCount() const;
+    WEBKIT_EXPORT void setVisitCount(int);
+
+    WEBKIT_EXPORT WebVector<WebString> documentState() const;
+    WEBKIT_EXPORT void setDocumentState(const WebVector<WebString>&);
+
+    WEBKIT_EXPORT long long itemSequenceNumber() const;
+    WEBKIT_EXPORT void setItemSequenceNumber(long long);
+
+    WEBKIT_EXPORT long long documentSequenceNumber() const;
+    WEBKIT_EXPORT void setDocumentSequenceNumber(long long);
+
+    WEBKIT_EXPORT WebSerializedScriptValue stateObject() const;
+    WEBKIT_EXPORT void setStateObject(const WebSerializedScriptValue&);
+
+    WEBKIT_EXPORT WebString httpContentType() const;
+    WEBKIT_EXPORT void setHTTPContentType(const WebString&);
+
+    WEBKIT_EXPORT WebHTTPBody httpBody() const;
+    WEBKIT_EXPORT void setHTTPBody(const WebHTTPBody&);
+
+    WEBKIT_EXPORT WebVector<WebHistoryItem> children() const;
+    WEBKIT_EXPORT void setChildren(const WebVector<WebHistoryItem>&);
+    WEBKIT_EXPORT void appendToChildren(const WebHistoryItem&);
+
+    WEBKIT_EXPORT WebVector<WebString> getReferencedFilePaths() const;
+
+#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 ensureMutable();
+    WebPrivatePtr<WebCore::HistoryItem> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebHitTestResult.h b/public/webpage/WebHitTestResult.h
new file mode 100644
index 0000000..b129aad
--- /dev/null
+++ b/public/webpage/WebHitTestResult.h
@@ -0,0 +1,86 @@
+/*
+* Copyright (C) 2012 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 AND ITS 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 APPLE OR ITS 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 WebHitTestResult_h
+#define WebHitTestResult_h
+
+#include "../platform/WebPrivateOwnPtr.h"
+
+namespace WebCore {
+class HitTestResult;
+}
+
+namespace WebKit {
+
+class WebElement;
+class WebNode;
+class WebURL;
+struct WebPoint;
+
+// Properties of a hit test result, i.e. properties of the nodes at a given point
+// (the hit point) on the page. Both urls may be populated at the same time, for
+// example in the instance of an <img> inside an <a>.
+class WebHitTestResult {
+public:
+    WebHitTestResult() { }
+    WebHitTestResult(const WebHitTestResult& info) { assign(info); }
+    ~WebHitTestResult() { reset(); }
+
+    WEBKIT_EXPORT void assign(const WebHitTestResult&);
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT bool isNull() const;
+
+    // The node that was hit (only one for point-based tests).
+    WEBKIT_EXPORT WebNode node() const;
+
+    // Coordinates of the point that was hit. Relative to the node.
+    WEBKIT_EXPORT WebPoint localPoint() const;
+
+    // If a link (eg. anchor or area tag) is hit, return the element.
+    // Return null otheriwse.
+    WEBKIT_EXPORT WebElement urlElement() const;
+
+    // If an image is hit, return the image source. Return empty otherwise.
+    WEBKIT_EXPORT WebURL absoluteImageURL() const;
+
+    // If an link is hit, return the link url source. Return empty otherwise.
+    WEBKIT_EXPORT WebURL absoluteLinkURL() const;
+
+    // Return whether an editable input element was hit.
+    WEBKIT_EXPORT bool isContentEditable() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebHitTestResult(const WebCore::HitTestResult&);
+    WebHitTestResult& operator=(const WebCore::HitTestResult&);
+    operator WebCore::HitTestResult() const;
+#endif
+
+protected:
+    WebPrivateOwnPtr<WebCore::HitTestResult> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebIconLoadingCompletion.h b/public/webpage/WebIconLoadingCompletion.h
new file mode 100644
index 0000000..b6229aa
--- /dev/null
+++ b/public/webpage/WebIconLoadingCompletion.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2011 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 WebIconLoadingCompletion_h
+#define WebIconLoadingCompletion_h
+
+namespace WebKit {
+
+class WebData;
+class WebString;
+
+// Gets called back when WebViewClient finished loading an icon.
+class WebIconLoadingCompletion {
+public:
+    // Called with the loaded icon data, which is an image data stream
+    // WebCore can decode, such as PNG. A null WebData means a failure of
+    // loading. The callback instance is destroyed when this method is called.
+    virtual void didLoadIcon(const WebData&) = 0;
+
+protected:
+    virtual ~WebIconLoadingCompletion() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebIconURL.h b/public/webpage/WebIconURL.h
new file mode 100644
index 0000000..e718372
--- /dev/null
+++ b/public/webpage/WebIconURL.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2011 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 WebIconURL_h
+#define WebIconURL_h
+
+#if WEBKIT_IMPLEMENTATION
+#include "core/dom/IconURL.h"
+#endif
+#include "../platform/WebURL.h"
+
+namespace WebKit {
+
+class WebIconURL {
+public:
+    enum Type {
+        TypeInvalid = 0,
+        TypeFavicon = 1 << 0,
+        TypeTouch = 1 << 1,
+        TypeTouchPrecomposed = 1 << 2
+    };
+
+    WebIconURL()
+        : m_iconType(TypeInvalid)
+    {
+    }
+
+    WebIconURL(const WebURL& url, Type type)
+        : m_iconType(type)
+        , m_iconURL(url)
+    {
+    }
+
+    Type iconType() const
+    {
+        return m_iconType;
+    }
+
+    const WebURL& iconURL() const
+    {
+        return m_iconURL;
+    }
+
+#if WEBKIT_IMPLEMENTATION
+    WebIconURL(const WebCore::IconURL& iconURL)
+        : m_iconType(static_cast<Type>(iconURL.m_iconType))
+        , m_iconURL(iconURL.m_iconURL)
+    {
+    }
+#endif
+
+private:
+    Type m_iconType;
+    WebURL m_iconURL;
+};
+
+}
+
+#endif // WebIconURL_h
diff --git a/public/webpage/WebImageCache.h b/public/webpage/WebImageCache.h
new file mode 100644
index 0000000..b766488
--- /dev/null
+++ b/public/webpage/WebImageCache.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2013 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 WebImageCache_h
+#define WebImageCache_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+// An interface to query and configure WebKit's image cache.
+//
+// Methods of this interface can be called on any thread.
+//
+// Methods of this interface can be only be used after WebKit::initialize()
+// and before WebKit::shutdown() is called.
+
+class WebImageCache {
+public:
+    // Sets the capacities of the image cache, evicting objects as necessary.
+    WEBKIT_EXPORT static void setCacheLimitInBytes(size_t);
+
+    // Clears the cache (as much as possible; some resources may not be
+    // cleared if they are actively referenced).
+    WEBKIT_EXPORT static void clear();
+
+    // Returns the number of bytes used by the cache.
+    WEBKIT_EXPORT static size_t memoryUsageInBytes();
+
+    // Returns the number of cached entries.
+    WEBKIT_EXPORT static unsigned cacheEntries();
+
+private:
+    WebImageCache();  // Not intended to be instanced.
+};
+
+}  // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebImageDecoder.h b/public/webpage/WebImageDecoder.h
new file mode 100644
index 0000000..da8f46b
--- /dev/null
+++ b/public/webpage/WebImageDecoder.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2010 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 WebImageDecoder_h
+#define WebImageDecoder_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebImage.h"
+#include "../platform/WebNonCopyable.h"
+
+namespace WebCore { class ImageDecoder; }
+
+namespace WebKit {
+
+typedef WebCore::ImageDecoder WebImageDecoderPrivate;
+class WebData;
+
+class WebImageDecoder : public WebNonCopyable {
+public:
+    enum Type {
+        TypeBMP,
+        TypeICO
+    };
+
+    ~WebImageDecoder() { reset(); }
+
+    explicit WebImageDecoder(Type type) { init(type); }
+
+    // Sets data contents for underlying decoder. All the API methods
+    // require that setData() is called prior to their use.
+    WEBKIT_EXPORT void setData(const WebData& data, bool allDataReceived);
+
+    // Deletes owned decoder.
+    WEBKIT_EXPORT void reset();
+
+    // Returns true if image decoding failed.
+    WEBKIT_EXPORT bool isFailed() const;
+    
+    // Returns true if size information is available for the decoder.
+    WEBKIT_EXPORT bool isSizeAvailable() const;
+
+    // Returns the size of the image.
+    WEBKIT_EXPORT WebSize size() const;
+
+    // Gives frame count for the image. For multiple frames, decoder scans the image data for the count.
+    WEBKIT_EXPORT size_t frameCount() const;
+
+    // Returns if the frame at given index is completely decoded.
+    WEBKIT_EXPORT bool isFrameCompleteAtIndex(int index) const;
+
+    // Creates and returns WebImage from buffer at the index.
+    WEBKIT_EXPORT WebImage getFrameAtIndex(int index) const;
+
+private:
+    // Creates type-specific decoder.
+    WEBKIT_EXPORT void init(Type type);
+
+    WebImageDecoderPrivate* m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebInbandTextTrack.h b/public/webpage/WebInbandTextTrack.h
new file mode 100644
index 0000000..cebdf20
--- /dev/null
+++ b/public/webpage/WebInbandTextTrack.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2013 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 WebInbandTextTrack_h
+#define WebInbandTextTrack_h
+
+namespace WebKit {
+
+class WebString;
+class WebInbandTextTrackClient;
+
+class WebInbandTextTrack {
+public:
+    enum Kind {
+        KindSubtitles,
+        KindCaptions,
+        KindDescriptions,
+        KindChapters,
+        KindMetadata,
+        KindNone
+    };
+
+    enum Mode {
+        ModeDisabled,
+        ModeHidden,
+        ModeShowing
+    };
+
+    virtual ~WebInbandTextTrack() {}
+
+    virtual void setClient(WebInbandTextTrackClient*) = 0;
+    virtual WebInbandTextTrackClient* client() = 0;
+
+    virtual void setMode(Mode) = 0;
+    virtual Mode mode() const = 0;
+
+    virtual Kind kind() const = 0;
+    virtual bool isClosedCaptions() const = 0;
+
+    virtual WebString label() const = 0;
+    virtual WebString language() const = 0;
+    virtual bool isDefault() const = 0;
+
+    virtual int textTrackIndex() const = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebInbandTextTrackClient.h b/public/webpage/WebInbandTextTrackClient.h
new file mode 100644
index 0000000..dea4043
--- /dev/null
+++ b/public/webpage/WebInbandTextTrackClient.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 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 WebInbandTextTrackClient_h
+#define WebInbandTextTrackClient_h
+
+namespace WebKit {
+
+class WebString;
+
+class WebInbandTextTrackClient {
+public:
+    virtual ~WebInbandTextTrackClient() {}
+
+    virtual void addWebVTTCue(double start,
+                              double end,
+                              const WebString& id,
+                              const WebString& content,
+                              const WebString& settings) = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebInputElement.h b/public/webpage/WebInputElement.h
new file mode 100644
index 0000000..e509b84
--- /dev/null
+++ b/public/webpage/WebInputElement.h
@@ -0,0 +1,135 @@
+/*
+ * 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 "WebFormControlElement.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class HTMLInputElement; }
+#endif
+
+namespace WebKit {
+
+    class WebNodeCollection;
+    class WebTextFieldDecoratorClient;
+
+    // Provides readonly access to some properties of a DOM input element node.
+    class WebInputElement : public WebFormControlElement {
+    public:
+        enum SpeechInputState {
+            Idle,
+            Recording,
+            Recognizing,
+        };
+
+        WebInputElement() : WebFormControlElement() { }
+        WebInputElement(const WebInputElement& element) : WebFormControlElement(element) { }
+
+        WebInputElement& operator=(const WebInputElement& element)
+        {
+            WebFormControlElement::assign(element);
+            return *this;
+        }
+        void assign(const WebInputElement& element) { WebFormControlElement::assign(element); }
+
+        // This returns true for all of textfield-looking types such as text,
+        // password, search, email, url, and number.
+        WEBKIT_EXPORT bool isTextField() const;
+        // This returns true only for type=text.
+        WEBKIT_EXPORT bool isText() const;
+        WEBKIT_EXPORT bool isPasswordField() const;
+        WEBKIT_EXPORT bool isImageButton() const;
+        WEBKIT_EXPORT bool isRadioButton() const;
+        WEBKIT_EXPORT bool isCheckbox() const;
+        WEBKIT_EXPORT bool autoComplete() const;
+        WEBKIT_EXPORT int maxLength() const;
+        WEBKIT_EXPORT bool isActivatedSubmit() const;
+        WEBKIT_EXPORT void setActivatedSubmit(bool);
+        WEBKIT_EXPORT int size() const;
+        WEBKIT_EXPORT void setValue(const WebString&, bool sendChangeEvent = false);
+        WEBKIT_EXPORT void setChecked(bool, bool sendChangeEvent = false);
+        WEBKIT_EXPORT WebString value() const;
+        // This returns the non-sanitized, exact value inside the text field.
+        WEBKIT_EXPORT WebString editingValue() const;
+        // Sets the value inside the text field without being sanitized.
+        // Can't be used if a renderer doesn't exist or on a non text field type.
+        // Caret will be moved to the end.
+        WEBKIT_EXPORT void setEditingValue(const WebString&);
+        WEBKIT_EXPORT void setSuggestedValue(const WebString&);
+        WEBKIT_EXPORT WebString suggestedValue() const;
+        WEBKIT_EXPORT void setPlaceholder(const WebString&);
+        WEBKIT_EXPORT WebString placeholder() const;
+        WEBKIT_EXPORT bool isAutofilled() const;
+        WEBKIT_EXPORT void setAutofilled(bool);
+        WEBKIT_EXPORT void setSelectionRange(int, int);
+        WEBKIT_EXPORT int selectionStart() const;
+        WEBKIT_EXPORT int selectionEnd() const;
+        WEBKIT_EXPORT bool isValidValue(const WebString&) const;
+        WEBKIT_EXPORT bool isChecked() const;
+        WEBKIT_EXPORT bool isMultiple() const;
+
+        WEBKIT_EXPORT WebNodeCollection dataListOptions() const;
+
+        // Return the localized value for this input type.
+        WEBKIT_EXPORT WebString localizeValue(const WebString&) const;
+
+        WEBKIT_EXPORT bool isSpeechInputEnabled() const;
+        WEBKIT_EXPORT SpeechInputState getSpeechInputState() const;
+        WEBKIT_EXPORT void startSpeechInput();
+        WEBKIT_EXPORT void stopSpeechInput();
+
+        // Exposes the default value of the maxLength attribute.
+        WEBKIT_EXPORT static int defaultMaxLength();
+
+        // Returns the direction of the text in this element.
+        WEBKIT_EXPORT WebString directionForFormData() const;
+
+        // Return the decoration added by the specified decorator if one exists.
+        WEBKIT_EXPORT WebElement decorationElementFor(WebTextFieldDecoratorClient*);
+
+#if WEBKIT_IMPLEMENTATION
+        WebInputElement(const WTF::PassRefPtr<WebCore::HTMLInputElement>&);
+        WebInputElement& operator=(const WTF::PassRefPtr<WebCore::HTMLInputElement>&);
+        operator WTF::PassRefPtr<WebCore::HTMLInputElement>() const;
+#endif
+    };
+
+    WEBKIT_EXPORT WebInputElement* toWebInputElement(WebElement*);
+
+    inline const WebInputElement* toWebInputElement(const WebElement* element)
+    {
+        return toWebInputElement(const_cast<WebElement*>(element));
+    }
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebInputEvent.h b/public/webpage/WebInputEvent.h
new file mode 100644
index 0000000..a0e4582
--- /dev/null
+++ b/public/webpage/WebInputEvent.h
@@ -0,0 +1,494 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebRect.h"
+#include "WebTouchPoint.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!
+//
+// Furthermore, the class members need to be packed so they are aligned
+// properly and don't have paddings/gaps, otherwise memory check tools
+// like Valgrind will complain about uninitialized memory usage when
+// transferring these classes over the wire.
+
+#pragma pack(push, 4)
+
+// WebInputEvent --------------------------------------------------------------
+
+class WebInputEvent {
+public:
+    WebInputEvent(unsigned sizeParam = sizeof(WebInputEvent))
+    {
+        memset(this, 0, sizeParam);
+        timeStampSeconds = 0.0;
+        size = sizeParam;
+        type = Undefined;
+        modifiers = 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,
+        ContextMenu,
+
+        // WebMouseWheelEvent
+        MouseWheel,
+
+        // WebKeyboardEvent
+        RawKeyDown,
+        KeyDown,
+        KeyUp,
+        Char,
+
+        // WebGestureEvent
+        GestureScrollBegin,
+        GestureScrollEnd,
+        GestureScrollUpdate,
+        GestureScrollUpdateWithoutPropagation,
+        GestureFlingStart,
+        GestureFlingCancel,
+        GestureTap,
+        GestureTapUnconfirmed,
+        GestureTapDown,
+        GestureTapCancel,
+        GestureDoubleTap,
+        GestureTwoFingerTap,
+        GestureLongPress,
+        GestureLongTap,
+        GesturePinchBegin,
+        GesturePinchEnd,
+        GesturePinchUpdate,
+
+        // WebTouchEvent
+        TouchStart,
+        TouchMove,
+        TouchEnd,
+        TouchCancel,
+    };
+
+    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,
+
+        // Toggle modifiers for all events. Danger: these are not reflected
+        // into WebCore, so round-tripping from WebInputEvent to a WebCore
+        // event and back will not preserve these flags.
+        CapsLockOn       = 1 << 9,
+        NumLockOn        = 1 << 10,
+
+        // Left/right modifiers for keyboard events.
+        IsLeft           = 1 << 11,
+        IsRight          = 1 << 12,
+
+        // Last input event to be sent for the current vsync interval. If this
+        // flag is set, the sender guarantees that no more input events will be
+        // delivered until the next vsync and the receiver can schedule
+        // rendering accordingly. If it isn't set, the receiver should not make
+        // any assumptions about the delivery times of future input events
+        // w.r.t. vsync.
+        IsLastInputEventForCurrentVSync = 1 << 13,
+    };
+
+    static const int InputModifiers = ShiftKey | ControlKey | AltKey | MetaKey;
+
+    double timeStampSeconds; // Seconds since epoch.
+    unsigned size; // The size of this structure, for serialization.
+    Type type;
+    int modifiers;
+
+    // Returns true if the WebInputEvent |type| is a mouse event.
+    static bool isMouseEventType(int type)
+    {
+        return type == MouseDown
+            || type == MouseUp
+            || type == MouseMove
+            || type == MouseEnter
+            || type == MouseLeave
+            || type == ContextMenu;
+    }
+
+    // Returns true if the WebInputEvent |type| is a keyboard event.
+    static bool isKeyboardEventType(int type)
+    {
+        return type == RawKeyDown
+            || type == KeyDown
+            || type == KeyUp
+            || type == Char;
+    }
+
+    // Returns true if the WebInputEvent |type| is a touch event.
+    static bool isTouchEventType(int type)
+    {
+        return type == TouchStart
+            || type == TouchMove
+            || type == TouchEnd
+            || type == TouchCancel;
+    }
+
+    // Returns true if the WebInputEvent |type| should be handled as user gesture.
+    static bool isUserGestureEventType(int type)
+    {
+        return isKeyboardEventType(type)
+            || type == MouseDown
+            || type == MouseUp
+            || type == TouchStart
+            || type == TouchEnd;
+    }
+
+    // Returns true if the WebInputEvent is a gesture event.
+    static bool isGestureEventType(int type)
+    {
+        return type == GestureScrollBegin
+            || type == GestureScrollEnd
+            || type == GestureScrollUpdate
+            || type == GestureScrollUpdateWithoutPropagation
+            || type == GestureFlingStart
+            || type == GestureFlingCancel
+            || type == GesturePinchBegin
+            || type == GesturePinchEnd
+            || type == GesturePinchUpdate
+            || type == GestureTap
+            || type == GestureTapUnconfirmed
+            || type == GestureTapDown
+            || type == GestureTapCancel
+            || type == GestureDoubleTap
+            || type == GestureTwoFingerTap
+            || type == GestureLongPress
+            || type == GestureLongTap;
+    }
+};
+
+// 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* . Note that this should
+    // ALWAYS store the non-locational version of a keycode as this is
+    // what is returned by the Windows API. For example, it should
+    // store VK_SHIFT instead of VK_RSHIFT. The location information
+    // should be stored in |modifiers|.
+    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;
+
+    // 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.
+    // See comment at the top of the file for why an int is used here.
+    bool isSystemKey;
+
+    // |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];
+
+    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_EXPORT void setKeyIdentifierFromWindowsKeyCode();
+
+    static int windowsKeyCodeWithoutLocation(int keycode);
+    static int locationModifiersFromWindowsKeyCode(int keycode);
+};
+
+// 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 movementX;
+    int movementY;
+    int clickCount;
+
+    WebMouseEvent(unsigned sizeParam = sizeof(WebMouseEvent))
+        : WebInputEvent(sizeParam)
+        , button(ButtonNone)
+        , x(0)
+        , y(0)
+        , windowX(0)
+        , windowY(0)
+        , globalX(0)
+        , globalY(0)
+        , movementX(0)
+        , movementY(0)
+        , clickCount(0)
+    {
+    }
+};
+
+// WebMouseWheelEvent ---------------------------------------------------------
+
+class WebMouseWheelEvent : public WebMouseEvent {
+public:
+    enum Phase {
+        PhaseNone        = 0,
+        PhaseBegan       = 1 << 0,
+        PhaseStationary  = 1 << 1,
+        PhaseChanged     = 1 << 2,
+        PhaseEnded       = 1 << 3,
+        PhaseCancelled   = 1 << 4,
+        PhaseMayBegin    = 1 << 5,
+    };
+
+    float deltaX;
+    float deltaY;
+    float wheelTicksX;
+    float wheelTicksY;
+
+    float accelerationRatioX;
+    float accelerationRatioY;
+
+    // See comment at the top of the file for why an int is used here.
+    int scrollByPage;
+
+    // See comment at the top of the file for why an int is used here.
+    int hasPreciseScrollingDeltas;
+    Phase phase;
+    Phase momentumPhase;
+
+    WebMouseWheelEvent(unsigned sizeParam = sizeof(WebMouseWheelEvent))
+        : WebMouseEvent(sizeParam)
+        , deltaX(0.0f)
+        , deltaY(0.0f)
+        , wheelTicksX(0.0f)
+        , wheelTicksY(0.0f)
+        , accelerationRatioX(1.0f)
+        , accelerationRatioY(1.0f)
+        , scrollByPage(false)
+        , hasPreciseScrollingDeltas(false)
+        , phase(PhaseNone)
+        , momentumPhase(PhaseNone)
+    {
+    }
+};
+
+// WebGestureEvent --------------------------------------------------------------
+
+class WebGestureEvent : public WebInputEvent {
+public:
+    enum SourceDevice {
+        Touchpad,
+        Touchscreen,
+    };
+
+    int x;
+    int y;
+    int globalX;
+    int globalY;
+    SourceDevice sourceDevice;
+
+    union {
+        struct {
+            int tapCount;
+            float width;
+            float height;
+        } tap;
+
+        struct {
+            float width;
+            float height;
+        } tapDown;
+
+        struct {
+            float width;
+            float height;
+        } longPress;
+
+        struct {
+            float firstFingerWidth;
+            float firstFingerHeight;
+        } twoFingerTap;
+
+        struct {
+            float deltaX;
+            float deltaY;
+            float velocityX;
+            float velocityY;
+        } scrollUpdate;
+
+        struct {
+            float velocityX;
+            float velocityY;
+        } flingStart;
+
+        struct {
+            float scale;
+        } pinchUpdate;
+    } data;
+
+    WebGestureEvent(unsigned sizeParam = sizeof(WebGestureEvent))
+        : WebInputEvent(sizeParam)
+        , x(0)
+        , y(0)
+        , globalX(0)
+        , globalY(0)
+    {
+        memset(&data, 0, sizeof(data));
+    }
+};
+
+// WebTouchEvent --------------------------------------------------------------
+
+class WebTouchEvent : public WebInputEvent {
+public:
+    // Maximum number of simultaneous touches supported on
+    // Ash/Aura.
+    enum { touchesLengthCap = 12 };
+
+    unsigned touchesLength;
+    // List of all touches which are currently down.
+    WebTouchPoint touches[touchesLengthCap];
+
+    unsigned changedTouchesLength;
+    // List of all touches whose state has changed since the last WebTouchEvent
+    WebTouchPoint changedTouches[touchesLengthCap];
+
+    unsigned targetTouchesLength;
+    // List of all touches which are currently down and are targeting the event recipient.
+    WebTouchPoint targetTouches[touchesLengthCap];
+
+    WebTouchEvent(unsigned sizeParam = sizeof(WebTouchEvent))
+        : WebInputEvent(sizeParam)
+        , touchesLength(0)
+        , changedTouchesLength(0)
+        , targetTouchesLength(0)
+    {
+    }
+};
+
+#pragma pack(pop)
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebKit.h b/public/webpage/WebKit.h
new file mode 100644
index 0000000..0d83122
--- /dev/null
+++ b/public/webpage/WebKit.h
@@ -0,0 +1,69 @@
+/*
+ * 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 "../platform/Platform.h"
+
+namespace WebKit {
+
+// Must be called on the thread that will be the main WebKit thread before
+// using any other WebKit APIs. The provided Platform; must be
+// non-null and must remain valid until the current thread calls shutdown.
+WEBKIT_EXPORT void initialize(Platform*);
+
+// Must be called on the thread that will be the main WebKit thread before
+// using any other WebKit APIs. The provided Platform must be
+// non-null and must remain valid until the current thread calls shutdown.
+//
+// This is a special variant of initialize that does not intitialize V8.
+WEBKIT_EXPORT void initializeWithoutV8(Platform*);
+
+// Once shutdown, the Platform 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_EXPORT void shutdown();
+
+// Alters the rendering of content to conform to a fixed set of rules.
+WEBKIT_EXPORT void setLayoutTestMode(bool);
+WEBKIT_EXPORT bool layoutTestMode();
+
+// Enables the named log channel. See WebCore/platform/Logging.h for details.
+WEBKIT_EXPORT void enableLogChannel(const char*);
+
+// Purge the plugin list cache. If |reloadPages| is true, any pages
+// containing plugins will be reloaded after refreshing the plugin list.
+WEBKIT_EXPORT void resetPluginCache(bool reloadPages);
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebLabelElement.h b/public/webpage/WebLabelElement.h
new file mode 100644
index 0000000..4a20bac
--- /dev/null
+++ b/public/webpage/WebLabelElement.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2010 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 WebLabelElement_h
+#define WebLabelElement_h
+
+#include "WebElement.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class HTMLLabelElement; }
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+
+// Provides readonly access to some properties of a DOM label element node.
+class WebLabelElement : public WebElement {
+public:
+    WebLabelElement() : WebElement() { }
+    WebLabelElement(const WebLabelElement& element) : WebElement(element) { }
+
+    WebLabelElement& operator=(const WebLabelElement& element)
+    {
+        WebElement::assign(element);
+        return *this;
+    }
+
+    void assign(const WebLabelElement& element) { WebElement::assign(element); }
+
+    WEBKIT_EXPORT WebElement correspondingControl();
+
+#if WEBKIT_IMPLEMENTATION
+    WebLabelElement(const WTF::PassRefPtr<WebCore::HTMLLabelElement>&);
+    WebLabelElement& operator=(const WTF::PassRefPtr<WebCore::HTMLLabelElement>&);
+    operator WTF::PassRefPtr<WebCore::HTMLLabelElement>() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebMediaPlayer.h b/public/webpage/WebMediaPlayer.h
new file mode 100644
index 0000000..2125248
--- /dev/null
+++ b/public/webpage/WebMediaPlayer.h
@@ -0,0 +1,174 @@
+/*
+ * 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 "../platform/WebCanvas.h"
+#include "../platform/WebString.h"
+#include "WebTimeRange.h"
+
+namespace WebKit {
+
+class WebAudioSourceProvider;
+class WebAudioSourceProviderClient;
+class WebMediaPlayerClient;
+class WebMediaSource;
+class WebString;
+class WebURL;
+struct WebRect;
+struct WebSize;
+class WebGraphicsContext3D;
+
+class WebMediaPlayer {
+public:
+    enum NetworkState {
+        NetworkStateEmpty,
+        NetworkStateIdle,
+        NetworkStateLoading,
+        NetworkStateLoaded,
+        NetworkStateFormatError,
+        NetworkStateNetworkError,
+        NetworkStateDecodeError,
+    };
+
+    enum ReadyState {
+        ReadyStateHaveNothing,
+        ReadyStateHaveMetadata,
+        ReadyStateHaveCurrentData,
+        ReadyStateHaveFutureData,
+        ReadyStateHaveEnoughData,
+    };
+
+    enum Preload {
+        PreloadNone,
+        PreloadMetaData,
+        PreloadAuto,
+    };
+
+    // Represents synchronous exceptions that can be thrown from the Encrypted
+    // Media methods. This is different from the asynchronous MediaKeyError.
+    enum MediaKeyException {
+        MediaKeyExceptionNoError,
+        MediaKeyExceptionInvalidPlayerState,
+        MediaKeyExceptionKeySystemNotSupported,
+    };
+
+    enum CORSMode {
+        CORSModeUnspecified,
+        CORSModeAnonymous,
+        CORSModeUseCredentials,
+    };
+
+    virtual ~WebMediaPlayer() {}
+
+    virtual void load(const WebURL&, CORSMode) = 0;
+    virtual void load(const WebURL&, WebMediaSource*, CORSMode) = 0;
+
+    // Playback controls.
+    virtual void play() = 0;
+    virtual void pause() = 0;
+    virtual bool supportsFullscreen() const = 0;
+    virtual bool supportsSave() const = 0;
+    virtual void seek(double seconds) = 0;
+    virtual void setRate(double rate)  = 0;
+    virtual void setVolume(double volume) = 0;
+    virtual void setPreload(Preload) { };
+    virtual const WebTimeRanges& buffered() = 0;
+    virtual double maxTimeSeekable() const = 0;
+
+    virtual void paint(WebCanvas*, const WebRect&, unsigned char alpha) = 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 double duration() const = 0;
+    virtual double currentTime() const = 0;
+
+    // Internal states of loading and network.
+    virtual NetworkState networkState() const = 0;
+    virtual ReadyState readyState() const = 0;
+
+    virtual bool didLoadingProgress() const = 0;
+
+    virtual bool hasSingleSecurityOrigin() const = 0;
+    virtual bool didPassCORSAccessCheck() const = 0;
+
+    virtual double mediaTimeForTimeValue(double timeValue) const = 0;
+
+    virtual unsigned decodedFrameCount() const = 0;
+    virtual unsigned droppedFrameCount() const = 0;
+    virtual unsigned audioDecodedByteCount() const = 0;
+    virtual unsigned videoDecodedByteCount() const = 0;
+
+    // Do a GPU-GPU textures copy if possible.
+    virtual bool copyVideoTextureToPlatformTexture(WebGraphicsContext3D*, unsigned texture, unsigned level, unsigned internalFormat, unsigned type, bool premultiplyAlpha, bool flipY) { return false; }
+
+    virtual WebAudioSourceProvider* audioSourceProvider() { return 0; }
+
+    // Returns whether keySystem is supported. If true, the result will be
+    // reported by an event.
+    virtual MediaKeyException generateKeyRequest(const WebString& keySystem, const unsigned char* initData, unsigned initDataLength) { return MediaKeyExceptionKeySystemNotSupported; }
+    virtual MediaKeyException addKey(const WebString& keySystem, const unsigned char* key, unsigned keyLength, const unsigned char* initData, unsigned initDataLength, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
+    virtual MediaKeyException cancelKeyRequest(const WebString& keySystem, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
+
+    // Instruct WebMediaPlayer to enter/exit fullscreen.
+    virtual void enterFullscreen() { }
+    virtual void exitFullscreen() { }
+    // Returns true if the player can enter fullscreen.
+    virtual bool canEnterFullscreen() const { return false; }
+
+    // Deprecated methods to-be-deleted
+    // FIXME: Remove once Chromium no longer overrides
+    virtual void cancelLoad() { }
+    virtual int dataRate() const { return 0; }
+    virtual void setVisible(bool) { }
+    virtual void setSize(const WebSize&) { }
+    virtual unsigned long long totalBytes() const { return 0; }
+    virtual bool totalBytesKnown() { return false; }
+    enum MovieLoadType {
+        MovieLoadTypeUnknown,
+        MovieLoadTypeDownload,
+        MovieLoadTypeStoredStream,
+        MovieLoadTypeLiveStream,
+    };
+    virtual MovieLoadType movieLoadType() const { return MovieLoadTypeUnknown; }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebMediaPlayerAction.h b/public/webpage/WebMediaPlayerAction.h
new file mode 100644
index 0000000..192704f
--- /dev/null
+++ b/public/webpage/WebMediaPlayerAction.h
@@ -0,0 +1,56 @@
+/*
+ * 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,
+        Controls
+    };
+
+    Type type;
+    bool enable;
+
+    WebMediaPlayerAction()
+        : type(Unknown), enable(false) { }
+    WebMediaPlayerAction(Type type, bool enable)
+        : type(type), enable(enable) { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebMediaPlayerClient.h b/public/webpage/WebMediaPlayerClient.h
new file mode 100644
index 0000000..0622f96
--- /dev/null
+++ b/public/webpage/WebMediaPlayerClient.h
@@ -0,0 +1,92 @@
+/*
+ * 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
+
+#include "WebMediaPlayer.h"
+
+namespace WebKit {
+
+class WebFrame;
+class WebInbandTextTrack;
+class WebLayer;
+class WebMediaSource;
+class WebPlugin;
+class WebRequest;
+class WebURL;
+
+class WebMediaPlayerClient {
+public:
+    enum MediaKeyErrorCode {
+        MediaKeyErrorCodeUnknown = 1,
+        MediaKeyErrorCodeClient,
+        MediaKeyErrorCodeService,
+        MediaKeyErrorCodeOutput,
+        MediaKeyErrorCodeHardwareChange,
+        MediaKeyErrorCodeDomain,
+        UnknownError = MediaKeyErrorCodeUnknown,
+        ClientError = MediaKeyErrorCodeClient,
+        ServiceError = MediaKeyErrorCodeService,
+        OutputError = MediaKeyErrorCodeOutput,
+        HardwareChangeError = MediaKeyErrorCodeHardwareChange,
+        DomainError = MediaKeyErrorCodeDomain,
+    };
+
+    virtual void networkStateChanged() = 0;
+    virtual void readyStateChanged() = 0;
+    virtual void timeChanged() = 0;
+    virtual void repaint() = 0;
+    virtual void durationChanged() = 0;
+    virtual void sizeChanged() = 0;
+    virtual void setOpaque(bool) = 0;
+    virtual double volume() const = 0;
+    virtual void playbackStateChanged() = 0;
+    virtual WebMediaPlayer::Preload preload() const = 0;
+    virtual void keyAdded(const WebString& keySystem, const WebString& sessionId) = 0;
+    virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode) = 0;
+    virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL) = 0;
+    virtual void keyNeeded(const WebString& keySystem, const WebString& sessionId, const unsigned char* initData, unsigned initDataLength) = 0;
+    // The returned pointer is valid until closeHelperPlugin() is called.
+    // Returns 0 if the plugin could not be instantiated.
+    virtual WebPlugin* createHelperPlugin(const WebString& pluginType, WebFrame*) = 0;
+    virtual void closeHelperPlugin() = 0;
+    virtual bool needsWebLayerForVideo() const = 0;
+    virtual void setWebLayer(WebLayer*) = 0;
+    virtual void addTextTrack(WebInbandTextTrack*) = 0;
+    virtual void removeTextTrack(WebInbandTextTrack*) = 0;
+
+protected:
+    ~WebMediaPlayerClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebMediaSource.h b/public/webpage/WebMediaSource.h
new file mode 100644
index 0000000..424a687
--- /dev/null
+++ b/public/webpage/WebMediaSource.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2013 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 WebMediaSource_h
+#define WebMediaSource_h
+
+#include "../platform/WebURL.h"
+#include "WebTimeRange.h"
+
+namespace WebKit {
+
+class WebMediaSourceClient;
+
+class WebMediaSource {
+public:
+    virtual ~WebMediaSource() { };
+    virtual void open(WebMediaSourceClient*) = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebMediaSourceClient.h b/public/webpage/WebMediaSourceClient.h
new file mode 100644
index 0000000..4492414
--- /dev/null
+++ b/public/webpage/WebMediaSourceClient.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2013 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 WebMediaSourceClient_h
+#define WebMediaSourceClient_h
+
+#include "../platform/WebString.h"
+#include "WebTimeRange.h"
+
+namespace WebKit {
+
+class WebSourceBuffer;
+
+class WebMediaSourceClient {
+public:
+    enum AddStatus {
+        AddStatusOk,
+        AddStatusNotSupported,
+        AddStatusReachedIdLimit
+    };
+
+    enum EndOfStreamStatus {
+        EndOfStreamStatusNoError,
+        EndOfStreamStatusNetworkError,
+        EndOfStreamStatusDecodeError,
+    };
+
+    virtual ~WebMediaSourceClient() { }
+
+    virtual AddStatus addSourceBuffer(const WebString& type, const WebVector<WebString>& codecs, WebSourceBuffer**) = 0;
+    virtual double duration() = 0;
+    virtual void setDuration(double) = 0;
+    virtual void endOfStream(EndOfStreamStatus) = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebMediaStreamRegistry.h b/public/webpage/WebMediaStreamRegistry.h
new file mode 100644
index 0000000..0843b39
--- /dev/null
+++ b/public/webpage/WebMediaStreamRegistry.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2011 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 WebMediaStreamRegistry_h
+#define WebMediaStreamRegistry_h
+
+#include "../platform/WebString.h"
+
+namespace WebKit {
+
+class WebMediaStream;
+class WebURL;
+
+class WebMediaStreamRegistry {
+public:
+    WEBKIT_EXPORT static WebMediaStream lookupMediaStreamDescriptor(const WebURL&);
+};
+
+} // namespace WebKit
+
+#endif // WebMediaStreamRegistry_h
diff --git a/public/webpage/WebMemoryUsageInfo.h b/public/webpage/WebMemoryUsageInfo.h
new file mode 100644
index 0000000..1168a2c
--- /dev/null
+++ b/public/webpage/WebMemoryUsageInfo.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 WebMemoryUsageInfo_h
+#define WebMemoryUsageInfo_h
+
+#include "../platform/WebString.h"
+
+namespace WebKit {
+
+struct WebMemoryUsageInfo {
+    WebMemoryUsageInfo(const WebString& allocator, size_t allocated)
+        : allocatorName(allocator)
+        , allocatedBytes(allocated)
+    {
+    }
+
+    WebMemoryUsageInfo()
+        : allocatedBytes(0)
+    {
+    }
+
+    WebString allocatorName;
+    size_t allocatedBytes;
+};
+
+} // namespace WebKit
+
+#endif // WebMemoryUsageInfo_h
diff --git a/public/webpage/WebMenuItemInfo.h b/public/webpage/WebMenuItemInfo.h
new file mode 100644
index 0000000..eef2528
--- /dev/null
+++ b/public/webpage/WebMenuItemInfo.h
@@ -0,0 +1,73 @@
+/*
+ * 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 WebMenuItemInfo_h
+#define WebMenuItemInfo_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+#include "WebTextDirection.h"
+
+namespace WebKit {
+
+struct WebMenuItemInfo {
+    enum Type {
+        Option,
+        CheckableOption,
+        Group,
+        Separator,
+        SubMenu
+    };
+
+    WebMenuItemInfo() 
+        : type(Option)
+        , action(0)
+        , textDirection(WebTextDirectionDefault)
+        , hasTextDirectionOverride(false)
+        , enabled(false)
+        , checked(false)
+    {
+    }
+
+    WebString label;
+    WebString toolTip;
+    Type type;
+    unsigned action;
+    WebTextDirection textDirection;
+    WebVector<WebMenuItemInfo> subMenuItems;
+    bool hasTextDirectionOverride;
+    bool enabled;
+    bool checked;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebMessagePortChannel.h b/public/webpage/WebMessagePortChannel.h
new file mode 100644
index 0000000..2941674
--- /dev/null
+++ b/public/webpage/WebMessagePortChannel.h
@@ -0,0 +1,31 @@
+/*
+ * 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 "../platform/WebMessagePortChannel.h"
diff --git a/public/webpage/WebMessagePortChannelClient.h b/public/webpage/WebMessagePortChannelClient.h
new file mode 100644
index 0000000..14fbe2f
--- /dev/null
+++ b/public/webpage/WebMessagePortChannelClient.h
@@ -0,0 +1,31 @@
+/*
+ * 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 "../platform/WebMessagePortChannelClient.h"
diff --git a/public/webpage/WebNavigationPolicy.h b/public/webpage/WebNavigationPolicy.h
new file mode 100644
index 0000000..54bee9d
--- /dev/null
+++ b/public/webpage/WebNavigationPolicy.h
@@ -0,0 +1,48 @@
+/*
+ * 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/public/webpage/WebNavigationType.h b/public/webpage/WebNavigationType.h
new file mode 100644
index 0000000..8ca8dc6
--- /dev/null
+++ b/public/webpage/WebNavigationType.h
@@ -0,0 +1,47 @@
+/*
+ * 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/public/webpage/WebNetworkStateNotifier.h b/public/webpage/WebNetworkStateNotifier.h
new file mode 100644
index 0000000..0069c30
--- /dev/null
+++ b/public/webpage/WebNetworkStateNotifier.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2011 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 WebNetworkStateNotifier_h
+#define WebNetworkStateNotifier_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+class WebNetworkStateNotifier {
+public:
+    WEBKIT_EXPORT static void setOnLine(bool);
+
+private:
+    WebNetworkStateNotifier();
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebNode.h b/public/webpage/WebNode.h
new file mode 100644
index 0000000..8028804
--- /dev/null
+++ b/public/webpage/WebNode.h
@@ -0,0 +1,180 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "../platform/WebString.h"
+#include "WebExceptionCode.h"
+
+namespace WebCore { class Node; }
+
+namespace WebKit {
+class WebDOMEvent;
+class WebDOMEventListener;
+class WebDOMEventListenerPrivate;
+class WebDocument;
+class WebElement;
+class WebFrame;
+class WebNodeList;
+class WebPluginContainer;
+
+// Provides access to some properties of a DOM node.
+class WebNode {
+public:
+    virtual ~WebNode() { reset(); }
+
+    WebNode() { }
+    WebNode(const WebNode& n) { assign(n); }
+    WebNode& operator=(const WebNode& n)
+    {
+        assign(n);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebNode&);
+
+    WEBKIT_EXPORT bool equals(const WebNode&) const;
+    // Required for using WebNodes in std maps.  Note the order used is
+    // arbitrary and should not be expected to have any specific meaning.
+    WEBKIT_EXPORT bool lessThan(const WebNode&) const;
+
+    bool isNull() const { return m_private.isNull(); }
+
+    enum NodeType {
+        ElementNode = 1,
+        AttributeNode = 2,
+        TextNode = 3,
+        CDataSectionNode = 4,
+        // EntityReferenceNodes are deprecated and impossible to create in WebKit.
+        EntityNode = 6,
+        ProcessingInstructionsNode = 7,
+        CommentNode = 8,
+        DocumentNode = 9,
+        DocumentTypeNode = 10,
+        DocumentFragmentNode = 11,
+        NotationNode = 12,
+        XPathNamespaceNode = 13,
+        ShadowRootNode = 14
+    };
+
+    WEBKIT_EXPORT NodeType nodeType() const;
+    WEBKIT_EXPORT WebNode parentNode() const;
+    WEBKIT_EXPORT WebString nodeName() const;
+    WEBKIT_EXPORT WebString nodeValue() const;
+    WEBKIT_EXPORT bool setNodeValue(const WebString&);
+    WEBKIT_EXPORT WebDocument document() const;
+    WEBKIT_EXPORT WebNode firstChild() const;
+    WEBKIT_EXPORT WebNode lastChild() const;
+    WEBKIT_EXPORT WebNode previousSibling() const;
+    WEBKIT_EXPORT WebNode nextSibling() const;
+    WEBKIT_EXPORT bool hasChildNodes() const;
+    WEBKIT_EXPORT WebNodeList childNodes();
+    WEBKIT_EXPORT bool appendChild(const WebNode& child);
+    WEBKIT_EXPORT WebString createMarkup() const;
+    WEBKIT_EXPORT bool isLink() const;
+    WEBKIT_EXPORT bool isTextNode() const;
+    WEBKIT_EXPORT bool isFocusable() const;
+    WEBKIT_EXPORT bool isContentEditable() const;
+    WEBKIT_EXPORT bool isElementNode() const;
+    // addEventListener only works with a small set of eventTypes.
+    WEBKIT_EXPORT void addEventListener(const WebString& eventType, WebDOMEventListener* listener, bool useCapture);
+    WEBKIT_EXPORT bool dispatchEvent(const WebDOMEvent&);
+    WEBKIT_EXPORT void simulateClick();
+    WEBKIT_EXPORT WebNodeList getElementsByTagName(const WebString&) const;
+    WEBKIT_EXPORT WebElement querySelector(const WebString&, WebExceptionCode&) const;
+    WEBKIT_EXPORT WebElement rootEditableElement() const;
+    WEBKIT_EXPORT bool focused() const;
+    WEBKIT_EXPORT bool remove();
+
+    // Returns true if the node has a non-empty bounding box in layout.
+    // This does not 100% guarantee the user can see it, but is pretty close.
+    // Note: This method only works properly after layout has occurred.
+    WEBKIT_EXPORT bool hasNonEmptyBoundingBox() const;
+    WEBKIT_EXPORT WebPluginContainer* pluginContainer() const;
+    WEBKIT_EXPORT WebElement shadowHost() const;
+
+    template<typename T> T to()
+    {
+        T res;
+        res.WebNode::assign(*this);
+        return res;
+    }
+
+    template<typename T> const T toConst() const
+    {
+        T res;
+        res.WebNode::assign(*this);
+        return res;
+    }
+
+#if WEBKIT_IMPLEMENTATION
+    WebNode(const WTF::PassRefPtr<WebCore::Node>&);
+    WebNode& operator=(const WTF::PassRefPtr<WebCore::Node>&);
+    operator WTF::PassRefPtr<WebCore::Node>() const;
+#endif
+
+#if WEBKIT_IMPLEMENTATION
+    template<typename T> T* unwrap()
+    {
+        return static_cast<T*>(m_private.get());
+    }
+
+    template<typename T> const T* constUnwrap() const
+    {
+        return static_cast<const T*>(m_private.get());
+    }
+#endif
+
+protected:
+    WebPrivatePtr<WebCore::Node> m_private;
+};
+
+inline bool operator==(const WebNode& a, const WebNode& b)
+{
+    return a.equals(b);
+}
+
+inline bool operator!=(const WebNode& a, const WebNode& b)
+{
+    return !(a == b);
+}
+
+inline bool operator<(const WebNode& a, const WebNode& b)
+{
+    return a.lessThan(b);
+}
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebNodeCollection.h b/public/webpage/WebNodeCollection.h
new file mode 100644
index 0000000..004cc08
--- /dev/null
+++ b/public/webpage/WebNodeCollection.h
@@ -0,0 +1,78 @@
+/*
+ * 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 WebNodeCollection_h
+#define WebNodeCollection_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebCore { class HTMLCollection; }
+#if WEBKIT_IMPLEMENTATION
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+class WebNode;
+
+// Provides readonly access to some properties of a DOM node.
+class WebNodeCollection {
+public:
+    ~WebNodeCollection() { reset(); }
+
+    WebNodeCollection() : m_private(0), m_current(0) { }
+    WebNodeCollection(const WebNodeCollection& n) : m_private(0) { assign(n); }
+    WebNodeCollection& operator=(const WebNodeCollection& n)
+    {
+        assign(n);
+        return *this;
+    }
+
+    bool isNull() const { return !m_private; }
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebNodeCollection&);
+
+    WEBKIT_EXPORT unsigned length() const;
+    WEBKIT_EXPORT WebNode nextItem() const;
+    WEBKIT_EXPORT WebNode firstItem() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebNodeCollection(const WTF::PassRefPtr<WebCore::HTMLCollection>&);
+#endif
+
+private:
+    void assign(WebCore::HTMLCollection*);
+    WebCore::HTMLCollection* m_private;
+    mutable unsigned m_current;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebNodeList.h b/public/webpage/WebNodeList.h
new file mode 100644
index 0000000..c0137d9
--- /dev/null
+++ b/public/webpage/WebNodeList.h
@@ -0,0 +1,74 @@
+/*
+ * 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 WebNodeList_h
+#define WebNodeList_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebCore { class NodeList; }
+#if WEBKIT_IMPLEMENTATION
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+class WebNode;
+
+// Provides readonly access to some properties of a DOM node.
+class WebNodeList {
+public:
+    ~WebNodeList() { reset(); }
+
+    WebNodeList() : m_private(0) { }
+    WebNodeList(const WebNodeList& n) : m_private(0) { assign(n); }
+    WebNodeList& operator=(const WebNodeList& n)
+    {
+        assign(n);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebNodeList&);
+
+    WEBKIT_EXPORT unsigned length() const;
+    WEBKIT_EXPORT WebNode item(size_t) const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebNodeList(const WTF::PassRefPtr<WebCore::NodeList>&);
+#endif
+
+private:
+    void assign(WebCore::NodeList*);
+    WebCore::NodeList* m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebNotification.h b/public/webpage/WebNotification.h
new file mode 100644
index 0000000..7d4e055
--- /dev/null
+++ b/public/webpage/WebNotification.h
@@ -0,0 +1,132 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "WebTextDirection.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class Notification; }
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WTF {
+class AtomicString;
+}
+
+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_EXPORT void reset();
+    WEBKIT_EXPORT 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; }
+    WEBKIT_EXPORT bool lessThan(const WebNotification& other) const;
+
+    // Is the notification HTML vs. icon-title-text?
+    WEBKIT_EXPORT bool isHTML() const;
+
+    // If HTML, the URL which contains the contents of the notification.
+    WEBKIT_EXPORT WebURL url() const;
+
+    WEBKIT_EXPORT WebURL iconURL() const;
+    WEBKIT_EXPORT WebString title() const;
+    WEBKIT_EXPORT WebString body() const;
+    WEBKIT_EXPORT WebTextDirection direction() const;
+
+    WEBKIT_EXPORT WebString replaceId() const;
+
+    // Called if the presenter goes out of scope before the notification does.
+    WEBKIT_EXPORT void detachPresenter();
+
+    // Called to indicate the notification has been displayed.
+    WEBKIT_EXPORT void dispatchDisplayEvent();
+
+    // Called to indicate an error has occurred with this notification.
+    WEBKIT_EXPORT 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_EXPORT void dispatchCloseEvent(bool byUser);
+
+    // Called to indicate the notification was clicked on.
+    WEBKIT_EXPORT void dispatchClickEvent();
+
+#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*);
+    void dispatchEvent(const WTF::AtomicString& type);
+    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/public/webpage/WebNotificationPermissionCallback.h b/public/webpage/WebNotificationPermissionCallback.h
new file mode 100644
index 0000000..07e85ee
--- /dev/null
+++ b/public/webpage/WebNotificationPermissionCallback.h
@@ -0,0 +1,51 @@
+/*
+ * 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/public/webpage/WebNotificationPresenter.h b/public/webpage/WebNotificationPresenter.h
new file mode 100644
index 0000000..84d0c1a
--- /dev/null
+++ b/public/webpage/WebNotificationPresenter.h
@@ -0,0 +1,73 @@
+/*
+ * 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 "../platform/WebString.h"
+#include "WebNotificationPermissionCallback.h"
+#include "WebSecurityOrigin.h"
+
+namespace WebKit {
+
+class WebDocument;
+class WebNotification;
+
+// 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 for the given origin.
+    virtual Permission checkPermission(const WebSecurityOrigin&) = 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 WebSecurityOrigin&, WebNotificationPermissionCallback*) = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebOptionElement.h b/public/webpage/WebOptionElement.h
new file mode 100644
index 0000000..7c6f52a
--- /dev/null
+++ b/public/webpage/WebOptionElement.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2010 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 WebOptionElement_h
+#define WebOptionElement_h
+
+#include "../platform/WebVector.h"
+#include "WebElement.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class HTMLOptionElement; }
+#endif
+
+namespace WebKit {
+
+// Provides readonly access to some properties of a DOM option element node.
+class WebOptionElement : public WebElement {
+public:
+    WebOptionElement() : WebElement() { }
+    WebOptionElement(const WebOptionElement& element) : WebElement(element) { }
+
+    WebOptionElement& operator=(const WebOptionElement& element)
+    {
+        WebElement::assign(element);
+        return *this;
+    }
+    void assign(const WebOptionElement& element) { WebElement::assign(element); }
+
+    WEBKIT_EXPORT void setValue(const WebString&);
+    WEBKIT_EXPORT WebString value() const;
+
+    WEBKIT_EXPORT int index() const;
+    WEBKIT_EXPORT WebString text() const;
+    WEBKIT_EXPORT bool defaultSelected() const;
+    WEBKIT_EXPORT void setDefaultSelected(bool);
+    WEBKIT_EXPORT WebString label() const;
+    WEBKIT_EXPORT bool isEnabled() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebOptionElement(const WTF::PassRefPtr<WebCore::HTMLOptionElement>&);
+    WebOptionElement& operator=(const WTF::PassRefPtr<WebCore::HTMLOptionElement>&);
+    operator WTF::PassRefPtr<WebCore::HTMLOptionElement>() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPageOverlay.h b/public/webpage/WebPageOverlay.h
new file mode 100644
index 0000000..6a7e519
--- /dev/null
+++ b/public/webpage/WebPageOverlay.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2011 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. AND ITS 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 GOOGLE INC.
+ * OR ITS 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 WebPageOverlay_h
+#define WebPageOverlay_h
+
+#include "../platform/WebCanvas.h"
+#include "../platform/WebRect.h"
+
+namespace WebKit {
+
+class WebPageOverlay {
+public:
+    // Paints page overlay contents.
+    virtual void paintPageOverlay(WebCanvas*) = 0;
+
+protected:
+    virtual ~WebPageOverlay() { }
+};
+
+} // namespace WebKit
+
+#endif // WebPageOverlay_h
diff --git a/public/webpage/WebPagePopup.h b/public/webpage/WebPagePopup.h
new file mode 100644
index 0000000..8d7d037
--- /dev/null
+++ b/public/webpage/WebPagePopup.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2012 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 WebPagePopup_h
+#define WebPagePopup_h
+
+#include "../platform/WebCommon.h"
+#include "WebWidget.h"
+
+namespace WebKit {
+
+class WebWidgetClient;
+
+class WebPagePopup : public WebWidget {
+public:
+    WEBKIT_EXPORT static WebPagePopup* create(WebWidgetClient*);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPageSerializer.h b/public/webpage/WebPageSerializer.h
new file mode 100644
index 0000000..57298ae
--- /dev/null
+++ b/public/webpage/WebPageSerializer.h
@@ -0,0 +1,119 @@
+/*
+ * 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 WebPageSerializer_h
+#define WebPageSerializer_h
+
+#include "../platform/WebCString.h"
+#include "../platform/WebCommon.h"
+#include "../platform/WebURL.h"
+
+namespace WebKit {
+class WebFrame;
+class WebPageSerializerClient;
+class WebString;
+class WebView;
+template <typename T> class WebVector;
+
+// Get html data by serializing all frames of current page with lists
+// which contain all resource links that have local copy.
+class WebPageSerializer {
+public:
+    struct Resource {
+        WebURL url;
+        WebCString mimeType;
+        WebCString data;
+    };
+
+    // Serializes all the frames from the WebView, retrieves the page's
+    // resources (such as images and CSS) and adds them to the passed vector.
+    // The first resource in that vector is the top frame contents.
+    // Note that this also strips-out any script tag or link to JavaScript.
+    WEBKIT_EXPORT static void serialize(WebView*, WebVector<Resource>*);
+
+    // Serializes the WebView contents to a MHTML representation.
+    WEBKIT_EXPORT static WebCString serializeToMHTML(WebView*);
+
+    // Similar to serializeToMHTML but uses binary encoding for the MHTML parts.
+    // This results in a smaller MHTML file but it might not be supported by other browsers.
+    WEBKIT_EXPORT static WebCString serializeToMHTMLUsingBinaryEncoding(WebView*);
+
+    // IMPORTANT:
+    // The API below is an older implementation of a pageserialization that
+    // will be removed soon.
+
+
+    // This function will find out all frames and serialize them to HTML data.
+    // We have a data buffer to temporary saving generated html data. We will
+    // sequentially call WebPageSeriazlierClient once the data buffer is full.
+    //
+    // Return false means no available frame has been serialized, otherwise
+    // return true.
+    //
+    // The parameter frame specifies which frame need to be serialized.
+    // The parameter recursive specifies whether we need to
+    // serialize all sub frames of the specified frame or not.
+    // The parameter client specifies the pointer of interface
+    // WebPageSerializerClient providing a sink interface to receive the
+    // individual chunks of data to be saved.
+    // The parameter links contain original URLs of all saved links.
+    // The parameter localPaths contain corresponding local file paths of all
+    // saved links, which matched with vector:links one by one.
+    // The parameter localDirectoryName is relative path of directory which
+    // contain all saved auxiliary files included all sub frames and resources.
+    WEBKIT_EXPORT static bool serialize(WebFrame*,
+                                        bool recursive,
+                                        WebPageSerializerClient*,
+                                        const WebVector<WebURL>& links,
+                                        const WebVector<WebString>& localPaths,
+                                        const WebString& localDirectoryName);
+
+    // Retrieve all the resource for the passed view, including the main frame
+    // and sub-frames. Returns true if all resources were retrieved
+    // successfully.
+    WEBKIT_EXPORT static bool retrieveAllResources(WebView*,
+                                                   const WebVector<WebCString>& supportedSchemes,
+                                                   WebVector<WebURL>* resources,
+                                                   WebVector<WebURL>* frames);
+
+    // FIXME: The following are here for unit testing purposes. Consider
+    // changing the unit tests instead.
+
+    // Generate the META for charset declaration.
+    WEBKIT_EXPORT static WebString generateMetaCharsetDeclaration(const WebString& charset);
+    // Generate the MOTW declaration.
+    WEBKIT_EXPORT static WebString generateMarkOfTheWebDeclaration(const WebURL&);
+    // Generate the default base tag declaration.
+    WEBKIT_EXPORT static WebString generateBaseTagDeclaration(const WebString& baseTarget);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPageSerializerClient.h b/public/webpage/WebPageSerializerClient.h
new file mode 100644
index 0000000..c30ddbc
--- /dev/null
+++ b/public/webpage/WebPageSerializerClient.h
@@ -0,0 +1,75 @@
+/*
+ * 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 WebPageSerializerClient_h
+#define WebPageSerializerClient_h
+
+namespace WebKit {
+class WebCString;
+class WebURL;
+
+// This class is used for providing sink interface that can be used to receive
+// the individual chunks of data to be saved.
+class WebPageSerializerClient {
+public:
+    // This enum indicates  This sink interface can receive the individual chunks
+    // of serialized data to be saved, so we use values of following enum
+    // definition to indicate the serialization status of serializing all html
+    // content. If current frame is not complete serialized, call
+    // didSerializeDataForFrame with URL of current frame, data, data length and
+    // flag CurrentFrameIsNotFinished.
+    // If current frame is complete serialized, call didSerializeDataForFrame
+    // with URL of current frame, data, data length and flag
+    // CurrentFrameIsFinished.
+    // If all frames of page are complete serialized, call
+    // didSerializeDataForFrame with empty URL, empty data, 0 and flag
+    // AllFramesAreFinished.
+    enum PageSerializationStatus {
+        CurrentFrameIsNotFinished,
+        CurrentFrameIsFinished,
+        AllFramesAreFinished,
+    };
+
+    // Receive the individual chunks of serialized and encoded data to be saved.
+    // The parameter frameURL specifies what frame the data belongs. The
+    // parameter data contains the available data for saving. The parameter
+    // status indicates the status of data serialization.
+    virtual void didSerializeDataForFrame(const WebURL& frameURL,
+                                          const WebCString& data,
+                                          PageSerializationStatus status) = 0;
+    WebPageSerializerClient() { }
+
+protected:
+    virtual ~WebPageSerializerClient() { }
+};
+
+}  // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPageVisibilityState.h b/public/webpage/WebPageVisibilityState.h
new file mode 100644
index 0000000..8eb867f
--- /dev/null
+++ b/public/webpage/WebPageVisibilityState.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2011 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 WebPageVisibilityState_h
+#define WebPageVisibilityState_h
+
+namespace WebKit {
+
+// The following enum should be consistent with the PageVisibilityState enum
+// defined in WebCore.
+enum WebPageVisibilityState {
+    WebPageVisibilityStateVisible,
+    WebPageVisibilityStateHidden,
+    WebPageVisibilityStatePrerender,
+    WebPageVisibilityStatePreview
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPasswordFormData.h b/public/webpage/WebPasswordFormData.h
new file mode 100644
index 0000000..954bbc9
--- /dev/null
+++ b/public/webpage/WebPasswordFormData.h
@@ -0,0 +1,126 @@
+/*
+ * 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 "../platform/WebString.h"
+#include "../platform/WebURL.h"
+#include "../platform/WebVector.h"
+#include "WebFormElement.h"
+
+namespace WebKit {
+
+struct WebPasswordFormData {
+    // If the provided form is suitable for password completion, isValid() will
+    // return true;
+    WEBKIT_EXPORT 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;
+
+    // If the form has more than one field which could possibly contain the
+    // username, the extra are placed here. Used for autofill in cases where
+    // our heuristics for determining the username are wrong. Optional.
+    //
+    // When parsing an HTML form, this is typically empty.
+    WebVector<WebString> possibleUserNames;
+
+    // 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;
+
+    // Value of shouldAutocomplete for the password element.
+    bool passwordShouldAutocomplete;
+
+    // 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;
+
+    WebPasswordFormData()
+        : passwordShouldAutocomplete(false)
+    {
+    }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPerformance.h b/public/webpage/WebPerformance.h
new file mode 100644
index 0000000..5b5df2c
--- /dev/null
+++ b/public/webpage/WebPerformance.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2010 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 WebPerformance_h
+#define WebPerformance_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "WebNavigationType.h"
+
+namespace WebCore { class Performance; }
+
+namespace WebKit {
+
+class WebPerformance {
+public:
+    ~WebPerformance() { reset(); }
+
+    WebPerformance() { }
+
+    WebPerformance(const WebPerformance& p) { assign(p); }
+
+    WebPerformance& operator=(const WebPerformance& p)
+    {
+        assign(p);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebPerformance&);
+
+    // This only returns one of {Other|Reload|BackForward}.
+    // Form submits and link clicks all fall under other.
+    WEBKIT_EXPORT WebNavigationType navigationType() const;
+
+    WEBKIT_EXPORT double navigationStart() const;
+    WEBKIT_EXPORT double unloadEventEnd() const;
+    WEBKIT_EXPORT double redirectStart() const;
+    WEBKIT_EXPORT double redirectEnd() const;
+    WEBKIT_EXPORT unsigned short redirectCount() const;
+    WEBKIT_EXPORT double fetchStart() const;
+    WEBKIT_EXPORT double domainLookupStart() const;
+    WEBKIT_EXPORT double domainLookupEnd() const;
+    WEBKIT_EXPORT double connectStart() const;
+    WEBKIT_EXPORT double connectEnd() const;
+    WEBKIT_EXPORT double requestStart() const;
+    WEBKIT_EXPORT double responseStart() const;
+    WEBKIT_EXPORT double responseEnd() const;
+    WEBKIT_EXPORT double domLoading() const;
+    WEBKIT_EXPORT double domInteractive() const;
+    WEBKIT_EXPORT double domContentLoadedEventStart() const;
+    WEBKIT_EXPORT double domContentLoadedEventEnd() const;
+    WEBKIT_EXPORT double domComplete() const;
+    WEBKIT_EXPORT double loadEventStart() const;
+    WEBKIT_EXPORT double loadEventEnd() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebPerformance(const WTF::PassRefPtr<WebCore::Performance>&);
+    WebPerformance& operator=(const WTF::PassRefPtr<WebCore::Performance>&);
+    operator WTF::PassRefPtr<WebCore::Performance>() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::Performance> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPermissionClient.h b/public/webpage/WebPermissionClient.h
new file mode 100644
index 0000000..0b6414b
--- /dev/null
+++ b/public/webpage/WebPermissionClient.h
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2011 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 WebPermissionClient_h
+#define WebPermissionClient_h
+
+namespace WebKit {
+
+class WebDocument;
+class WebFrame;
+class WebSecurityOrigin;
+class WebString;
+class WebURL;
+
+class WebPermissionClient {
+public:
+    // Controls whether access to Web Databases is allowed for this frame.
+    virtual bool allowDatabase(WebFrame*, const WebString& name, const WebString& displayName, unsigned long estimatedSize) { return true; }
+
+    // Controls whether access to File System is allowed for this frame.
+    virtual bool allowFileSystem(WebFrame*) { return true; }
+
+    // Controls whether images are allowed for this frame.
+    virtual bool allowImage(WebFrame* frame, bool enabledPerSettings, const WebURL& imageURL) { return enabledPerSettings; }
+
+    // Controls whether access to Indexed DB are allowed for this frame.
+    virtual bool allowIndexedDB(WebFrame*, const WebString& name, const WebSecurityOrigin&) { return true; }
+
+    // Controls whether plugins are allowed for this frame.
+    virtual bool allowPlugins(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; }
+
+    // Controls whether scripts are allowed to execute for this frame.
+    virtual bool allowScript(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; }
+
+    // Controls whether scripts loaded from the given URL are allowed to execute for this frame.
+    virtual bool allowScriptFromSource(WebFrame*, bool enabledPerSettings, const WebURL& scriptURL) { return enabledPerSettings; }
+
+    // Controls whether insecrure content is allowed to display for this frame.
+    virtual bool allowDisplayingInsecureContent(WebFrame*, bool enabledPerSettings, const WebSecurityOrigin&, const WebURL&) { return enabledPerSettings; }
+
+    // Controls whether insecrure scripts are allowed to execute for this frame.
+    virtual bool allowRunningInsecureContent(WebFrame*, bool enabledPerSettings, const WebSecurityOrigin&, const WebURL&) { return enabledPerSettings; }
+
+    // Controls whether the given script extension should run in a new script
+    // context in this frame. If extensionGroup is 0, the script context is the
+    // frame's main context. Otherwise, it is a context created by
+    // WebFrame::executeScriptInIsolatedWorld with that same extensionGroup
+    // value.
+    virtual bool allowScriptExtension(WebFrame*, const WebString& extensionName, int extensionGroup) { return true; }
+
+    virtual bool allowScriptExtension(WebFrame* webFrame, const WebString& extensionName, int extensionGroup, int worldId)
+    {
+        return allowScriptExtension(webFrame, extensionName, extensionGroup);
+    }
+
+    // Controls whether HTML5 Web Storage is allowed for this frame.
+    // If local is true, then this is for local storage, otherwise it's for session storage.
+    virtual bool allowStorage(WebFrame*, bool local) { return true; }
+
+    // Controls whether access to read the clipboard is allowed for this frame.
+    virtual bool allowReadFromClipboard(WebFrame*, bool defaultValue) { return defaultValue; }
+
+    // Controls whether access to write the clipboard is allowed for this frame.
+    virtual bool allowWriteToClipboard(WebFrame*, bool defaultValue) { return defaultValue; }
+
+    // Controls whether enabling Web Components API for this frame.
+    virtual bool allowWebComponents(const WebDocument&, bool defaultValue) { return defaultValue; }
+
+    // Controls whether enabling HTML notifications for this frame.
+    virtual bool allowHTMLNotifications(const WebDocument&) { return true; }
+
+    // Controls whether to enable MutationEvents for this document.
+    // The common use case of this method is actually to selectively disable MutationEvents,
+    // but it's been named for consistency with the rest of the interface.
+    virtual bool allowMutationEvents(const WebDocument&, bool defaultValue) { return defaultValue; }
+
+    // Controls whether pushState and related History APIs are enabled for this frame.
+    virtual bool allowPushState(const WebDocument&) { return true; }
+
+    // Notifies the client that the frame would have instantiated a plug-in if plug-ins were enabled.
+    virtual void didNotAllowPlugins(WebFrame*) { }
+
+    // Notifies the client that the frame would have executed script if script were enabled.
+    virtual void didNotAllowScript(WebFrame*) { }
+
+protected:
+    ~WebPermissionClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPlugin.h b/public/webpage/WebPlugin.h
new file mode 100644
index 0000000..daf962a
--- /dev/null
+++ b/public/webpage/WebPlugin.h
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2009, 2012 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 "../platform/WebCanvas.h"
+#include "../platform/WebString.h"
+#include "../platform/WebURL.h"
+#include "WebDragOperation.h"
+#include "WebDragStatus.h"
+
+struct NPObject;
+struct _NPP;
+
+namespace WebKit {
+
+class WebDataSource;
+class WebDragData;
+class WebFrame;
+class WebInputEvent;
+class WebPluginContainer;
+class WebURLResponse;
+struct WebCursorInfo;
+struct WebPluginParams;
+struct WebPrintParams;
+struct WebPoint;
+struct WebRect;
+struct WebURLError;
+template <typename T> class WebVector;
+
+class WebPlugin {
+public:
+    virtual bool initialize(WebPluginContainer*) = 0;
+    virtual void destroy() = 0;
+
+    virtual WebPluginContainer* container() const { return 0; }
+
+    virtual NPObject* scriptableObject() = 0;
+    virtual struct _NPP* pluginNPP() { return 0; }
+
+    // Returns true if the form submission value is successfully obtained
+    // from the plugin. The value would be associated with the name attribute
+    // of the corresponding object element.
+    virtual bool getFormValue(WebString&) { return false; }
+    virtual bool supportsKeyboardFocus() const { return false; }
+    virtual bool supportsEditCommands() const { return false; }
+
+    virtual bool canProcessDrag() const { return false; }
+
+    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 bool handleDragStatusUpdate(WebDragStatus, const WebDragData&, WebDragOperationsMask, const WebPoint& position, const WebPoint& screenPosition) { return false; }
+
+    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;
+
+    // Printing interface.
+    // Whether the plugin supports its own paginated print. The other print
+    // interface methods are called only if this method returns true.
+    virtual bool supportsPaginatedPrint() { return false; }
+    // Returns true if the printed content should not be scaled to
+    // the printer's printable area.
+    virtual bool isPrintScalingDisabled() { return false; }
+
+    // Sets up printing with the specified printParams. Returns the number of
+    // pages to be printed at these settings.
+    virtual int printBegin(const WebPrintParams& printParams) { return 0; }
+
+    // Prints the page specified by pageNumber (0-based index) into the supplied canvas.
+    virtual bool printPage(int pageNumber, WebCanvas* canvas) { return false; }
+    // Ends the print operation.
+    virtual void printEnd() { }
+
+    virtual bool hasSelection() const { return false; }
+    virtual WebString selectionAsText() const { return WebString(); }
+    virtual WebString selectionAsMarkup() const { return WebString(); }
+
+    virtual bool executeEditCommand(const WebString& name) { return false; }
+    virtual bool executeEditCommand(const WebString& name, const WebString& value) { return false; }
+
+    // If the given position is over a link, returns the absolute url.
+    // Otherwise an empty url is returned.
+    virtual WebURL linkAtPosition(const WebPoint& position) const { return WebURL(); }
+
+    // Used for zooming of full page plugins.
+    virtual void setZoomLevel(double level, bool textOnly) { }
+
+    // Find interface.
+    // Start a new search.  The plugin should search for a little bit at a time so that it
+    // doesn't block the thread in case of a large document.  The results, along with the
+    // find's identifier, should be sent asynchronously to WebFrameClient's reportFindInPage* methods.
+    // Returns true if the search started, or false if the plugin doesn't support search.
+    virtual bool startFind(const WebString& searchText, bool caseSensitive, int identifier) { return false; }
+    // Tells the plugin to jump forward or backward in the list of find results.
+    virtual void selectFindResult(bool forward) { }
+    // Tells the plugin that the user has stopped the find operation.
+    virtual void stopFind() { }
+
+    // View rotation types.
+    enum RotationType {
+        RotationType90Clockwise,
+        RotationType90Counterclockwise
+    };
+    // Whether the plugin can rotate the view of its content.
+    virtual bool canRotateView() { return false; }
+    // Rotates the plugin's view of its content.
+    virtual void rotateView(RotationType type) { }
+
+    virtual bool isPlaceholder() { return true; }
+
+protected:
+    ~WebPlugin() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPluginAction.h b/public/webpage/WebPluginAction.h
new file mode 100644
index 0000000..89f12ed
--- /dev/null
+++ b/public/webpage/WebPluginAction.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2012 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 WebPluginAction_h
+#define WebPluginAction_h
+
+namespace WebKit {
+
+struct WebPluginAction {
+    enum Type {
+        Unknown,
+        Rotate90Clockwise,
+        Rotate90Counterclockwise
+    };
+
+    Type type;
+    bool enable;
+
+    WebPluginAction()
+        : type(Unknown), enable(false) { }
+    WebPluginAction(Type type, bool enable)
+        : type(type), enable(enable) { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPluginContainer.h b/public/webpage/WebPluginContainer.h
new file mode 100644
index 0000000..0e25adf
--- /dev/null
+++ b/public/webpage/WebPluginContainer.h
@@ -0,0 +1,137 @@
+/*
+ * 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
+
+#include "../platform/WebCommon.h"
+
+struct NPObject;
+
+namespace WebKit {
+
+class WebElement;
+class WebPlugin;
+class WebString;
+class WebURL;
+class WebURLRequest;
+class WebLayer;
+struct WebPoint;
+struct WebRect;
+
+class WebPluginContainer {
+public:
+    enum TouchEventRequestType {
+        TouchEventRequestTypeNone,
+        TouchEventRequestTypeRaw,
+        TouchEventRequestTypeSynthesizedMouse,
+    };
+
+    // Returns the element containing this plugin.
+    virtual WebElement element() = 0;
+
+    virtual void invalidate() = 0;
+    virtual void invalidateRect(const WebRect&) = 0;
+    virtual void scrollRect(int dx, int dy, const WebRect&) = 0;
+
+    // Causes the container to report its current geometry via
+    // WebPlugin::updateGeometry.
+    virtual void reportGeometry() = 0;
+
+    // Allow the plugin to pass script objects to the browser. The container
+    // tracks ownership of script objects in order to allow browser references
+    // to them to be dropped when clearScriptObjects is called.
+    virtual void allowScriptObjects() = 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;
+
+    // Notifies that the zoom level has changed.
+    // Note, this does NOT affect pageScaleFactor or pageZoomFactor
+    virtual void zoomLevelChanged(double zoomLevel) = 0;
+
+    // Determines whether the given rectangle in this plugin is above all other
+    // content. The rectangle is in the plugin's coordinate system.
+    virtual bool isRectTopmost(const WebRect&) = 0;
+
+    // Notifies when the plugin changes the kind of touch-events it accepts.
+    virtual void requestTouchEventType(TouchEventRequestType) = 0;
+
+    // Notifies when the plugin starts/stops accepting wheel events. Without
+    // calling the function with true, the container might not always able to
+    // receive wheel events in some cases (such as when threaded compositing
+    // is in use but a scroll bar is not in use).
+    virtual void setWantsWheelEvents(bool) = 0;
+
+    // Converts view's window coordinates to plugin's local coordinates.
+    virtual WebPoint windowToLocalPoint(const WebPoint&) = 0;
+
+    // Converts plugin's local coordinate to view's window coordinates.
+    virtual WebPoint localToWindowPoint(const WebPoint&) = 0;
+
+    virtual WebPlugin* plugin() = 0;
+    virtual void setPlugin(WebPlugin*) = 0;
+
+    virtual float deviceScaleFactor() = 0;
+    virtual float pageScaleFactor() = 0;
+    virtual float pageZoomFactor() = 0;
+
+    // Sets the layer representing the plugin for compositing. The
+    // WebPluginContainer does *not* take ownership.
+    virtual void setWebLayer(WebLayer*) = 0;
+
+protected:
+    ~WebPluginContainer() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPluginDocument.h b/public/webpage/WebPluginDocument.h
new file mode 100644
index 0000000..d7aa0d2
--- /dev/null
+++ b/public/webpage/WebPluginDocument.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2010 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 WebPluginDocument_h
+#define WebPluginDocument_h
+
+#include "WebDocument.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class PluginDocument; }
+#endif
+
+namespace WebKit {
+class WebPlugin;
+
+// Wraps a WebDocument for full page plugins.
+class WebPluginDocument : public WebDocument {
+public:
+    WebPluginDocument() { }
+    WebPluginDocument(const WebPluginDocument& e) : WebDocument(e) { }
+
+    WebPluginDocument& operator=(const WebPluginDocument& e)
+    {
+        WebNode::assign(e);
+        return *this;
+    }
+    void assign(const WebPluginDocument& d) { WebNode::assign(d); }
+
+    WEBKIT_EXPORT WebPlugin* plugin();
+
+#if WEBKIT_IMPLEMENTATION
+    WebPluginDocument(const WTF::PassRefPtr<WebCore::PluginDocument>&);
+    WebPluginDocument& operator=(const WTF::PassRefPtr<WebCore::PluginDocument>&);
+    operator WTF::PassRefPtr<WebCore::PluginDocument>() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPluginListBuilder.h b/public/webpage/WebPluginListBuilder.h
new file mode 100644
index 0000000..6c0614d
--- /dev/null
+++ b/public/webpage/WebPluginListBuilder.h
@@ -0,0 +1,31 @@
+/*
+ * 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 "../platform/WebPluginListBuilder.h"
diff --git a/public/webpage/WebPluginParams.h b/public/webpage/WebPluginParams.h
new file mode 100644
index 0000000..af92acf
--- /dev/null
+++ b/public/webpage/WebPluginParams.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebPluginParams_h
+#define WebPluginParams_h
+
+#include "../platform/WebString.h"
+#include "../platform/WebURL.h"
+#include "../platform/WebVector.h"
+
+namespace WebKit {
+
+struct WebPluginParams {
+    WebURL url;
+    WebString mimeType;
+    WebVector<WebString> attributeNames;
+    WebVector<WebString> attributeValues;
+    bool loadManually;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPluginScrollbar.h b/public/webpage/WebPluginScrollbar.h
new file mode 100644
index 0000000..7715b45
--- /dev/null
+++ b/public/webpage/WebPluginScrollbar.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2012 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 INC. AND ITS 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 APPLE INC. OR ITS 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 WebPluginScrollbar_h
+#define WebPluginScrollbar_h
+
+#include "../platform/WebCanvas.h"
+#include "../platform/WebScrollbar.h"
+
+namespace WebKit {
+
+class WebInputEvent;
+class WebPluginContainer;
+class WebPluginScrollbarClient;
+struct WebRect;
+
+class WebPluginScrollbar : public WebScrollbar {
+public:
+    // Creates a WebPluginScrollbar for use by a plugin. The plugin container and
+    // client are guaranteed to outlive this object.
+    WEBKIT_EXPORT static WebPluginScrollbar* createForPlugin(WebScrollbar::Orientation,
+                                                             WebPluginContainer*,
+                                                             WebPluginScrollbarClient*);
+
+    virtual ~WebPluginScrollbar() { }
+
+    // Gets the thickness of the scrollbar in pixels.
+    WEBKIT_EXPORT static int defaultThickness();
+
+    // Sets the rectangle of the scrollbar.
+    virtual void setLocation(const WebRect&) = 0;
+
+    // Sets the size of the scrollable region in pixels, i.e. if a document is
+    // 800x10000 pixels and the viewport is 1000x1000 pixels, then setLocation
+    // for the vertical scrollbar would have passed in a rectangle like:
+    //            (800 - defaultThickness(), 0) (defaultThickness() x 10000)
+    // and setDocumentSize(10000)
+    virtual void setDocumentSize(int) = 0;
+
+    // Sets the current value.
+    virtual void setValue(int position) = 0;
+
+    // Scroll back or forward with the given granularity.
+    virtual void scroll(ScrollDirection, ScrollGranularity, float multiplier) = 0;
+
+    // Paint the given rectangle.
+    virtual void paint(WebCanvas*, const WebRect&) = 0;
+
+    // Returns true iff the given event was used.
+    virtual bool handleInputEvent(const WebInputEvent&) = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPluginScrollbarClient.h b/public/webpage/WebPluginScrollbarClient.h
new file mode 100644
index 0000000..bc5a124
--- /dev/null
+++ b/public/webpage/WebPluginScrollbarClient.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2012 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 INC. AND ITS 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 APPLE INC. OR ITS 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 WebPluginScrollbarClient_h
+#define WebPluginScrollbarClient_h
+
+namespace WebKit {
+
+class WebPluginScrollbar;
+struct WebRect;
+template <typename T> class WebVector;
+
+class WebPluginScrollbarClient {
+public:
+    virtual void valueChanged(WebPluginScrollbar*) = 0;
+    virtual void overlayChanged(WebPluginScrollbar*) = 0;
+    virtual void invalidateScrollbarRect(WebPluginScrollbar*, const WebRect&) = 0;
+    virtual void getTickmarks(WebPluginScrollbar*, WebVector<WebRect>*) const = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPopupMenu.h b/public/webpage/WebPopupMenu.h
new file mode 100644
index 0000000..2acd53e
--- /dev/null
+++ b/public/webpage/WebPopupMenu.h
@@ -0,0 +1,51 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "WebWidget.h"
+
+namespace WebKit {
+
+class WebWidgetClient;
+
+class WebPopupMenu : public WebWidget {
+public:
+    WEBKIT_EXPORT static WebPopupMenu* create(WebWidgetClient*);
+
+    // Sets the minimum height of a popup listbox row.
+    WEBKIT_EXPORT static void setMinimumRowHeight(int);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPopupMenuInfo.h b/public/webpage/WebPopupMenuInfo.h
new file mode 100644
index 0000000..45339ac
--- /dev/null
+++ b/public/webpage/WebPopupMenuInfo.h
@@ -0,0 +1,51 @@
+/*
+ * 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 "../platform/WebVector.h"
+#include "WebMenuItemInfo.h"
+
+namespace WebKit {
+
+// Describes the contents of a popup menu.
+struct WebPopupMenuInfo {
+    int itemHeight;
+    int itemFontSize;
+    int selectedIndex;
+    WebVector<WebMenuItemInfo> items;
+    bool rightAligned;
+    bool allowMultipleSelection;
+};
+
+}
+
+#endif
diff --git a/public/webpage/WebPopupType.h b/public/webpage/WebPopupType.h
new file mode 100644
index 0000000..1a84dd6
--- /dev/null
+++ b/public/webpage/WebPopupType.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 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 WebPopupType_h
+#define WebPopupType_h
+
+namespace WebKit {
+
+enum WebPopupType {
+    WebPopupTypeNone, // Not a popup.
+    WebPopupTypeSelect, // An HTML select (combo-box) popup.
+    WebPopupTypeSuggestion, // An autofill/autocomplete popup.
+    WebPopupTypePage, // An HTML-capable popup.
+    WebPopupTypeHelperPlugin, // An off-screen helper plugin.
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPrerendererClient.h b/public/webpage/WebPrerendererClient.h
new file mode 100644
index 0000000..3f73fed
--- /dev/null
+++ b/public/webpage/WebPrerendererClient.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2012 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 WebPrerendererClient_h
+#define WebPrerendererClient_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+class WebPrerender;
+
+class WebPrerendererClient {
+public:
+    virtual void willAddPrerender(WebPrerender*) = 0;
+};
+
+} // namespace WebPrerendererClient_h
+
+#endif // WebPrerendererClient_h
diff --git a/public/webpage/WebPrintParams.h b/public/webpage/WebPrintParams.h
new file mode 100644
index 0000000..d79260a
--- /dev/null
+++ b/public/webpage/WebPrintParams.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2012 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 WebPrintParams_h
+#define WebPrintParams_h
+
+#include "../platform/WebRect.h"
+#include "../platform/WebSize.h"
+#include "WebPrintScalingOption.h"
+
+namespace WebKit {
+
+struct WebPrintParams {
+    // Specifies printable content rect in points (a point is 1/72 of an inch).
+    WebRect printContentArea;
+
+    // Specifies the selected printer default printable area details in
+    // points.
+    WebRect printableArea;
+
+    // Specifies the selected printer default paper size in points.
+    WebSize paperSize;
+
+    // Specifies user selected DPI for printing.
+    int printerDPI;
+
+    // Specifies whether to reduce/enlarge/retain the print contents to fit the
+    // printable area. (This is used only by plugin printing).
+    WebPrintScalingOption printScalingOption;
+
+    WebPrintParams()
+        : printerDPI(72)
+        , printScalingOption(WebPrintScalingOptionFitToPrintableArea) { }
+
+    WebPrintParams(const WebSize& paperSize)
+        : printContentArea(WebRect(0, 0, paperSize.width, paperSize.height))
+        , printableArea(WebRect(0, 0, paperSize.width, paperSize.height))
+        , paperSize(paperSize)
+        , printerDPI(72)
+        , printScalingOption(WebPrintScalingOptionSourceSize) { }
+
+    WebPrintParams(const WebRect& printContentArea, const WebRect& printableArea, const WebSize& paperSize, int printerDPI, WebPrintScalingOption printScalingOption)
+        : printContentArea(printContentArea)
+        , printableArea(printableArea)
+        , paperSize(paperSize)
+        , printerDPI(printerDPI)
+        , printScalingOption(printScalingOption) { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebPrintScalingOption.h b/public/webpage/WebPrintScalingOption.h
new file mode 100644
index 0000000..95dbb89
--- /dev/null
+++ b/public/webpage/WebPrintScalingOption.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2012 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 WebPrintScalingOption_h
+#define WebPrintScalingOption_h
+
+namespace WebKit {
+
+enum WebPrintScalingOption {
+    WebPrintScalingOptionNone, // Prints the upper left of a page without scaling. Crop the page contents that don't fit on the paper.
+    WebPrintScalingOptionFitToPrintableArea, // Reduces or enlarges each page to fit the printable area of the selected printer paper size.
+    WebPrintScalingOptionSourceSize, // Print output page size is same as the actual source page size. Do not scale/center/fit to printable area.
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebRange.h b/public/webpage/WebRange.h
new file mode 100644
index 0000000..18cfc54
--- /dev/null
+++ b/public/webpage/WebRange.h
@@ -0,0 +1,95 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebVector.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class Range; }
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+
+struct WebFloatQuad;
+class WebFrame;
+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_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebRange&);
+
+    bool isNull() const { return !m_private; }
+
+    WEBKIT_EXPORT int startOffset() const;
+    WEBKIT_EXPORT int endOffset() const;
+    WEBKIT_EXPORT WebNode startContainer(int& exceptionCode) const;
+    WEBKIT_EXPORT WebNode endContainer(int& exceptionCode) const;
+
+    WEBKIT_EXPORT WebString toHTMLText() const;
+    WEBKIT_EXPORT WebString toPlainText() const;
+
+    WEBKIT_EXPORT WebRange expandedToParagraph() const;
+
+    WEBKIT_EXPORT static WebRange fromDocumentRange(WebFrame*, int start, int length);
+
+    WEBKIT_EXPORT WebVector<WebFloatQuad> textQuads() 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/public/webpage/WebRuntimeFeatures.h b/public/webpage/WebRuntimeFeatures.h
new file mode 100644
index 0000000..fb91764
--- /dev/null
+++ b/public/webpage/WebRuntimeFeatures.h
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2013 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 "../platform/WebCommon.h"
+
+namespace WebKit {
+
+// This class is used to enable runtime features of Blink.
+// All features are disabled by default.
+// Most clients should call enableStableFeatures() to enable
+// features Blink has made API commitments to.
+class WebRuntimeFeatures {
+public:
+    WEBKIT_EXPORT static void enableStableFeatures(bool);
+    WEBKIT_EXPORT static void enableExperimentalFeatures(bool);
+    WEBKIT_EXPORT static void enableTestOnlyFeatures(bool);
+
+    // FIXME: Delete after removing all callers in Content.
+    static void enableFullScreenAPI(bool enable) { enableFullscreen(enable); }
+    static void enableIndexedDatabase(bool enable) { enableIndexedDB(enable); }
+
+    WEBKIT_EXPORT static void enableApplicationCache(bool);
+    WEBKIT_EXPORT static bool isApplicationCacheEnabled();
+
+    WEBKIT_EXPORT static void enableCanvasPath(bool);
+    WEBKIT_EXPORT static bool isCanvasPathEnabled();
+
+    WEBKIT_EXPORT static void enableCSSCompositing(bool);
+    WEBKIT_EXPORT static bool isCSSCompositingEnabled();
+
+    WEBKIT_EXPORT static void enableCSSExclusions(bool);
+    WEBKIT_EXPORT static bool isCSSExclusionsEnabled();
+
+    WEBKIT_EXPORT static void enableCSSRegions(bool);
+    WEBKIT_EXPORT static bool isCSSRegionsEnabled();
+
+    WEBKIT_EXPORT static void enableCSSTouchAction(bool);
+    WEBKIT_EXPORT static bool isCSSTouchActionEnabled();
+
+    WEBKIT_EXPORT static void enableCustomDOMElements(bool);
+    WEBKIT_EXPORT static bool isCustomDOMElementsEnabled();
+
+    WEBKIT_EXPORT static void enableDatabase(bool);
+    WEBKIT_EXPORT static bool isDatabaseEnabled();
+
+    WEBKIT_EXPORT static void enableDeviceMotion(bool);
+    WEBKIT_EXPORT static bool isDeviceMotionEnabled();
+
+    WEBKIT_EXPORT static void enableDeviceOrientation(bool);
+    WEBKIT_EXPORT static bool isDeviceOrientationEnabled();
+
+    WEBKIT_EXPORT static void enableDialogElement(bool);
+    WEBKIT_EXPORT static bool isDialogElementEnabled();
+
+    WEBKIT_EXPORT static void enableDirectoryUpload(bool);
+    WEBKIT_EXPORT static bool isDirectoryUploadEnabled();
+
+    WEBKIT_EXPORT static void enableEncryptedMedia(bool);
+    WEBKIT_EXPORT static bool isEncryptedMediaEnabled();
+
+    WEBKIT_EXPORT static void enableLegacyEncryptedMedia(bool);
+    WEBKIT_EXPORT static bool isLegacyEncryptedMediaEnabled();
+
+    WEBKIT_EXPORT static void enableExperimentalCanvasFeatures(bool);
+    WEBKIT_EXPORT static bool isExperimentalCanvasFeaturesEnabled();
+
+    WEBKIT_EXPORT static void enableExperimentalContentSecurityPolicyFeatures(bool);
+    WEBKIT_EXPORT static bool isExperimentalContentSecurityPolicyFeaturesEnabled();
+
+    WEBKIT_EXPORT static void enableExperimentalShadowDOM(bool);
+    WEBKIT_EXPORT static bool isExperimentalShadowDOMEnabled();
+
+    WEBKIT_EXPORT static void enableExperimentalWebSocket(bool);
+    WEBKIT_EXPORT static bool isExperimentalWebSocketEnabled();
+
+    WEBKIT_EXPORT static void enableFileSystem(bool);
+    WEBKIT_EXPORT static bool isFileSystemEnabled();
+
+    WEBKIT_EXPORT static void enableFontLoadEvents(bool);
+    WEBKIT_EXPORT static bool isFontLoadEventsEnabled();
+
+    WEBKIT_EXPORT static void enableFullscreen(bool);
+    WEBKIT_EXPORT static bool isFullscreenEnabled();
+
+    WEBKIT_EXPORT static void enableGamepad(bool);
+    WEBKIT_EXPORT static bool isGamepadEnabled();
+
+    WEBKIT_EXPORT static void enableGeolocation(bool);
+    WEBKIT_EXPORT static bool isGeolocationEnabled();
+
+    WEBKIT_EXPORT static void enableIMEAPI(bool);
+    WEBKIT_EXPORT static bool isIMEAPIEnabled();
+
+    WEBKIT_EXPORT static void enableIndexedDB(bool);
+    WEBKIT_EXPORT static bool isIndexedDBEnabled();
+
+    WEBKIT_EXPORT static void enableInputTypeWeek(bool);
+    WEBKIT_EXPORT static bool isInputTypeWeekEnabled();
+
+    WEBKIT_EXPORT static void enableJavaScriptI18NAPI(bool);
+    WEBKIT_EXPORT static bool isJavaScriptI18NAPIEnabled();
+
+    WEBKIT_EXPORT static void enableLazyLayout(bool);
+    WEBKIT_EXPORT static bool isLazyLayoutEnabled();
+
+    WEBKIT_EXPORT static void enableLocalStorage(bool);
+    WEBKIT_EXPORT static bool isLocalStorageEnabled();
+
+    WEBKIT_EXPORT static void enableMediaPlayer(bool);
+    WEBKIT_EXPORT static bool isMediaPlayerEnabled();
+
+    WEBKIT_EXPORT static void enableMediaSource(bool);
+    WEBKIT_EXPORT static bool isMediaSourceEnabled();
+
+    WEBKIT_EXPORT static void enableWebKitMediaSource(bool);
+    WEBKIT_EXPORT static bool isWebKitMediaSourceEnabled();
+
+    WEBKIT_EXPORT static void enableMediaStream(bool);
+    WEBKIT_EXPORT static bool isMediaStreamEnabled();
+
+    WEBKIT_EXPORT static void enableNotifications(bool);
+    WEBKIT_EXPORT static bool isNotificationsEnabled();
+
+    WEBKIT_EXPORT static void enablePagePopup(bool);
+    WEBKIT_EXPORT static bool isPagePopupEnabled();
+
+    WEBKIT_EXPORT static void enableParseSVGAsHTML(bool);
+    WEBKIT_EXPORT static bool isParseSVGAsHTMLEnabled();
+
+    WEBKIT_EXPORT static void enablePeerConnection(bool);
+    WEBKIT_EXPORT static bool isPeerConnectionEnabled();
+
+    WEBKIT_EXPORT static void enableQuota(bool);
+    WEBKIT_EXPORT static bool isQuotaEnabled();
+
+    WEBKIT_EXPORT static void enableRequestAutocomplete(bool);
+    WEBKIT_EXPORT static bool isRequestAutocompleteEnabled();
+
+    WEBKIT_EXPORT static void enableScriptedSpeech(bool);
+    WEBKIT_EXPORT static bool isScriptedSpeechEnabled();
+
+    WEBKIT_EXPORT static void enableSeamlessIFrames(bool);
+    WEBKIT_EXPORT static bool isSeamlessIFramesEnabled();
+
+    WEBKIT_EXPORT static void enableSessionStorage(bool);
+    WEBKIT_EXPORT static bool isSessionStorageEnabled();
+
+    WEBKIT_EXPORT static void enableSpeechInput(bool);
+    WEBKIT_EXPORT static bool isSpeechInputEnabled();
+
+    WEBKIT_EXPORT static void enableSpeechSynthesis(bool);
+    WEBKIT_EXPORT static bool isSpeechSynthesisEnabled();
+
+    WEBKIT_EXPORT static void enableStyleScoped(bool);
+    WEBKIT_EXPORT static bool isStyleScopedEnabled();
+
+    WEBKIT_EXPORT static void enableTouch(bool);
+    WEBKIT_EXPORT static bool isTouchEnabled();
+
+    WEBKIT_EXPORT static void enableVideoTrack(bool);
+    WEBKIT_EXPORT static bool isVideoTrackEnabled();
+
+    WEBKIT_EXPORT static void enableWebAudio(bool);
+    WEBKIT_EXPORT static bool isWebAudioEnabled();
+
+    WEBKIT_EXPORT static void enableWebGLDraftExtensions(bool);
+    WEBKIT_EXPORT static bool isWebGLDraftExtensionsEnabled();
+
+    WEBKIT_EXPORT static void enableWebMIDI(bool);
+    WEBKIT_EXPORT static bool isWebMIDIEnabled();
+
+    WEBKIT_EXPORT static void enableWebPInAcceptHeader(bool);
+    WEBKIT_EXPORT static bool isWebPInAcceptHeaderEnabled();
+
+    WEBKIT_EXPORT static void enableDataListElement(bool);
+    WEBKIT_EXPORT static bool isDataListElementEnabled();
+
+    WEBKIT_EXPORT static void enableInputTypeColor(bool);
+    WEBKIT_EXPORT static bool isInputTypeColorEnabled();
+
+private:
+    WebRuntimeFeatures();
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebScopedMicrotaskSuppression.h b/public/webpage/WebScopedMicrotaskSuppression.h
new file mode 100644
index 0000000..21562bd
--- /dev/null
+++ b/public/webpage/WebScopedMicrotaskSuppression.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2012 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 WebScopedMicrotaskSuppression_h
+#define WebScopedMicrotaskSuppression_h
+
+#include "../platform/WebPrivateOwnPtr.h"
+
+namespace WebKit {
+
+// This class wraps V8RecursionScope::BypassMicrotaskCheckpoint. Please
+// see V8RecursionScope.h for full usage. Short story: Embedder calls into
+// script contexts which also host page script must do one of two things:
+//
+//   1. If the call may cause any page/author script to run, it must be
+//      captured for pre/post work (e.g. inspector instrumentation/microtask
+//      delivery) and thus be invoked through WebFrame (e.g. executeScript*,
+//      callFunction*).
+//   2. If the call will not cause any page/author script to run, the call
+//      should be made directly via the v8 context, but the callsite must be
+//      accompanied by a stack allocated WebScopedMicrotaskSuppression, e.g.:
+//
+//        ...
+//        {
+//            WebKit::WebScopedMicrotaskSuppression suppression;
+//            func->Call(global, argv, args);
+//        }
+//        ...
+//
+class WebScopedMicrotaskSuppression {
+public:
+    WebScopedMicrotaskSuppression() { initialize(); }
+    ~WebScopedMicrotaskSuppression() { reset(); }
+
+private:
+    WEBKIT_EXPORT void initialize();
+    WEBKIT_EXPORT void reset();
+
+#ifndef NDEBUG
+    class Impl;
+    WebPrivateOwnPtr<Impl> m_impl;
+#endif
+};
+
+} // WebKit
+
+#endif
diff --git a/public/webpage/WebScopedUserGesture.h b/public/webpage/WebScopedUserGesture.h
new file mode 100644
index 0000000..0401dbc
--- /dev/null
+++ b/public/webpage/WebScopedUserGesture.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2011 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 WebScopedUserGesture_h
+#define WebScopedUserGesture_h
+
+#include "../platform/WebPrivateOwnPtr.h"
+
+namespace WebCore {
+class UserGestureIndicator;
+}
+
+namespace WebKit {
+
+class WebUserGestureToken;
+
+// An instance of this class, while kept alive, will indicate that we are in
+// the context of a known user gesture. To use, create one, perform whatever
+// actions were done under color of a known user gesture, and then delete it.
+// Usually this will be done on the stack.
+//
+// SECURITY WARNING: Do not create several instances of this class for the same
+// user gesture. Doing so might enable malicious code to work around certain
+// restrictions such as opening multiple windows.
+// Instead, obtain the current WebUserGestureToken from the
+// WebUserGestureIndicator, and use this token to create a
+// WebScopedUserGesture. If the token was alrady consumed, the new
+// WebScopedUserGesture will not indicate that we are in the context of a user
+// gesture.
+class WebScopedUserGesture {
+public:
+    explicit WebScopedUserGesture(const WebUserGestureToken& token) { initializeWithToken(token); }
+    WebScopedUserGesture() { initialize(); }
+    ~WebScopedUserGesture() { reset(); }
+
+private:
+    WEBKIT_EXPORT void initialize();
+    WEBKIT_EXPORT void initializeWithToken(const WebUserGestureToken&);
+    WEBKIT_EXPORT void reset();
+
+    WebPrivateOwnPtr<WebCore::UserGestureIndicator> m_indicator;
+};
+
+} // namespace WebKit
+
+#endif // WebScopedUserGesture_h
diff --git a/public/webpage/WebScreenInfo.h b/public/webpage/WebScreenInfo.h
new file mode 100644
index 0000000..136f139
--- /dev/null
+++ b/public/webpage/WebScreenInfo.h
@@ -0,0 +1,31 @@
+/*
+ * 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 "../platform/WebScreenInfo.h"
diff --git a/public/webpage/WebScriptController.h b/public/webpage/WebScriptController.h
new file mode 100644
index 0000000..b5a2ec3
--- /dev/null
+++ b/public/webpage/WebScriptController.h
@@ -0,0 +1,64 @@
+/*
+ * 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 "../platform/WebCommon.h"
+
+namespace v8 {
+class Extension;
+}
+
+namespace WebKit {
+
+class WebScriptController {
+public:
+    // Registers a v8 extension to be available on webpages. Will only affect
+    // v8 contexts initialized after this call. Takes ownership of the
+    // v8::Extension object passed.
+    WEBKIT_EXPORT static void registerExtension(v8::Extension*);
+
+    // 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_EXPORT static void enableV8SingleThreadMode();
+
+    // Process any pending JavaScript console messages.
+    WEBKIT_EXPORT static void flushConsoleMessages();
+
+private:
+    WebScriptController();
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebScriptSource.h b/public/webpage/WebScriptSource.h
new file mode 100644
index 0000000..baf082c
--- /dev/null
+++ b/public/webpage/WebScriptSource.h
@@ -0,0 +1,54 @@
+/*
+ * 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 "../platform/WebString.h"
+#include "../platform/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/public/webpage/WebSearchableFormData.h b/public/webpage/WebSearchableFormData.h
new file mode 100644
index 0000000..041e494
--- /dev/null
+++ b/public/webpage/WebSearchableFormData.h
@@ -0,0 +1,70 @@
+/*
+ * 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 "../platform/WebString.h"
+#include "../platform/WebURL.h"
+#include "WebInputElement.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.
+    WEBKIT_EXPORT WebSearchableFormData(const WebFormElement&, const WebInputElement& selectedInputElement = WebInputElement());
+
+    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/public/webpage/WebSecurityOrigin.h b/public/webpage/WebSecurityOrigin.h
new file mode 100644
index 0000000..b511c8b
--- /dev/null
+++ b/public/webpage/WebSecurityOrigin.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2010 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 "../platform/WebCommon.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class SecurityOrigin; }
+namespace WTF { template <typename T> class PassRefPtr; }
+#endif
+
+namespace WebKit {
+
+class WebSecurityOriginPrivate;
+class WebString;
+class WebURL;
+
+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_EXPORT static WebSecurityOrigin createFromDatabaseIdentifier(const WebString& databaseIdentifier);
+    WEBKIT_EXPORT static WebSecurityOrigin createFromString(const WebString&);
+    WEBKIT_EXPORT static WebSecurityOrigin create(const WebURL&);
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebSecurityOrigin&);
+
+    bool isNull() const { return !m_private; }
+
+    WEBKIT_EXPORT WebString protocol() const;
+    WEBKIT_EXPORT WebString host() const;
+    WEBKIT_EXPORT unsigned short port() const;
+
+    // A unique WebSecurityOrigin is the least privileged WebSecurityOrigin.
+    WEBKIT_EXPORT bool isUnique() const;
+
+    // Returns true if this WebSecurityOrigin can script objects in the given
+    // SecurityOrigin. For example, call this function before allowing
+    // script from one security origin to read or write objects from
+    // another SecurityOrigin.
+    WEBKIT_EXPORT bool canAccess(const WebSecurityOrigin&) const;
+
+    // Returns true if this WebSecurityOrigin can read content retrieved from
+    // the given URL. For example, call this function before allowing script
+    // from a given security origin to receive contents from a given URL.
+    WEBKIT_EXPORT bool canRequest(const WebURL&) 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_EXPORT 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_EXPORT WebString databaseIdentifier() const;
+
+    // Returns true if this WebSecurityOrigin can access usernames and 
+    // passwords stored in password manager.
+    WEBKIT_EXPORT bool canAccessPasswordManager() const;
+
+    // Allows this WebSecurityOrigin access to local resources.
+    WEBKIT_EXPORT void grantLoadLocalResources() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebSecurityOrigin(const WTF::PassRefPtr<WebCore::SecurityOrigin>&);
+    WebSecurityOrigin& operator=(const WTF::PassRefPtr<WebCore::SecurityOrigin>&);
+    operator WTF::PassRefPtr<WebCore::SecurityOrigin>() const;
+    WebCore::SecurityOrigin* get() const;
+#endif
+
+private:
+    void assign(WebSecurityOriginPrivate*);
+    WebSecurityOriginPrivate* m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSecurityPolicy.h b/public/webpage/WebSecurityPolicy.h
new file mode 100644
index 0000000..dafd00e
--- /dev/null
+++ b/public/webpage/WebSecurityPolicy.h
@@ -0,0 +1,103 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebReferrerPolicy.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_EXPORT 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_EXPORT static void registerURLSchemeAsNoAccess(const WebString&);
+
+    // Registers a URL scheme to be treated as display-isolated. This means
+    // that pages cannot display these URLs unless they are from the same
+    // scheme. For example, pages in other origin cannot create iframes or
+    // hyperlinks to URLs with the scheme.
+    WEBKIT_EXPORT static void registerURLSchemeAsDisplayIsolated(const WebString&);
+
+    // Registers a URL scheme to not generate mixed content warnings when
+    // included by an HTTPS page.
+    WEBKIT_EXPORT static void registerURLSchemeAsSecure(const WebString&);
+
+    // Registers a non-HTTP URL scheme which can be sent CORS requests.
+    WEBKIT_EXPORT static void registerURLSchemeAsCORSEnabled(const WebString&);
+
+    // Registers a URL scheme whose resources can be loaded regardless of a page's Content Security Policy.
+    WEBKIT_EXPORT static void registerURLSchemeAsBypassingContentSecurityPolicy(const WebString&);
+
+    // Registers a URL scheme as strictly empty documents, allowing them to
+    // commit synchronously.
+    WEBKIT_EXPORT static void registerURLSchemeAsEmptyDocument(const WebString&);
+
+    // Support for whitelisting access to origins beyond the same-origin policy.
+    WEBKIT_EXPORT static void addOriginAccessWhitelistEntry(
+        const WebURL& sourceOrigin, const WebString& destinationProtocol,
+        const WebString& destinationHost, bool allowDestinationSubdomains);
+    WEBKIT_EXPORT static void removeOriginAccessWhitelistEntry(
+        const WebURL& sourceOrigin, const WebString& destinationProtocol,
+        const WebString& destinationHost, bool allowDestinationSubdomains);
+    WEBKIT_EXPORT static void resetOriginAccessWhitelists();
+
+    // Returns whether the url should be allowed to see the referrer
+    // based on their respective protocols.
+    // FIXME: remove this function once the chromium side has landed.
+    WEBKIT_EXPORT static bool shouldHideReferrer(const WebURL&, const WebString& referrer);
+
+    // Returns the referrer modified according to the referrer policy for a
+    // navigation to a given URL. If the referrer returned is empty, the
+    // referrer header should be omitted.
+    WEBKIT_EXPORT static WebString generateReferrerHeader(WebReferrerPolicy, const WebURL&, const WebString& referrer);
+
+    // Registers an URL scheme to not allow manipulation of the loaded page
+    // by bookmarklets or javascript: URLs typed in the omnibox.
+    WEBKIT_EXPORT static void registerURLSchemeAsNotAllowingJavascriptURLs(const WebString&);
+
+private:
+    WebSecurityPolicy();
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSelectElement.h b/public/webpage/WebSelectElement.h
new file mode 100644
index 0000000..d3fc9b8
--- /dev/null
+++ b/public/webpage/WebSelectElement.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2010 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 WebSelectElement_h
+#define WebSelectElement_h
+
+#include "../platform/WebVector.h"
+#include "WebFormControlElement.h"
+#include "WebOptionElement.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class HTMLSelectElement; }
+#endif
+
+namespace WebKit {
+
+// Provides readonly access to some properties of a DOM select element node.
+class WebSelectElement : public WebFormControlElement {
+public:
+    WebSelectElement() : WebFormControlElement() { }
+    WebSelectElement(const WebSelectElement& element) : WebFormControlElement(element) { }
+
+    WebSelectElement& operator=(const WebSelectElement& element)
+    {
+        WebFormControlElement::assign(element);
+        return *this;
+    }
+    void assign(const WebSelectElement& element) { WebFormControlElement::assign(element); }
+
+    WEBKIT_EXPORT void setValue(const WebString&);
+    WEBKIT_EXPORT WebString value() const;
+    WEBKIT_EXPORT WebVector<WebElement> listItems() const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebSelectElement(const WTF::PassRefPtr<WebCore::HTMLSelectElement>&);
+    WebSelectElement& operator=(const WTF::PassRefPtr<WebCore::HTMLSelectElement>&);
+    operator WTF::PassRefPtr<WebCore::HTMLSelectElement>() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSerializedScriptValue.h b/public/webpage/WebSerializedScriptValue.h
new file mode 100644
index 0000000..0958318
--- /dev/null
+++ b/public/webpage/WebSerializedScriptValue.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2010 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 WebSerializedScriptValue_h
+#define WebSerializedScriptValue_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+namespace WebCore { class SerializedScriptValue; }
+
+namespace v8 {
+class Value;
+template <class T> class Handle;
+}
+
+namespace WebKit {
+class WebString;
+
+// FIXME: Should this class be in platform?
+class WebSerializedScriptValue {
+public:
+    ~WebSerializedScriptValue() { reset(); }
+
+    WebSerializedScriptValue() { }
+    WebSerializedScriptValue(const WebSerializedScriptValue& d) { assign(d); }
+    WebSerializedScriptValue& operator=(const WebSerializedScriptValue& d)
+    {
+        assign(d);
+        return *this;
+    }
+
+    WEBKIT_EXPORT static WebSerializedScriptValue fromString(const WebString&);
+
+    WEBKIT_EXPORT static WebSerializedScriptValue serialize(v8::Handle<v8::Value>);
+
+    // Create a WebSerializedScriptValue that represents a serialization error.
+    WEBKIT_EXPORT static WebSerializedScriptValue createInvalid();
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebSerializedScriptValue&);
+
+    bool isNull() const { return m_private.isNull(); }
+
+    // Returns a string representation of the WebSerializedScriptValue.
+    WEBKIT_EXPORT WebString toString() const;
+
+    // Convert the serialized value to a parsed v8 value.
+    WEBKIT_EXPORT v8::Handle<v8::Value> deserialize();
+
+#if WEBKIT_IMPLEMENTATION
+    WebSerializedScriptValue(const WTF::PassRefPtr<WebCore::SerializedScriptValue>&);
+    WebSerializedScriptValue& operator=(const WTF::PassRefPtr<WebCore::SerializedScriptValue>&);
+    operator WTF::PassRefPtr<WebCore::SerializedScriptValue>() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::SerializedScriptValue> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSettings.h b/public/webpage/WebSettings.h
new file mode 100644
index 0000000..6854fb7
--- /dev/null
+++ b/public/webpage/WebSettings.h
@@ -0,0 +1,187 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebSize.h"
+#include <unicode/uscript.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:
+    enum EditingBehavior {
+        EditingBehaviorMac,
+        EditingBehaviorWin,
+        EditingBehaviorUnix,
+        EditingBehaviorAndroid
+    };
+
+    virtual bool scrollAnimatorEnabled() const = 0;
+    virtual bool touchEditingEnabled() const = 0;
+    virtual bool viewportEnabled() const = 0;
+    virtual void setAccelerated2dCanvasEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingFor3DTransformsEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingForAnimationEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingForCanvasEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingForFixedPositionEnabled(bool)  = 0;
+    virtual void setAcceleratedCompositingForOverflowScrollEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingForTransitionEnabled(bool)  = 0;
+    virtual void setAcceleratedCompositingForPluginsEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingForScrollableFramesEnabled(bool) = 0;
+    virtual void setAcceleratedCompositingForVideoEnabled(bool) = 0;
+    virtual void setAcceleratedFiltersEnabled(bool) = 0;
+    virtual void setAllowDisplayOfInsecureContent(bool) = 0;
+    virtual void setAllowFileAccessFromFileURLs(bool) = 0;
+    virtual void setAllowCustomScrollbarInMainFrame(bool) = 0;
+    virtual void setAllowRunningOfInsecureContent(bool) = 0;
+    virtual void setAllowScriptsToCloseWindows(bool) = 0;
+    virtual void setAllowUniversalAccessFromFileURLs(bool) = 0;
+    virtual void setAntialiased2dCanvasEnabled(bool) = 0;
+    virtual void setAsynchronousSpellCheckingEnabled(bool) = 0;
+    virtual void setAutoZoomFocusedNodeToLegibleScale(bool) = 0;
+    virtual void setAuthorAndUserStylesEnabled(bool) = 0;
+    virtual void setCaretBrowsingEnabled(bool) = 0;
+    virtual void setCompositedScrollingForFramesEnabled(bool) = 0;
+    virtual void setCookieEnabled(bool) = 0;
+    virtual void setCursiveFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0;
+    virtual void setDNSPrefetchingEnabled(bool) = 0;
+    virtual void setDOMPasteAllowed(bool) = 0;
+    virtual void setDefaultFixedFontSize(int) = 0;
+    virtual void setDefaultFontSize(int) = 0;
+    virtual void setDefaultTextEncodingName(const WebString&) = 0;
+    virtual void setDefaultVideoPosterURL(const WebString&) = 0;
+    void setDeferred2dCanvasEnabled(bool) { } // temporary stub
+    virtual void setDeferredImageDecodingEnabled(bool) = 0;
+    virtual void setDeviceSupportsMouse(bool) = 0;
+    virtual void setDeviceSupportsTouch(bool) = 0;
+    virtual void setDoubleTapToZoomEnabled(bool) = 0;
+    virtual void setDownloadableBinaryFontsEnabled(bool) = 0;
+    virtual void setEditableLinkBehaviorNeverLive() = 0;
+    virtual void setEditingBehavior(EditingBehavior) = 0;
+    virtual void setEnableScrollAnimator(bool) = 0;
+    virtual void setEnableTouchAdjustment(bool) = 0;
+    virtual void setExperimentalCSSCustomFilterEnabled(bool) = 0;
+    virtual void setExperimentalCSSGridLayoutEnabled(bool) = 0;
+    virtual void setCSSStickyPositionEnabled(bool) = 0;
+    virtual void setExperimentalWebGLEnabled(bool) = 0;
+    virtual void setExperimentalWebSocketEnabled(bool) = 0;
+    virtual void setPinchVirtualViewportEnabled(bool) = 0;
+    virtual void setFantasyFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0;
+    virtual void setFixedFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0;
+    virtual void setFixedPositionCreatesStackingContext(bool) = 0;
+    virtual void setFontRenderingModeNormal() = 0;
+    virtual void setForceCompositingMode(bool) = 0;
+    virtual void setFullScreenEnabled(bool) = 0;
+    virtual void setGestureTapHighlightEnabled(bool) = 0;
+    virtual void setHyperlinkAuditingEnabled(bool) = 0;
+    virtual void setImagesEnabled(bool) = 0;
+    virtual void setJavaEnabled(bool) = 0;
+    virtual void setJavaScriptCanAccessClipboard(bool) = 0;
+    virtual void setJavaScriptCanOpenWindowsAutomatically(bool) = 0;
+    virtual void setJavaScriptEnabled(bool) = 0;
+    virtual void setLayoutFallbackWidth(int) = 0;
+    virtual void setLoadsImagesAutomatically(bool) = 0;
+    virtual void setLoadWithOverviewMode(bool) = 0;
+    virtual void setLocalStorageEnabled(bool) = 0;
+    virtual void setMediaPlaybackRequiresUserGesture(bool) = 0;
+    virtual void setMemoryInfoEnabled(bool) = 0;
+    virtual void setMinimumAccelerated2dCanvasSize(int) = 0;
+    virtual void setMinimumFontSize(int) = 0;
+    virtual void setMinimumLogicalFontSize(int) = 0;
+    virtual void setMockScrollbarsEnabled(bool) = 0;
+    virtual void setNeedsSiteSpecificQuirks(bool) = 0;
+    virtual void setOfflineWebApplicationCacheEnabled(bool) = 0;
+    virtual void setOpenGLMultisamplingEnabled(bool) = 0;
+    virtual void setPasswordEchoDurationInSeconds(double) = 0;
+    virtual void setPasswordEchoEnabled(bool) = 0;
+    virtual void setPerTilePaintingEnabled(bool) = 0;
+    virtual void setPictographFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0;
+    virtual void setPluginsEnabled(bool) = 0;
+    virtual void setPrivilegedWebGLExtensionsEnabled(bool) = 0;
+    virtual void setRenderVSyncNotificationEnabled(bool) = 0;
+    virtual void setSansSerifFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0;
+    virtual void setSelectTrailingWhitespaceEnabled(bool) = 0;
+    virtual void setSelectionIncludesAltImageText(bool) = 0;
+    virtual void setSerifFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0;
+    virtual void setShouldPrintBackgrounds(bool) = 0;
+    virtual void setShouldRespectImageOrientation(bool) = 0;
+    virtual void setShowDebugBorders(bool) = 0;
+    virtual void setShowFPSCounter(bool) = 0;
+    virtual void setShowPaintRects(bool) = 0;
+    virtual void setShrinksStandaloneImagesToFit(bool) = 0;
+    virtual void setSmartInsertDeleteEnabled(bool) = 0;
+    virtual void setSpatialNavigationEnabled(bool) = 0;
+    virtual void setStandardFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0;
+    virtual void setSupportDeprecatedTargetDensityDPI(bool) = 0;
+    virtual void setSupportsMultipleWindows(bool) = 0;
+    virtual void setSyncXHRInDocumentsEnabled(bool) = 0;
+    virtual void setTextAreasAreResizable(bool) = 0;
+    virtual void setTextAutosizingEnabled(bool) = 0;
+    virtual void setTextAutosizingFontScaleFactor(float) = 0;
+    virtual void setTextDirectionSubmenuInclusionBehaviorNeverIncluded() { } // FIXME: Remove once its caller is gone from Chromium
+    virtual void setThreadedHTMLParser(bool) = 0;
+    virtual void setTouchDragDropEnabled(bool) = 0;
+    virtual void setTouchEditingEnabled(bool) = 0;
+    virtual void setUnifiedTextCheckerEnabled(bool) = 0;
+    virtual void setUnsafePluginPastingEnabled(bool) = 0;
+    virtual void setUserStyleSheetLocation(const WebURL&) = 0;
+    virtual void setUsesEncodingDetector(bool) = 0;
+    virtual void setUseWideViewport(bool) = 0;
+    virtual void setValidationMessageTimerMagnification(int) = 0;
+    virtual void setViewportEnabled(bool) = 0;
+    virtual void setVisualWordMovementEnabled(bool) = 0;
+    virtual void setWebAudioEnabled(bool) = 0;
+    virtual void setWebGLErrorsToConsoleEnabled(bool) = 0;
+    virtual void setWebSecurityEnabled(bool) = 0;
+    virtual void setXSSAuditorEnabled(bool) = 0;
+
+    // DEPRECATED: Delete after Chromium-side calls deleted.
+    void setApplyPageScaleFactorInCompositor(bool enabled) { }
+    void setApplyDefaultDeviceScaleFactorInCompositor(bool enabled) { }
+    void setFixedElementsLayoutRelativeToFrame(bool) { }
+    void setInitializeAtMinimumPageScale(bool enabled) { setLoadWithOverviewMode(enabled); }
+
+protected:
+    ~WebSettings() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSharedWorker.h b/public/webpage/WebSharedWorker.h
new file mode 100644
index 0000000..5340ca5
--- /dev/null
+++ b/public/webpage/WebSharedWorker.h
@@ -0,0 +1,94 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "WebContentSecurityPolicy.h"
+
+namespace WebCore {
+class ScriptExecutionContext;
+}
+
+namespace WebKit {
+
+class WebString;
+class WebMessagePortChannel;
+class WebSharedWorkerClient;
+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_EXPORT static WebSharedWorker* create(WebSharedWorkerClient*);
+
+    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,
+                                    const WebString& contentSecurityPolicy,
+                                    WebContentSecurityPolicyType,
+                                    long long scriptResourceAppCacheID) = 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;
+
+    virtual void pauseWorkerContextOnStart() { }
+    virtual void resumeWorkerContext() { }
+    virtual void attachDevTools() { }
+    virtual void reattachDevTools(const WebString& savedState) { }
+    virtual void detachDevTools() { }
+    virtual void dispatchDevToolsMessage(const WebString&) { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSharedWorkerClient.h b/public/webpage/WebSharedWorkerClient.h
new file mode 100644
index 0000000..6f10d5d
--- /dev/null
+++ b/public/webpage/WebSharedWorkerClient.h
@@ -0,0 +1,98 @@
+/*
+ * 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 WebSharedWorkerClient_h
+#define WebSharedWorkerClient_h
+
+#include "../platform/WebMessagePortChannel.h"
+#include "WebCommonWorkerClient.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 WebSharedWorkerClient : public WebCommonWorkerClient {
+public:
+    virtual void postMessageToWorkerObject(
+        const WebString&,
+        const WebMessagePortChannelArray&) = 0;
+
+    virtual void confirmMessageFromWorkerObject(bool hasPendingActivity) = 0;
+    virtual void reportPendingActivity(bool hasPendingActivity) = 0;
+
+    virtual void postExceptionToWorkerObject(
+        const WebString& errorString, int lineNumber,
+        const WebString& sourceURL) = 0;
+
+    // FIXME: the two below are for compatibility only and should be removed
+    // once Chromium is updated to remove message destination parameter
+    // <http://webkit.org/b/37155> and the message type parameter
+    // <http://webkit.org/b/66371>.
+    virtual void postConsoleMessageToWorkerObject(int, int sourceIdentifier, int, int messageLevel,
+                                                  const WebString& message, int lineNumber, const WebString& sourceURL) = 0;
+    virtual void postConsoleMessageToWorkerObject(int sourceIdentifier, int, int messageLevel,
+                                                  const WebString& message, int lineNumber, const WebString& sourceURL)
+    {
+        postConsoleMessageToWorkerObject(0, sourceIdentifier, 0, messageLevel,
+                                         message, lineNumber, sourceURL);
+    }
+
+    virtual void postConsoleMessageToWorkerObject(int sourceIdentifier, int messageLevel,
+                                                  const WebString& message, int lineNumber, const WebString& sourceURL)
+    {
+        postConsoleMessageToWorkerObject(0, sourceIdentifier, messageLevel,
+                                         message, lineNumber, sourceURL);
+    }
+
+    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;
+
+    // Called on the main webkit thread in the worker process during initialization.
+    virtual WebApplicationCacheHost* createApplicationCacheHost(WebApplicationCacheHostClient*) = 0;
+
+    virtual void dispatchDevToolsMessage(const WebString&) { }
+    virtual void saveDevToolsAgentState(const WebString&) { }
+
+protected:
+    ~WebSharedWorkerClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSharedWorkerRepository.h b/public/webpage/WebSharedWorkerRepository.h
new file mode 100644
index 0000000..a5014f7
--- /dev/null
+++ b/public/webpage/WebSharedWorkerRepository.h
@@ -0,0 +1,62 @@
+/*
+ * 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 "../platform/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;
+};
+
+// Initializes shared worker support.
+WEBKIT_EXPORT void setSharedWorkerRepository(WebSharedWorkerRepository*);
+
+} // namespace WebKit
+
+#endif // WebSharedWorkerRepository_h
diff --git a/public/webpage/WebSocket.h b/public/webpage/WebSocket.h
new file mode 100644
index 0000000..5cbad07
--- /dev/null
+++ b/public/webpage/WebSocket.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2011, 2012 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 WebSocket_h
+#define WebSocket_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+namespace WebCore { class WebSocketChannel; }
+
+namespace WebKit {
+
+class WebArrayBuffer;
+class WebDocument;
+class WebString;
+class WebURL;
+class WebSocketClient;
+
+class WebSocket {
+public:
+    enum CloseEventCode {
+        CloseEventCodeNotSpecified = -1,
+        CloseEventCodeNormalClosure = 1000,
+        CloseEventCodeGoingAway = 1001,
+        CloseEventCodeProtocolError = 1002,
+        CloseEventCodeUnsupportedData = 1003,
+        CloseEventCodeFrameTooLarge = 1004,
+        CloseEventCodeNoStatusRcvd = 1005,
+        CloseEventCodeAbnormalClosure = 1006,
+        CloseEventCodeInvalidFramePayloadData = 1007,
+        CloseEventCodePolicyViolation = 1008,
+        CloseEventCodeMessageTooBig = 1009,
+        CloseEventCodeMandatoryExt = 1010,
+        CloseEventCodeInternalError = 1011,
+        CloseEventCodeTLSHandshake = 1015,
+        CloseEventCodeMinimumUserDefined = 3000,
+        CloseEventCodeMaximumUserDefined = 4999
+    };
+
+    enum BinaryType {
+        BinaryTypeBlob = 0,
+        BinaryTypeArrayBuffer = 1
+    };
+
+    WEBKIT_EXPORT static WebSocket* create(const WebDocument&, WebSocketClient*);
+    virtual ~WebSocket() { }
+
+    // These functions come from binaryType attribute of the WebSocket API
+    // specification. It specifies binary object type for receiving binary
+    // frames representation. Receiving text frames are always mapped to
+    // WebString type regardless of this attribute.
+    // Default type is BinaryTypeBlob. But currently it is not supported.
+    // Set BinaryTypeArrayBuffer here ahead of using binary communication.
+    // See also, The WebSocket API - http://www.w3.org/TR/websockets/ .
+    virtual BinaryType binaryType() const = 0;
+    virtual bool setBinaryType(BinaryType) = 0;
+
+    virtual void connect(const WebURL&, const WebString& protocol) = 0;
+    virtual WebString subprotocol() = 0;
+    virtual WebString extensions() = 0;
+    virtual bool sendText(const WebString&) = 0;
+    virtual bool sendArrayBuffer(const WebArrayBuffer&) = 0;
+    virtual unsigned long bufferedAmount() const = 0;
+    virtual void close(int code, const WebString& reason) = 0;
+    virtual void fail(const WebString& reason) = 0;
+    virtual void disconnect() = 0;
+};
+
+} // namespace WebKit
+
+#endif // WebSocket_h
diff --git a/public/webpage/WebSocketClient.h b/public/webpage/WebSocketClient.h
new file mode 100644
index 0000000..3d26518
--- /dev/null
+++ b/public/webpage/WebSocketClient.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2011, 2012 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 WebSocketClient_h
+#define WebSocketClient_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+class WebArrayBuffer;
+class WebString;
+
+class WebSocketClient {
+public:
+    enum ClosingHandshakeCompletionStatus {
+        ClosingHandshakeIncomplete,
+        ClosingHandshakeComplete
+    };
+
+    virtual ~WebSocketClient() { }
+    virtual void didConnect() { }
+    virtual void didReceiveMessage(const WebString& message) { }
+    virtual void didReceiveArrayBuffer(const WebArrayBuffer& arrayBuffer) { }
+    virtual void didReceiveMessageError() { }
+    virtual void didUpdateBufferedAmount(unsigned long bufferedAmount) { }
+    virtual void didStartClosingHandshake() { }
+    virtual void didClose(unsigned long bufferedAmount, ClosingHandshakeCompletionStatus, unsigned short code, const WebString& reason) { }
+};
+
+} // namespace WebKit
+
+#endif // WebSocketClient_h
diff --git a/public/webpage/WebSourceBuffer.h b/public/webpage/WebSourceBuffer.h
new file mode 100644
index 0000000..064626c
--- /dev/null
+++ b/public/webpage/WebSourceBuffer.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 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 WebSourceBuffer_h
+#define WebSourceBuffer_h
+
+#include "WebTimeRange.h"
+
+namespace WebKit {
+
+class WebSourceBuffer {
+public:
+    virtual ~WebSourceBuffer() { }
+
+    virtual WebTimeRanges buffered() = 0;
+    virtual void append(const unsigned char* data, unsigned length) = 0;
+    virtual void abort() = 0;
+    virtual bool setTimestampOffset(double) = 0;
+    virtual void removedFromMediaSource() = 0;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebSpeechGrammar.h b/public/webpage/WebSpeechGrammar.h
new file mode 100644
index 0000000..b1de20a
--- /dev/null
+++ b/public/webpage/WebSpeechGrammar.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 WebSpeechGrammar_h
+#define WebSpeechGrammar_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "../platform/WebURL.h"
+
+namespace WebCore {
+class SpeechGrammar;
+}
+
+namespace WebKit {
+
+class WebSpeechGrammar {
+public:
+    WebSpeechGrammar() { }
+    WebSpeechGrammar(const WebSpeechGrammar& grammar) { assign(grammar); }
+    ~WebSpeechGrammar() { reset(); }
+
+    WEBKIT_EXPORT WebURL src() const;
+    WEBKIT_EXPORT float weight() const;
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebSpeechGrammar&);
+
+#if WEBKIT_IMPLEMENTATION
+    WebSpeechGrammar(const WTF::PassRefPtr<WebCore::SpeechGrammar>&);
+    WebSpeechGrammar& operator=(const WTF::PassRefPtr<WebCore::SpeechGrammar>&);
+#endif
+
+private:
+    WebPrivatePtr<WebCore::SpeechGrammar> m_private;
+};
+
+} // namespace WebKit
+
+#endif // WebSpeechGrammar_h
diff --git a/public/webpage/WebSpeechInputController.h b/public/webpage/WebSpeechInputController.h
new file mode 100644
index 0000000..8320283
--- /dev/null
+++ b/public/webpage/WebSpeechInputController.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2010 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 WebSpeechInputController_h
+#define WebSpeechInputController_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+struct WebRect;
+class WebSecurityOrigin;
+class WebString;
+
+// Provides an embedder API called by WebKit.
+class WebSpeechInputController {
+public:
+    // Starts speech recognition. Speech will get recorded until the endpointer detects silence,
+    // runs to the limit or stopRecording is called. Progress indications and the recognized
+    // text are returned via the listener interface. elementRect is the position
+    // of the element where the user clicked in the RootView coordinate system.
+    virtual bool startRecognition(int requestId, const WebRect& elementRect, const WebString& language, const WebString& grammar, const WebSecurityOrigin& origin)
+    {
+        WEBKIT_ASSERT_NOT_REACHED();
+        return false;
+    }
+
+    // Cancels an ongoing recognition and discards any audio recorded so far. No partial
+    // recognition results are returned to the listener.
+    virtual void cancelRecognition(int) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+    // Stops audio recording and performs recognition with the audio recorded until now
+    // (does not discard audio). This is an optional call and is typically invoked if the user
+    // wants to stop recording audio as soon as they finished speaking. Otherwise, the speech
+    // recording 'endpointer' should detect silence in the input and stop recording automatically.
+    // Call startRecognition() to record audio and recognize speech again.
+    virtual void stopRecording(int) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+protected:
+    virtual ~WebSpeechInputController() { }
+};
+
+} // namespace WebKit
+
+#endif // WebSpeechInputController_h
diff --git a/public/webpage/WebSpeechInputListener.h b/public/webpage/WebSpeechInputListener.h
new file mode 100644
index 0000000..091f984
--- /dev/null
+++ b/public/webpage/WebSpeechInputListener.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2010 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 WebSpeechInputListener_h
+#define WebSpeechInputListener_h
+
+#include "WebSpeechInputResult.h"
+
+namespace WebKit {
+
+class WebString;
+
+// Provides a WebKit API called by the embedder.
+// A typical sequence of calls to the listener would be
+//   1 call to didCompleteRecording
+//   0 or more calls to setRecognitionResult
+//   1 call to didCompleteRecognition
+class WebSpeechInputListener {
+public:
+    // Informs that audio recording has completed and recognition is underway. This gets invoked
+    // irrespective of whether recording was stopped automatically by the 'endpointer' or if
+    // WebSpeechInputController::stopRecording() was called.
+    // Typically after this call the listener would update the UI to reflect that recognition is
+    // in progress.
+    virtual void didCompleteRecording(int) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+    // Gives results from speech recognition, either partial or the final results.
+    // This method can potentially get called multiple times if there are partial results
+    // available as the user keeps speaking. If the speech could not be recognized properly
+    // or if there was any other errors in the process, this method may never be called.
+    virtual void setRecognitionResult(int, const WebSpeechInputResultArray&) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+    // Informs that speech recognition has completed. This gets invoked irrespective of whether
+    // recognition was succesful or not, whether setRecognitionResult() was invoked or not. The
+    // handler typically frees up any temporary resources allocated and waits for the next speech
+    // recognition request.
+    virtual void didCompleteRecognition(int) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+protected:
+    ~WebSpeechInputListener() { }
+};
+
+} // namespace WebKit
+
+#endif // WebSpeechInputListener_h
diff --git a/public/webpage/WebSpeechInputResult.h b/public/webpage/WebSpeechInputResult.h
new file mode 100644
index 0000000..f9e6581
--- /dev/null
+++ b/public/webpage/WebSpeechInputResult.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2010 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 AND ITS 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 APPLE OR ITS 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 WebSpeechInputResult_h
+#define WebSpeechInputResult_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+
+namespace WebCore {
+class SpeechInputResult;
+}
+
+namespace WebKit {
+
+// This class holds one speech recognition result including the text and other related
+// fields, as received from the embedder.
+class WebSpeechInputResult {
+public:
+    WebSpeechInputResult() { }
+    WebSpeechInputResult(const WebSpeechInputResult& other) { assign(other); }
+    ~WebSpeechInputResult() { reset(); }
+
+    WebSpeechInputResult& operator=(const WebSpeechInputResult& other)
+    {
+        assign(other);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void assign(const WebString& utterance, double confidence);
+    WEBKIT_EXPORT void assign(const WebSpeechInputResult& other);
+    WEBKIT_EXPORT void reset();
+
+#if WEBKIT_IMPLEMENTATION
+    WebSpeechInputResult(const WTF::PassRefPtr<WebCore::SpeechInputResult>&);
+    operator WTF::PassRefPtr<WebCore::SpeechInputResult>() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::SpeechInputResult> m_private;
+};
+
+typedef WebVector<WebSpeechInputResult> WebSpeechInputResultArray;
+
+} // namespace WebKit
+
+#endif // WebSpeechInputResult_h
diff --git a/public/webpage/WebSpeechRecognitionHandle.h b/public/webpage/WebSpeechRecognitionHandle.h
new file mode 100644
index 0000000..4a2f6f6
--- /dev/null
+++ b/public/webpage/WebSpeechRecognitionHandle.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2012 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 WebSpeechRecognitionHandle_h
+#define WebSpeechRecognitionHandle_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+
+namespace WebCore {
+class SpeechRecognition;
+}
+
+namespace WebKit {
+
+class WebSpeechRecognitionResult;
+class WebString;
+
+// WebSpeechRecognitionHandle is used by WebSpeechRecognizer to identify a
+// recognition session, and by WebSpeechRecognizerClient to route
+// recognition events.
+class WebSpeechRecognitionHandle {
+public:
+    ~WebSpeechRecognitionHandle() { reset(); }
+    WebSpeechRecognitionHandle() { }
+
+    WebSpeechRecognitionHandle(const WebSpeechRecognitionHandle& other) { assign(other); }
+    WebSpeechRecognitionHandle& operator=(const WebSpeechRecognitionHandle& other)
+    {
+        assign(other);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void reset();
+    WEBKIT_EXPORT void assign(const WebSpeechRecognitionHandle&);
+
+    // Comparison functions are provided so that WebSpeechRecognitionHandle objects
+    // can be stored in a hash map.
+    WEBKIT_EXPORT bool equals(const WebSpeechRecognitionHandle&) const;
+    WEBKIT_EXPORT bool lessThan(const WebSpeechRecognitionHandle&) const;
+
+#if WEBKIT_IMPLEMENTATION
+    WebSpeechRecognitionHandle(const WTF::PassRefPtr<WebCore::SpeechRecognition>&);
+    WebSpeechRecognitionHandle& operator=(const WTF::PassRefPtr<WebCore::SpeechRecognition>&);
+    operator WTF::PassRefPtr<WebCore::SpeechRecognition>() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::SpeechRecognition> m_private;
+};
+
+inline bool operator==(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
+{
+    return a.equals(b);
+}
+
+inline bool operator!=(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
+{
+    return !(a == b);
+}
+
+inline bool operator<(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
+{
+    return a.lessThan(b);
+}
+
+} // namespace WebKit
+
+#endif // WebSpeechRecognitionHandle_h
diff --git a/public/webpage/WebSpeechRecognitionParams.h b/public/webpage/WebSpeechRecognitionParams.h
new file mode 100644
index 0000000..9bd105e
--- /dev/null
+++ b/public/webpage/WebSpeechRecognitionParams.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2012 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 WebSpeechRecognitionParams_h
+#define WebSpeechRecognitionParams_h
+
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+#include "WebSecurityOrigin.h"
+#include "WebSpeechGrammar.h"
+
+namespace WebKit {
+
+class WebSpeechGrammar;
+
+class WebSpeechRecognitionParams {
+public:
+    WebSpeechRecognitionParams(const WebVector<WebSpeechGrammar>& grammars, const WebString& language, bool continuous, bool interimResults, unsigned long maxAlternatives, const WebSecurityOrigin& origin)
+        : m_grammars(grammars)
+        , m_language(language)
+        , m_continuous(continuous)
+        , m_interimResults(interimResults)
+        , m_maxAlternatives(maxAlternatives)
+        , m_origin(origin)
+    {
+    }
+
+    const WebVector<WebSpeechGrammar>& grammars() const { return m_grammars; }
+    const WebString& language() const { return m_language; }
+    bool continuous() const { return m_continuous; }
+    bool interimResults() const { return m_interimResults; }
+    unsigned long maxAlternatives() const { return m_maxAlternatives; }
+    const WebSecurityOrigin& origin() const { return m_origin; }
+
+private:
+    WebVector<WebSpeechGrammar> m_grammars;
+    WebString m_language;
+    bool m_continuous;
+    bool m_interimResults;
+    unsigned long m_maxAlternatives;
+    WebSecurityOrigin m_origin;
+};
+
+} // namespace WebKit
+
+#endif // WebSpeechRecognitionParams_h
diff --git a/public/webpage/WebSpeechRecognitionResult.h b/public/webpage/WebSpeechRecognitionResult.h
new file mode 100644
index 0000000..0c38105
--- /dev/null
+++ b/public/webpage/WebSpeechRecognitionResult.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2012 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 WebSpeechRecognitionResult_h
+#define WebSpeechRecognitionResult_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPrivatePtr.h"
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+
+namespace WebCore {
+class SpeechRecognitionResult;
+}
+
+namespace WebKit {
+
+class WebSpeechRecognitionResult {
+public:
+    WebSpeechRecognitionResult() { }
+    WebSpeechRecognitionResult(const WebSpeechRecognitionResult& result) { assign(result); }
+    ~WebSpeechRecognitionResult() { reset(); }
+
+    WEBKIT_EXPORT void assign(const WebVector<WebString>& transcripts, const WebVector<float>& confidences, bool final);
+    WEBKIT_EXPORT void assign(const WebSpeechRecognitionResult&);
+    WEBKIT_EXPORT void reset();
+
+#if WEBKIT_IMPLEMENTATION
+    operator WTF::PassRefPtr<WebCore::SpeechRecognitionResult>() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::SpeechRecognitionResult> m_private;
+};
+
+} // namespace WebKit
+
+#endif // WebSpeechRecognitionResult_h
diff --git a/public/webpage/WebSpeechRecognizer.h b/public/webpage/WebSpeechRecognizer.h
new file mode 100644
index 0000000..4631f8a
--- /dev/null
+++ b/public/webpage/WebSpeechRecognizer.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2012 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 WebSpeechRecognizer_h
+#define WebSpeechRecognizer_h
+
+#include "../platform/WebCommon.h"
+#include "WebSpeechRecognitionHandle.h"
+
+namespace WebKit {
+
+class WebSpeechGrammar;
+class WebSpeechRecognitionParams;
+class WebSpeechRecognizerClient;
+
+// Interface for speech recognition, to be implemented by the embedder.
+class WebSpeechRecognizer {
+public:
+    // Start speech recognition for the specified handle using the specified parameters. Notifications on progress, results, and errors will be sent via the client.
+    virtual void start(const WebSpeechRecognitionHandle&, const WebSpeechRecognitionParams&, WebSpeechRecognizerClient*) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+    // Stop speech recognition for the specified handle, returning any results for the audio recorded so far. Notifications and errors are sent via the client.
+    virtual void stop(const WebSpeechRecognitionHandle&, WebSpeechRecognizerClient*) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+    // Abort speech recognition for the specified handle, discarding any recorded audio. Notifications and errors are sent via the client.
+    virtual void abort(const WebSpeechRecognitionHandle&, WebSpeechRecognizerClient*) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+protected:
+    virtual ~WebSpeechRecognizer() { }
+};
+
+} // namespace WebKit
+
+#endif // WebSpeechRecognizer_h
diff --git a/public/webpage/WebSpeechRecognizerClient.h b/public/webpage/WebSpeechRecognizerClient.h
new file mode 100644
index 0000000..d32451e
--- /dev/null
+++ b/public/webpage/WebSpeechRecognizerClient.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2012 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 WebSpeechRecognizerClient_h
+#define WebSpeechRecognizerClient_h
+
+#include "../platform/WebVector.h"
+
+namespace WebKit {
+
+class WebSpeechRecognitionResult;
+class WebSpeechRecognitionHandle;
+class WebString;
+
+// A client for reporting progress on speech recognition for a specific handle.
+class WebSpeechRecognizerClient {
+public:
+    enum ErrorCode {
+        OtherError = 0,
+        NoSpeechError = 1,
+        AbortedError = 2,
+        AudioCaptureError = 3,
+        NetworkError = 4,
+        NotAllowedError = 5,
+        ServiceNotAllowedError = 6,
+        BadGrammarError = 7,
+        LanguageNotSupportedError = 8
+    };
+
+    // These methods correspond to the events described in the spec:
+    // http://speech-javascript-api-spec.googlecode.com/git/speechapi.html#speechreco-events
+
+    // To be called when the embedder has started to capture audio.
+    virtual void didStartAudio(const WebSpeechRecognitionHandle&) = 0;
+
+    // To be called when some sound, possibly speech, has been detected.
+    // This is expected to be called after didStartAudio.
+    virtual void didStartSound(const WebSpeechRecognitionHandle&) = 0;
+
+    // To be called when sound is no longer detected.
+    // This is expected to be called after didEndSpeech.
+    virtual void didEndSound(const WebSpeechRecognitionHandle&) = 0;
+
+    // To be called when audio capture has stopped.
+    // This is expected to be called after didEndSound.
+    virtual void didEndAudio(const WebSpeechRecognitionHandle&) = 0;
+
+    // To be called when the speech recognizer provides new results.
+    // - newFinalResults contains zero or more final results that are new since
+    // the last time the function was called.
+    // - currentInterimResults contains zero or more inteirm results that
+    // replace the interim results that were reported the last time this
+    // function was called.
+    virtual void didReceiveResults(const WebSpeechRecognitionHandle&, const WebVector<WebSpeechRecognitionResult>& newFinalResults, const WebVector<WebSpeechRecognitionResult>& currentInterimResults) = 0;
+
+    // To be called when the speech recognizer returns a final result with no
+    // recognizion hypothesis.
+    virtual void didReceiveNoMatch(const WebSpeechRecognitionHandle&, const WebSpeechRecognitionResult&) = 0;
+
+    // To be called when a speech recognition error occurs.
+    virtual void didReceiveError(const WebSpeechRecognitionHandle&, const WebString& message, ErrorCode) = 0;
+
+    // To be called when the recognizer has begun to listen to the audio with
+    // the intention of recognizing.
+    virtual void didStart(const WebSpeechRecognitionHandle&) = 0;
+
+    // To be called when the recognition session has ended. This must always be
+    // called, no matter the reason for the end.
+    virtual void didEnd(const WebSpeechRecognitionHandle&) = 0;
+
+protected:
+    virtual ~WebSpeechRecognizerClient() {}
+};
+
+} // namespace WebKit
+
+#endif // WebSpeechRecognizerClient_h
diff --git a/public/webpage/WebSpellCheckClient.h b/public/webpage/WebSpellCheckClient.h
new file mode 100644
index 0000000..110a491
--- /dev/null
+++ b/public/webpage/WebSpellCheckClient.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2010 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 WebSpellCheckClient_h
+#define WebSpellCheckClient_h
+
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+#include "WebTextCheckingType.h"
+
+namespace WebKit {
+
+class WebString;
+class WebTextCheckingCompletion;
+struct WebTextCheckingResult;
+
+class WebSpellCheckClient {
+public:
+    // 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. If optional_suggestions
+    // is given, then it will be filled with suggested words (not a cheap step).
+    virtual void spellCheck(const WebString& text,
+                            int& misspelledOffset,
+                            int& misspelledLength,
+                            WebVector<WebString>* optionalSuggestions) { }
+
+    // The client should perform spell-checking on the given text. This function will
+    // enumerate all misspellings at once.
+    virtual void checkTextOfParagraph(const WebString&,
+                                      WebTextCheckingTypeMask mask,
+                                      WebVector<WebTextCheckingResult>* results) { }
+
+    // Requests asynchronous spelling and grammar checking, whose result should be
+    // returned by passed completion object.
+    virtual void requestCheckingOfText(const WebString& textToCheck,
+                                       const WebVector<uint32_t>& markersInText,
+                                       const WebVector<unsigned>& markerOffsets,
+                                       WebTextCheckingCompletion* completionCallback) { }
+
+    // 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) { }
+
+protected:
+    ~WebSpellCheckClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebStorageEventDispatcher.h b/public/webpage/WebStorageEventDispatcher.h
new file mode 100644
index 0000000..e7b4399
--- /dev/null
+++ b/public/webpage/WebStorageEventDispatcher.h
@@ -0,0 +1,64 @@
+/*
+ * 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 "../platform/WebString.h"
+
+namespace WebKit {
+
+class WebStorageArea;
+class WebStorageNamespace;
+class WebURL;
+
+class WebStorageEventDispatcher {
+public:
+    // Dispatch a local storage event to appropiate documents.
+    WEBKIT_EXPORT static void dispatchLocalStorageEvent(
+            const WebString& key, const WebString& oldValue,
+            const WebString& newValue, const WebURL& origin,
+            const WebURL& pageUrl, WebStorageArea* sourceAreaInstance,
+            bool originatedInProcess);
+
+    // Dispatch a session storage event to appropiate documents.
+    WEBKIT_EXPORT static void dispatchSessionStorageEvent(
+            const WebString& key, const WebString& oldValue,
+            const WebString& newValue, const WebURL& origin,
+            const WebURL& pageUrl, const WebStorageNamespace&,
+            WebStorageArea* sourceAreaInstance, bool originatedInProcess);
+
+ private:
+    WebStorageEventDispatcher() { }
+};
+
+} // namespace WebKit
+
+#endif // WebStorageEventDispatcher_h
diff --git a/public/webpage/WebStorageNamespace.h b/public/webpage/WebStorageNamespace.h
new file mode 100644
index 0000000..43f99d7
--- /dev/null
+++ b/public/webpage/WebStorageNamespace.h
@@ -0,0 +1,31 @@
+/*
+ * 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 "../platform/WebStorageNamespace.h"
diff --git a/public/webpage/WebStorageQuotaCallbacks.h b/public/webpage/WebStorageQuotaCallbacks.h
new file mode 100644
index 0000000..ee7dc5e
--- /dev/null
+++ b/public/webpage/WebStorageQuotaCallbacks.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2011 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 WebStorageQuotaCallbacks_h
+#define WebStorageQuotaCallbacks_h
+
+#include "WebStorageQuotaError.h"
+
+namespace WebKit {
+
+class WebStorageQuotaCallbacks {
+public:
+    // Callback for WebFrameClient::queryStorageUsageAndQuota.
+    virtual void didQueryStorageUsageAndQuota(unsigned long long usageInBytes, unsigned long long quotaInBytes) = 0;
+
+    // Callback for WebFrameClient::requestStorageQuota.
+    // This may return a smaller amount of quota than the requested.
+    virtual void didGrantStorageQuota(unsigned long long grantedQuotaInBytes) = 0;
+
+    virtual void didFail(WebStorageQuotaError) = 0;
+
+protected:
+    virtual ~WebStorageQuotaCallbacks() { }
+};
+
+} // namespace WebKit
+
+#endif // WebStorageQuotaCallbacks_h
diff --git a/public/webpage/WebStorageQuotaError.h b/public/webpage/WebStorageQuotaError.h
new file mode 100644
index 0000000..d2c44c5
--- /dev/null
+++ b/public/webpage/WebStorageQuotaError.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2011 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 WebStorageQuotaError_h
+#define WebStorageQuotaError_h
+
+namespace WebKit {
+
+// The error code used for WebStorageQuota.
+enum WebStorageQuotaError {
+    WebStorageQuotaErrorNotSupported = 9,
+    WebStorageQuotaErrorInvalidModification = 13,
+    WebStorageQuotaErrorInvalidAccess = 15,
+    WebStorageQuotaErrorAbort = 20,
+};
+
+} // namespace WebKit
+
+#endif // WebStorageQuotaError_h
diff --git a/public/webpage/WebStorageQuotaType.h b/public/webpage/WebStorageQuotaType.h
new file mode 100644
index 0000000..b18caf8
--- /dev/null
+++ b/public/webpage/WebStorageQuotaType.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2011 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 WebStorageQuotaType_h
+#define WebStorageQuotaType_h
+
+namespace WebKit {
+
+enum WebStorageQuotaType {
+    WebStorageQuotaTypeTemporary,
+    WebStorageQuotaTypePersistent,
+};
+
+} // namespace WebKit
+
+#endif // WebStorageQuotaType_h
diff --git a/public/webpage/WebSurroundingText.h b/public/webpage/WebSurroundingText.h
new file mode 100644
index 0000000..39dfc8f
--- /dev/null
+++ b/public/webpage/WebSurroundingText.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2012 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 INC. AND ITS 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 APPLE INC. OR ITS 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 WebSurroundingText_h
+#define WebSurroundingText_h
+
+#include "../platform/WebPrivateOwnPtr.h"
+#include "../platform/WebString.h"
+#include "WebNode.h"
+#include "WebRange.h"
+
+namespace WebCore {
+class SurroundingText;
+}
+
+namespace WebKit {
+
+class WebHitTestResult;
+class WebNode;
+struct WebPoint;
+
+class WebSurroundingText {
+public:
+    WebSurroundingText() { }
+    ~WebSurroundingText() { reset(); }
+
+    WEBKIT_EXPORT bool isNull() const;
+    WEBKIT_EXPORT void reset();
+
+    // Initializes the object to get the surrounding text centered in the position relative to a provided node.
+    // The maximum length of the contents retrieved is defined by maxLength.
+    WEBKIT_EXPORT void initialize(const WebNode&, const WebPoint&, size_t maxLength);
+
+    // Surrounding text content retrieved.
+    WEBKIT_EXPORT WebString textContent() const;
+
+    // Offset in the text content of the initial hit position (or provided offset in the node).
+    WEBKIT_EXPORT size_t hitOffsetInTextContent() const;
+
+    // Convert start/end positions in the content text string into a WebKit text range.
+    WEBKIT_EXPORT WebRange rangeFromContentOffsets(size_t startOffsetInContent, size_t endOffsetInContent);
+
+protected:
+    WebPrivateOwnPtr<WebCore::SurroundingText> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTestingSupport.h b/public/webpage/WebTestingSupport.h
new file mode 100644
index 0000000..1cb7c2c
--- /dev/null
+++ b/public/webpage/WebTestingSupport.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2011 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 AND ITS 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 APPLE OR ITS 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 WebTestingSupport_h
+#define WebTestingSupport_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+class WebFrame;
+
+class WebTestingSupport {
+public:
+    WEBKIT_EXPORT static void injectInternalsObject(WebFrame*);
+    WEBKIT_EXPORT static void resetInternalsObject(WebFrame*);
+};
+
+}
+
+#endif
diff --git a/public/webpage/WebTextAffinity.h b/public/webpage/WebTextAffinity.h
new file mode 100644
index 0000000..1224f61
--- /dev/null
+++ b/public/webpage/WebTextAffinity.h
@@ -0,0 +1,44 @@
+/*
+ * 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/public/webpage/WebTextCheckingCompletion.h b/public/webpage/WebTextCheckingCompletion.h
new file mode 100644
index 0000000..8bad8a8
--- /dev/null
+++ b/public/webpage/WebTextCheckingCompletion.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2010 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 WebTextCheckingCompletion_h
+#define WebTextCheckingCompletion_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+struct WebTextCheckingResult;
+template <typename T> class WebVector;
+
+// Gets called back when WebViewClient finished an asynchronous spell checking.
+class WebTextCheckingCompletion {
+public:
+    virtual void didFinishCheckingText(const WebVector<WebTextCheckingResult>&) = 0;
+    virtual void didCancelCheckingText() { };
+protected:
+    ~WebTextCheckingCompletion() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTextCheckingResult.h b/public/webpage/WebTextCheckingResult.h
new file mode 100644
index 0000000..3520445
--- /dev/null
+++ b/public/webpage/WebTextCheckingResult.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2010 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 WebTextCheckingResult_h
+#define WebTextCheckingResult_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebString.h"
+#include "WebTextCheckingType.h"
+
+namespace WebCore {
+struct TextCheckingResult;
+}
+
+namespace WebKit {
+
+// A checked entry of text checking.
+struct WebTextCheckingResult {
+    WebTextCheckingResult()
+        : type(WebTextCheckingTypeSpelling)
+        , location(0)
+        , length(0)
+        , hash(0)
+    {
+    }
+
+    WebTextCheckingResult(WebTextCheckingType type, int location, int length, const WebString& replacement = WebString(), uint32_t hash = 0)
+        : type(type)
+        , location(location)
+        , length(length)
+        , replacement(replacement)
+        , hash(hash)
+    {
+    }
+
+#if WEBKIT_IMPLEMENTATION
+    operator WebCore::TextCheckingResult() const;
+#endif
+
+    WebTextCheckingType type;
+    int location;
+    int length;
+    WebString replacement;
+    uint32_t hash;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTextCheckingType.h b/public/webpage/WebTextCheckingType.h
new file mode 100644
index 0000000..3c8dfca
--- /dev/null
+++ b/public/webpage/WebTextCheckingType.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2011 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 WebTextCheckingType_h
+#define WebTextCheckingType_h
+
+namespace WebKit {
+
+enum WebTextCheckingType {
+    WebTextCheckingTypeSpelling = 1 << 1,
+    WebTextCheckingTypeGrammar  = 1 << 2,
+};
+
+typedef unsigned WebTextCheckingTypeMask;
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTextDirection.h b/public/webpage/WebTextDirection.h
new file mode 100644
index 0000000..3d51296
--- /dev/null
+++ b/public/webpage/WebTextDirection.h
@@ -0,0 +1,45 @@
+/*
+ * 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/public/webpage/WebTextFieldDecoratorClient.h b/public/webpage/WebTextFieldDecoratorClient.h
new file mode 100644
index 0000000..fd615c8
--- /dev/null
+++ b/public/webpage/WebTextFieldDecoratorClient.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2012 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 WebTextFieldDecoratorClient_h
+#define WebTextFieldDecoratorClient_h
+
+#include "../platform/WebCString.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class TextFieldDecorator; }
+#endif
+
+namespace WebKit {
+
+class WebInputElement;
+
+class WebTextFieldDecoratorClient {
+public:
+    // The function should return true if the specified input element should
+    // have a decoration icon. This function is called whenever a text field is
+    // created, and should not take much time.
+    virtual bool shouldAddDecorationTo(const WebInputElement&) = 0;
+    // Returns true if the decoration should be visible when it's created.
+    virtual bool visibleByDefault() = 0;
+
+    // Image resource name for the normal state. The image is stretched to
+    // font-size x font-size square. The function must return an existing
+    // resource name.
+    virtual WebCString imageNameForNormalState() = 0;
+    // Image resource name for the disabled state. If this function returns an
+    // empty string, imageNameForNormalState() is used even for the disabled
+    // state.
+    virtual WebCString imageNameForDisabledState() = 0;
+    // Image resource name for the read only state. If this function returns an
+    // empty string, the image same as imageNameForDisabledState() is used.
+    virtual WebCString imageNameForReadOnlyState() = 0;
+    // Image resource name for when the imaged is being hovered over. If this
+    // function returns an empty string, imageNameForNormalState() is used
+    // instead.
+    virtual WebCString imageNameForHoverState() {return WebCString();}
+
+    // This is called when the decoration icon is clicked.
+    virtual void handleClick(WebInputElement&) = 0;
+    // This is called when the input element loses its renderer. An
+    // implementation of this function should not do something which updates
+    // state of WebKit objects.
+    virtual void willDetach(const WebInputElement&) = 0;
+
+#if WEBKIT_IMPLEMENTATION
+    bool isClientFor(WebCore::TextFieldDecorator*);
+#endif
+
+    virtual ~WebTextFieldDecoratorClient() { }
+};
+
+}
+
+#endif // WebTextFieldDecoratorClient_h
diff --git a/public/webpage/WebTextInputInfo.h b/public/webpage/WebTextInputInfo.h
new file mode 100644
index 0000000..bde84ee
--- /dev/null
+++ b/public/webpage/WebTextInputInfo.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2011 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 AND ITS 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 APPLE OR ITS 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 WebTextInputInfo_h
+#define WebTextInputInfo_h
+
+#include "../platform/WebString.h"
+#include "WebTextInputType.h"
+
+namespace WebKit {
+
+struct WebTextInputInfo {
+    WebTextInputType type;
+
+    // The value of the currently focused input field.
+    WebString value;
+
+    // The cursor position of the current selection start, or the caret position
+    // if nothing is selected.
+    int selectionStart;
+
+    // The cursor position of the current selection end, or the caret position
+    // if nothing is selected.
+    int selectionEnd;
+
+    // The start position of the current composition, or -1 if there is none.
+    int compositionStart;
+
+    // The end position of the current composition, or -1 if there is none.
+    int compositionEnd;
+
+    WEBKIT_EXPORT bool equals(const WebTextInputInfo&) const;
+
+    WebTextInputInfo()
+        : type(WebTextInputTypeNone)
+        , selectionStart(0)
+        , selectionEnd(0)
+        , compositionStart(-1)
+        , compositionEnd(-1)
+    {
+    }
+};
+
+inline bool operator==(const WebTextInputInfo& a, const WebTextInputInfo& b)
+{
+    return a.equals(b);
+}
+
+inline bool operator!=(const WebTextInputInfo& a, const WebTextInputInfo& b)
+{
+    return !(a == b);
+}
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTextInputType.h b/public/webpage/WebTextInputType.h
new file mode 100644
index 0000000..fea0c45
--- /dev/null
+++ b/public/webpage/WebTextInputType.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2010 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 WebTextInputType_h
+#define WebTextInputType_h
+
+namespace WebKit {
+
+enum WebTextInputType {
+    // Input caret is not in an editable node, no input method shall be used.
+    WebTextInputTypeNone,
+
+    // Input caret is in a normal editable node, any input method can be used.
+    WebTextInputTypeText,
+
+    // Input caret is in a specific input field, and input method may be used
+    // only if it's suitable for the specific input field.
+    WebTextInputTypePassword,
+    WebTextInputTypeSearch,
+    WebTextInputTypeEmail,
+    WebTextInputTypeNumber,
+    WebTextInputTypeTelephone,
+    WebTextInputTypeURL,
+
+    // FIXME: Remove these types once Date like types are not
+    // seen as Text. For now they also exist in WebTextInputType
+    WebTextInputTypeDate,
+    WebTextInputTypeDateTime,
+    WebTextInputTypeDateTimeLocal,
+    WebTextInputTypeMonth,
+    WebTextInputTypeTime,
+    WebTextInputTypeWeek,
+    WebTextInputTypeTextArea,
+
+    // Input caret is in a contenteditable node (not an INPUT field).
+    WebTextInputTypeContentEditable,
+
+    // The focused node is date time field. The date time field does not have
+    // input caret but it is necessary to distinguish from WebTextInputTypeNone
+    // for on-screen keyboard.
+    WebTextInputTypeDateTimeField,
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTextRun.h b/public/webpage/WebTextRun.h
new file mode 100644
index 0000000..d19ea2e
--- /dev/null
+++ b/public/webpage/WebTextRun.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2010 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 WebTextRun_h
+#define WebTextRun_h
+
+#include "../platform/WebString.h"
+
+#if WEBKIT_IMPLEMENTATION
+namespace WebCore { class TextRun; }
+#endif
+
+namespace WebKit {
+
+struct WebTextRun {
+    WebTextRun(const WebString& t, bool isRTL, bool hasDirectionalOverride)
+        : text(t)
+        , rtl(isRTL)
+        , directionalOverride(hasDirectionalOverride)
+    {
+    }
+    WebTextRun()
+        : rtl(false)
+        , directionalOverride(false)
+    {
+    }
+
+    WebString text;
+    bool rtl;
+    bool directionalOverride;
+
+#if WEBKIT_IMPLEMENTATION
+    // The resulting WebCore::TextRun will refer to the text in this
+    // struct, so "this" must outlive the WebCore text run.
+    operator WebCore::TextRun() const;
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTimeRange.h b/public/webpage/WebTimeRange.h
new file mode 100644
index 0000000..03def2a
--- /dev/null
+++ b/public/webpage/WebTimeRange.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 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 WebTimeRange_h
+#define WebTimeRange_h
+
+#include "../platform/WebVector.h"
+
+namespace WebKit {
+
+struct WebTimeRange {
+    WebTimeRange() : start(0), end(0) { }
+    WebTimeRange(float s, float e) : start(s), end(e) { }
+
+    float start;
+    float end;
+};
+
+typedef WebVector<WebTimeRange> WebTimeRanges;
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebTouchPoint.h b/public/webpage/WebTouchPoint.h
new file mode 100644
index 0000000..bfad695
--- /dev/null
+++ b/public/webpage/WebTouchPoint.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2010 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 WebTouchPoint_h
+#define WebTouchPoint_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebPoint.h"
+
+namespace WebKit {
+
+class WebTouchPoint {
+public:
+    WebTouchPoint()
+        : id(0)
+        , state(StateUndefined)
+        , radiusX(0)
+        , radiusY(0)
+        , rotationAngle(0)
+        , force(0)
+    {
+    }
+
+    enum State {
+        StateUndefined,
+        StateReleased,
+        StatePressed,
+        StateMoved,
+        StateStationary,
+        StateCancelled,
+    };
+
+    int id;
+    State state;
+    WebPoint screenPosition;
+    WebPoint position;
+
+    int radiusX;
+    int radiusY;
+    float rotationAngle;
+    float force;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebURLLoaderOptions.h b/public/webpage/WebURLLoaderOptions.h
new file mode 100644
index 0000000..d32b0ce
--- /dev/null
+++ b/public/webpage/WebURLLoaderOptions.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2009, 2011 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 WebURLLoaderOptions_h
+#define WebURLLoaderOptions_h
+
+namespace WebKit {
+
+struct WebURLLoaderOptions {
+
+    enum CrossOriginRequestPolicy {
+        CrossOriginRequestPolicyDeny,
+        CrossOriginRequestPolicyUseAccessControl,
+        CrossOriginRequestPolicyAllow
+    };
+
+    WebURLLoaderOptions()
+        : untrustedHTTP(false)
+        , sniffContent(false)
+        , allowCredentials(false)
+        , forcePreflight(false)
+        , exposeAllResponseHeaders(false)
+        , crossOriginRequestPolicy(CrossOriginRequestPolicyDeny)
+        { }
+
+    bool untrustedHTTP; // Whether to validate the method and headers as if this was an XMLHttpRequest.
+    bool sniffContent; // Whether to sniff content.
+    bool allowCredentials; // Whether to send HTTP credentials and cookies with the request.
+    bool forcePreflight; // If policy is to use access control, whether to force a preflight for GET, HEAD, and POST requests.
+    bool exposeAllResponseHeaders; // If policy is to use access control, whether to expose non-whitelisted response headers to the client.
+    CrossOriginRequestPolicy crossOriginRequestPolicy;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebUserGestureIndicator.h b/public/webpage/WebUserGestureIndicator.h
new file mode 100644
index 0000000..d4ff05f
--- /dev/null
+++ b/public/webpage/WebUserGestureIndicator.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 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 WebUserGestureIndicator_h
+#define WebUserGestureIndicator_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+class WebUserGestureToken;
+
+class WebUserGestureIndicator {
+public:
+    // Returns true if a user gesture is currently being processed.
+    WEBKIT_EXPORT static bool isProcessingUserGesture();
+
+    // Returns true if a consumable gesture exists and has been successfully consumed.
+    WEBKIT_EXPORT static bool consumeUserGesture();
+
+    // Returns a token for the currently active user gesture. It can be used to
+    // continue processing the user gesture later on using a
+    // WebScopedUserGesture.
+    WEBKIT_EXPORT static WebUserGestureToken currentUserGestureToken();
+};
+
+}
+
+#endif // WebUserGestureIndicator_h
diff --git a/public/webpage/WebUserGestureToken.h b/public/webpage/WebUserGestureToken.h
new file mode 100644
index 0000000..9506ef9
--- /dev/null
+++ b/public/webpage/WebUserGestureToken.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2013 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 WebUserGestureToken_h
+#define WebUserGestureToken_h
+
+#include "../platform/WebPrivatePtr.h"
+
+namespace WebCore {
+class UserGestureToken;
+}
+
+namespace WebKit {
+
+// A WebUserGestureToken allows for storing the user gesture state of the
+// currently active context and reinstantiating it later on to continue
+// processing the user gesture in case it was not consumed meanwhile.
+class WebUserGestureToken {
+public:
+    WebUserGestureToken() { }
+    WebUserGestureToken(const WebUserGestureToken& other) { assign(other); }
+    WebUserGestureToken& operator=(const WebUserGestureToken& other)
+    {
+        assign(other);
+        return *this;
+    }
+    ~WebUserGestureToken() { reset(); }
+
+    WEBKIT_EXPORT bool hasGestures() const;
+    bool isNull() const { return m_token.isNull(); }
+
+#if WEBKIT_IMPLEMENTATION
+    explicit WebUserGestureToken(PassRefPtr<WebCore::UserGestureToken>);
+    operator PassRefPtr<WebCore::UserGestureToken>() const;
+#endif
+
+private:
+    WEBKIT_EXPORT void assign(const WebUserGestureToken&);
+    WEBKIT_EXPORT void reset();
+
+    WebPrivatePtr<WebCore::UserGestureToken> m_token;
+};
+
+} // namespace WebKit
+
+#endif // WebUserGestureToken_h
diff --git a/public/webpage/WebUserMediaClient.h b/public/webpage/WebUserMediaClient.h
new file mode 100644
index 0000000..bbdea18
--- /dev/null
+++ b/public/webpage/WebUserMediaClient.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2011 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 WebUserMediaClient_h
+#define WebUserMediaClient_h
+
+namespace WebKit {
+
+class WebMediaStreamSource;
+class WebUserMediaRequest;
+template <typename T> class WebVector;
+
+class WebUserMediaClient {
+public:
+    virtual ~WebUserMediaClient() { }
+
+    virtual void requestUserMedia(const WebUserMediaRequest&, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources) { }
+
+    virtual void cancelUserMediaRequest(const WebUserMediaRequest&) = 0;
+};
+
+} // namespace WebKit
+
+#endif // WebUserMediaClient_h
diff --git a/public/webpage/WebUserMediaRequest.h b/public/webpage/WebUserMediaRequest.h
new file mode 100644
index 0000000..d6af651
--- /dev/null
+++ b/public/webpage/WebUserMediaRequest.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2011 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 WebUserMediaRequest_h
+#define WebUserMediaRequest_h
+
+#include "WebSecurityOrigin.h"
+#include "public/platform/WebCommon.h"
+#include "public/platform/WebPrivatePtr.h"
+#include "public/platform/WebString.h"
+
+namespace WebCore {
+class UserMediaRequest;
+}
+
+namespace WebKit {
+class WebDocument;
+class WebMediaConstraints;
+class WebMediaStream;
+class WebMediaStreamSource;
+template <typename T> class WebVector;
+
+class WebUserMediaRequest {
+public:
+    WebUserMediaRequest() { }
+    WebUserMediaRequest(const WebUserMediaRequest& request) { assign(request); }
+    ~WebUserMediaRequest() { reset(); }
+
+    WebUserMediaRequest& operator=(const WebUserMediaRequest& other)
+    {
+        assign(other);
+        return *this;
+    }
+
+    WEBKIT_EXPORT void reset();
+    bool isNull() const { return m_private.isNull(); }
+    WEBKIT_EXPORT bool equals(const WebUserMediaRequest&) const;
+    WEBKIT_EXPORT void assign(const WebUserMediaRequest&);
+
+    WEBKIT_EXPORT bool audio() const;
+    WEBKIT_EXPORT bool video() const;
+    WEBKIT_EXPORT WebMediaConstraints audioConstraints() const;
+    WEBKIT_EXPORT WebMediaConstraints videoConstraints() const;
+
+    WEBKIT_EXPORT WebSecurityOrigin securityOrigin() const;
+    WEBKIT_EXPORT WebDocument ownerDocument() const;
+
+    WEBKIT_EXPORT void requestSucceeded(const WebMediaStream&);
+
+    WEBKIT_EXPORT void requestFailed(const WebString& description = WebString());
+    WEBKIT_EXPORT void requestFailedConstraint(const WebString& constraintName, const WebString& description = WebString());
+
+#if WEBKIT_IMPLEMENTATION
+    WebUserMediaRequest(const PassRefPtr<WebCore::UserMediaRequest>&);
+    operator WebCore::UserMediaRequest*() const;
+#endif
+
+private:
+    WebPrivatePtr<WebCore::UserMediaRequest> m_private;
+};
+
+inline bool operator==(const WebUserMediaRequest& a, const WebUserMediaRequest& b)
+{
+    return a.equals(b);
+}
+
+} // namespace WebKit
+
+#endif // WebUserMediaRequest_h
diff --git a/public/webpage/WebValidationMessageClient.h b/public/webpage/WebValidationMessageClient.h
new file mode 100644
index 0000000..6ba1555
--- /dev/null
+++ b/public/webpage/WebValidationMessageClient.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2013 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 WebValidationMessageClient_h
+#define WebValidationMessageClient_h
+
+#include "WebTextDirection.h"
+
+namespace WebKit {
+
+class WebString;
+struct WebRect;
+
+// Client interface to handle form validation message UI.
+class WebValidationMessageClient {
+public:
+    // Show a notification popup for the specified form vaidation messages
+    // besides the anchor rectangle. An implementation of this function should
+    // not hide the popup until hideValidationMessage call.
+    virtual void showValidationMessage(const WebRect& anchorInScreen, const WebString& mainText, const WebString& supplementalText, WebTextDirection hint) { }
+
+    // Hide notifation popup for form validation messages.
+    virtual void hideValidationMessage() { }
+
+
+protected:
+    virtual ~WebValidationMessageClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebView.h b/public/webpage/WebView.h
new file mode 100644
index 0000000..8997ef4
--- /dev/null
+++ b/public/webpage/WebView.h
@@ -0,0 +1,507 @@
+/*
+ * Copyright (C) 2009, 2010, 2011, 2012 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 "../platform/WebString.h"
+#include "../platform/WebVector.h"
+#include "WebDragOperation.h"
+#include "WebPageVisibilityState.h"
+#include "WebWidget.h"
+
+namespace WebKit {
+
+class WebAccessibilityObject;
+class WebAutofillClient;
+class WebDevToolsAgent;
+class WebDevToolsAgentClient;
+class WebDragData;
+class WebFrame;
+class WebFrameClient;
+class WebGraphicsContext3D;
+class WebHitTestResult;
+class WebNode;
+class WebPageOverlay;
+class WebPermissionClient;
+class WebPrerendererClient;
+class WebRange;
+class WebSettings;
+class WebSpellCheckClient;
+class WebString;
+class WebTextFieldDecoratorClient;
+class WebValidationMessageClient;
+class WebViewBenchmarkSupport;
+class WebViewClient;
+struct WebActiveWheelFlingParameters;
+struct WebMediaPlayerAction;
+struct WebPluginAction;
+struct WebPoint;
+
+class WebView : public WebWidget {
+public:
+    WEBKIT_EXPORT static const double textSizeMultiplierRatio;
+    WEBKIT_EXPORT static const double minTextSizeMultiplier;
+    WEBKIT_EXPORT static const double maxTextSizeMultiplier;
+    WEBKIT_EXPORT static const float minPageScaleFactor;
+    WEBKIT_EXPORT static const float maxPageScaleFactor;
+
+    // Controls which frames user content is injected into.
+    enum UserContentInjectIn {
+        UserContentInjectInAllFrames,
+        UserContentInjectInTopFrameOnly
+    };
+
+    // Controls which documents user styles are injected into.
+    enum UserStyleInjectionTime {
+        UserStyleInjectInExistingDocuments,
+        UserStyleInjectInSubsequentDocuments
+    };
+
+
+    // Initialization ------------------------------------------------------
+
+    // Creates a WebView that is NOT yet initialized.  You will need to
+    // call initializeMainFrame to finish the initialization.  It is valid
+    // to pass null client pointers.
+    WEBKIT_EXPORT 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;
+
+    virtual void initializeHelperPluginFrame(WebFrameClient*) = 0;
+
+    // Initializes the various client interfaces.
+    virtual void setAutofillClient(WebAutofillClient*) = 0;
+    virtual void setDevToolsAgentClient(WebDevToolsAgentClient*) = 0;
+    virtual void setPermissionClient(WebPermissionClient*) = 0;
+    virtual void setPrerendererClient(WebPrerendererClient*) = 0;
+    virtual void setSpellCheckClient(WebSpellCheckClient*) = 0;
+    virtual void setValidationMessageClient(WebValidationMessageClient*) = 0;
+    virtual void addTextFieldDecoratorClient(WebTextFieldDecoratorClient*) = 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;
+
+    // Allows disabling domain relaxation.
+    virtual void setDomainRelaxationForbidden(bool, const WebString& scheme) = 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;
+
+    // Scrolls the node currently in focus into view.
+    virtual void scrollFocusedNodeIntoView() = 0;
+
+    // Scrolls the node currently in focus into |rect|, where |rect| is in
+    // window space.
+    virtual void scrollFocusedNodeIntoRect(const WebRect&) { }
+
+    // Advance the focus of the WebView forward to the next element or to the
+    // previous element in the tab sequence (if reverse is true).
+    virtual void advanceFocus(bool reverse) { }
+
+    // Animate a scale into the specified find-in-page rect.
+    virtual void zoomToFindInPageRect(const WebRect&) = 0;
+
+
+    // Zoom ----------------------------------------------------------------
+
+    // Returns the current zoom level.  0 is "original size", and each increment
+    // above or below represents zooming 20% larger or smaller to default limits
+    // of 300% and 50% of original size, respectively.  Only plugins use
+    // non whole-numbers, since they might choose to have specific zoom level so
+    // that fixed-width content is fit-to-page-width, for example.
+    virtual double zoomLevel() = 0;
+
+    // Changes the zoom level to the specified level, clamping at the limits
+    // noted above, and returns the current zoom level after applying the
+    // change.
+    //
+    // If |textOnly| is set, only the text will be zoomed; otherwise the entire
+    // page will be zoomed. You can only have either text zoom or full page zoom
+    // at one time.  Changing the mode while the page is zoomed will have odd
+    // effects.
+    virtual double setZoomLevel(bool textOnly, double zoomLevel) = 0;
+
+    // Updates the zoom limits for this view.
+    virtual void zoomLimitsChanged(double minimumZoomLevel,
+                                   double maximumZoomLevel) = 0;
+
+    // Helper functions to convert between zoom level and zoom factor.  zoom
+    // factor is zoom percent / 100, so 300% = 3.0.
+    WEBKIT_EXPORT static double zoomLevelToZoomFactor(double zoomLevel);
+    WEBKIT_EXPORT static double zoomFactorToZoomLevel(double factor);
+
+    // Sets the initial page scale to the given factor. This scale setting overrides
+    // page scale set in the page's viewport meta tag.
+    virtual void setInitialPageScaleOverride(float) = 0;
+
+    // Gets the scale factor of the page, where 1.0 is the normal size, > 1.0
+    // is scaled up, < 1.0 is scaled down.
+    virtual float pageScaleFactor() const = 0;
+
+    // Scales the page and the scroll offset by a given factor, while ensuring
+    // that the new scroll position does not go beyond the edge of the page.
+    virtual void setPageScaleFactorPreservingScrollOffset(float) = 0;
+
+    // Scales a page by a factor of scaleFactor and then sets a scroll position to (x, y).
+    // setPageScaleFactor() magnifies and shrinks a page without affecting layout.
+    // On the other hand, zooming affects layout of the page.
+    virtual void setPageScaleFactor(float scaleFactor, const WebPoint& origin) = 0;
+
+    // PageScaleFactor will be force-clamped between minPageScale and maxPageScale
+    // (and these values will persist until setPageScaleFactorLimits is called
+    // again).
+    virtual void setPageScaleFactorLimits(float minPageScale, float maxPageScale) = 0;
+
+    virtual float minimumPageScaleFactor() const = 0;
+    virtual float maximumPageScaleFactor() const = 0;
+
+    // Save the WebView's current scroll and scale state. Each call to this function
+    // overwrites the previously saved scroll and scale state.
+    virtual void saveScrollAndScaleState() = 0;
+
+    // Restore the previously saved scroll and scale state. After restoring the
+    // state, this function deletes any saved scroll and scale state.
+    virtual void restoreScrollAndScaleState() = 0;
+
+    // Reset any saved values for the scroll and scale state.
+    virtual void resetScrollAndScaleState() = 0;
+
+    // Prevent the web page from setting min/max scale via the viewport meta
+    // tag. This is an accessibility feature that lets folks zoom in to web
+    // pages even if the web page tries to block scaling.
+    virtual void setIgnoreViewportTagScaleLimits(bool) = 0;
+
+    // Returns the "preferred" contents size, defined as the preferred minimum width of the main document's contents
+    // and the minimum height required to display the main document without scrollbars.
+    // The returned size has the page zoom factor applied.
+    virtual WebSize contentsPreferredMinimumSize() = 0;
+
+    // FIXME(aelias): Delete this after Chromium switches to the other name.
+    void setIgnoreViewportTagMaximumScale(bool ignore) { setIgnoreViewportTagScaleLimits(ignore); }
+
+    // The ratio of the current device's screen DPI to the target device's screen DPI.
+    virtual float deviceScaleFactor() const = 0;
+
+    // Sets the ratio as computed by computePageScaleConstraints.
+    virtual void setDeviceScaleFactor(float) = 0;
+
+
+    // Fixed Layout --------------------------------------------------------
+
+    // In fixed layout mode, the layout of the page is independent of the
+    // view port size, given by WebWidget::size().
+
+    virtual bool isFixedLayoutModeEnabled() const = 0;
+    virtual void enableFixedLayoutMode(bool enable) = 0;
+
+    virtual WebSize fixedLayoutSize() const = 0;
+    virtual void setFixedLayoutSize(const WebSize&) = 0;
+
+
+    // Auto-Resize -----------------------------------------------------------
+
+    // In auto-resize mode, the view is automatically adjusted to fit the html
+    // content within the given bounds.
+    virtual void enableAutoResizeMode(
+        const WebSize& minSize,
+        const WebSize& maxSize) = 0;
+
+    // Turn off auto-resize.
+    virtual void disableAutoResizeMode() = 0;
+
+    // Media ---------------------------------------------------------------
+
+    // Performs the specified media player action on the node at the given location.
+    virtual void performMediaPlayerAction(
+        const WebMediaPlayerAction&, const WebPoint& location) = 0;
+
+    // Performs the specified plugin action on the node at the given location.
+    virtual void performPluginAction(
+        const WebPluginAction&, const WebPoint& location) = 0;
+
+
+    // Data exchange -------------------------------------------------------
+
+    // Do a hit test at given point and return the HitTestResult.
+    virtual WebHitTestResult hitTestResultAt(const WebPoint&) = 0;
+
+    // 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;
+
+    // Notifies the WebView that a drag is going on.
+    virtual void dragSourceMovedTo(
+        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&,
+        const WebPoint& clientPoint, const WebPoint& screenPoint,
+        WebDragOperationsMask operationsAllowed,
+        int keyModifiers) = 0;
+    virtual WebDragOperation dragTargetDragOver(
+        const WebPoint& clientPoint, const WebPoint& screenPoint,
+        WebDragOperationsMask operationsAllowed,
+        int keyModifiers) = 0;
+    virtual void dragTargetDragLeave() = 0;
+    virtual void dragTargetDrop(
+        const WebPoint& clientPoint, const WebPoint& screenPoint,
+        int keyModifiers) = 0;
+
+    // Retrieves a list of spelling markers.
+    virtual void spellingMarkers(WebVector<uint32_t>* markers) = 0;
+
+
+    // Support for resource loading initiated by plugins -------------------
+
+    // Returns next unused request identifier which is unique within the
+    // parent Page.
+    virtual unsigned long createUniqueIdentifierForRequest() = 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;
+    virtual bool inspectorSetting(const WebString& key,
+                                  WebString* value) const = 0;
+    virtual void setInspectorSetting(const WebString& key,
+                                     const WebString& value) = 0;
+
+    // The embedder may optionally engage a WebDevToolsAgent.  This may only
+    // be set once per WebView.
+    virtual WebDevToolsAgent* devToolsAgent() = 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.
+    // |itemIDs| is a vector of IDs for the menu items. A positive itemID is a
+    // unique ID for the Autofill entries. Other MenuItemIDs are defined in
+    // WebAutofillClient.h
+    virtual void applyAutofillSuggestions(
+        const WebNode&,
+        const WebVector<WebString>& names,
+        const WebVector<WebString>& labels,
+        const WebVector<WebString>& icons,
+        const WebVector<int>& itemIDs,
+        int separatorIndex = -1) = 0;
+
+    // Hides any popup (suggestions, selects...) that might be showing.
+    virtual void hidePopups() = 0;
+
+    virtual void selectAutofillSuggestionAtIndex(unsigned listIndex) = 0;
+
+
+    // Context menu --------------------------------------------------------
+
+    virtual void performCustomContextMenuAction(unsigned action) = 0;
+
+    // Shows a context menu for the currently focused element.
+    virtual void showContextMenu() = 0;
+
+
+    // Popup menu ----------------------------------------------------------
+
+    // Sets whether select popup menus should be rendered by the browser.
+    WEBKIT_EXPORT static void setUseExternalPopupMenus(bool);
+
+
+    // Visited link state --------------------------------------------------
+
+    // Tells all WebView instances to update the visited link state for the
+    // specified hash.
+    WEBKIT_EXPORT static void updateVisitedLinkState(unsigned long long hash);
+
+    // Tells all WebView instances to update the visited state for all
+    // their links.
+    WEBKIT_EXPORT static void resetVisitedLinkState();
+
+
+    // Custom colors -------------------------------------------------------
+
+    virtual void setScrollbarColors(unsigned inactiveColor,
+                                    unsigned activeColor,
+                                    unsigned trackColor) = 0;
+
+    virtual void setSelectionColors(unsigned activeBackgroundColor,
+                                    unsigned activeForegroundColor,
+                                    unsigned inactiveBackgroundColor,
+                                    unsigned inactiveForegroundColor) = 0;
+
+    // User scripts --------------------------------------------------------
+    WEBKIT_EXPORT static void addUserStyleSheet(const WebString& sourceCode,
+                                                const WebVector<WebString>& patterns,
+                                                UserContentInjectIn injectIn,
+                                                UserStyleInjectionTime injectionTime = UserStyleInjectInSubsequentDocuments);
+    WEBKIT_EXPORT static void removeAllUserContent();
+
+    // Modal dialog support ------------------------------------------------
+
+    // Call these methods before and after running a nested, modal event loop
+    // to suspend script callbacks and resource loads.
+    WEBKIT_EXPORT static void willEnterModalLoop();
+    WEBKIT_EXPORT static void didExitModalLoop();
+
+    // Called to inform the WebView that a wheel fling animation was started externally (for instance
+    // by the compositor) but must be completed by the WebView.
+    virtual void transferActiveWheelFlingAnimation(const WebActiveWheelFlingParameters&) = 0;
+
+    virtual bool setEditableSelectionOffsets(int start, int end) = 0;
+    virtual bool setCompositionFromExistingText(int compositionStart, int compositionEnd, const WebVector<WebCompositionUnderline>& underlines) = 0;
+    virtual void extendSelectionAndDelete(int before, int after) = 0;
+
+    virtual bool isSelectionEditable() const = 0;
+
+    virtual void setShowPaintRects(bool) = 0;
+    virtual void setShowFPSCounter(bool) = 0;
+    virtual void setContinuousPaintingEnabled(bool) = 0;
+
+    // Benchmarking support -------------------------------------------------
+
+    virtual WebViewBenchmarkSupport* benchmarkSupport() { return 0; }
+
+    // Visibility -----------------------------------------------------------
+
+    // Sets the visibility of the WebView.
+    virtual void setVisibilityState(WebPageVisibilityState visibilityState,
+                                    bool isInitialState) { }
+
+    // PageOverlay ----------------------------------------------------------
+
+    // Adds/removes page overlay to this WebView. These functions change the
+    // graphical appearance of the WebView. WebPageOverlay paints the
+    // contents of the page overlay. It also provides an z-order number for
+    // the page overlay. The z-order number defines the paint order the page
+    // overlays. Page overlays with larger z-order number will be painted after
+    // page overlays with smaller z-order number. That is, they appear above
+    // the page overlays with smaller z-order number. If two page overlays have
+    // the same z-order number, the later added one will be on top.
+    virtual void addPageOverlay(WebPageOverlay*, int /*z-order*/) = 0;
+    virtual void removePageOverlay(WebPageOverlay*) = 0;
+
+    // Testing functionality for TestRunner ---------------------------------
+
+protected:
+    ~WebView() {}
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebViewBenchmarkSupport.h b/public/webpage/WebViewBenchmarkSupport.h
new file mode 100644
index 0000000..b69cc76
--- /dev/null
+++ b/public/webpage/WebViewBenchmarkSupport.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2012 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 WebViewBenchmarkSupport_h
+#define WebViewBenchmarkSupport_h
+
+#include "../platform/WebCanvas.h"
+#include "../platform/WebSize.h"
+
+namespace WebKit {
+
+// Support for benchmarks accessing the WebView.
+class WebViewBenchmarkSupport {
+public:
+    enum PaintMode {
+        // Paint the entire page.
+        PaintModeEverything
+    };
+
+    // Client for creating canvases where multiple canvases
+    // may be used for layered rendering and sizes defined by the benchmark.
+    // Also contains reporting methods called by the WebViewBenchmarkSupport
+    // when painting is about to occur and when painting is complete.
+    class PaintClient {
+    public:
+        // Called by the WebViewBenchmarkSupport when painting is about to occur.
+        // PaintClient is expected to return an appropriately-sized canvas
+        // for the WebViewBenchmarkSupport to paint on.
+        virtual WebCanvas* willPaint(const WebSize&) { return 0; }
+
+        // Called by the WebViewBenchmarkSupport when painting is complete.
+        // The canvas will not be used after this call and can be destroyed
+        // if necessary.
+        virtual void didPaint(WebCanvas*) { }
+    protected:
+        virtual ~PaintClient() { }
+    };
+
+    // Paints the web view on canvases created from the client, using the given
+    // paint mode.
+    virtual void paint(PaintClient*, PaintMode) = 0;
+
+protected:
+    virtual ~WebViewBenchmarkSupport() { }
+};
+} // namespace WebKit
+
+#endif // WebViewBenchmarkSupport_h
diff --git a/public/webpage/WebViewClient.h b/public/webpage/WebViewClient.h
new file mode 100644
index 0000000..70a39e7
--- /dev/null
+++ b/public/webpage/WebViewClient.h
@@ -0,0 +1,397 @@
+/*
+ * 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 "../platform/WebColor.h"
+#include "../platform/WebGraphicsContext3D.h"
+#include "../platform/WebString.h"
+#include "WebAccessibilityNotification.h"
+#include "WebContentDetectionResult.h"
+#include "WebDragOperation.h"
+#include "WebEditingAction.h"
+#include "WebFileChooserCompletion.h"
+#include "WebFileChooserParams.h"
+#include "WebPageVisibilityState.h"
+#include "WebPopupType.h"
+#include "WebTextAffinity.h"
+#include "WebTextDirection.h"
+#include "WebWidgetClient.h"
+
+namespace WebKit {
+
+class WebAccessibilityObject;
+class WebColorChooser;
+class WebColorChooserClient;
+class WebCompositorOutputSurface;
+class WebDateTimeChooserCompletion;
+class WebDeviceOrientationClient;
+class WebDragData;
+class WebElement;
+class WebExternalPopupMenu;
+class WebExternalPopupMenuClient;
+class WebFileChooserCompletion;
+class WebFrame;
+class WebGeolocationClient;
+class WebGeolocationService;
+class WebGestureEvent;
+class WebHelperPlugin;
+class WebHitTestResult;
+class WebIconLoadingCompletion;
+class WebImage;
+class WebInputElement;
+class WebKeyboardEvent;
+class WebNode;
+class WebNotificationPresenter;
+class WebRange;
+class WebSpeechInputController;
+class WebSpeechInputListener;
+class WebSpeechRecognizer;
+class WebStorageNamespace;
+class WebURL;
+class WebURLRequest;
+class WebUserMediaClient;
+class WebView;
+class WebWidget;
+struct WebConsoleMessage;
+struct WebContextMenuData;
+struct WebDateTimeChooserParams;
+struct WebPoint;
+struct WebPopupMenuInfo;
+struct WebRect;
+struct WebSize;
+struct WebWindowFeatures;
+
+// 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.  This method must clone its session storage
+    // so any subsequent calls to createSessionStorageNamespace conform to the
+    // WebStorage specification.
+    // The request parameter is only for the client to check if the request
+    // could be fulfilled.  The client should not load the request.
+    // The policy parameter indicates how the new view will be displayed in
+    // WebWidgetClient::show.
+    virtual WebView* createView(WebFrame* creator,
+                                const WebURLRequest& request,
+                                const WebWindowFeatures& features,
+                                const WebString& name,
+                                WebNavigationPolicy policy) {
+        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(WebPopupType) { return 0; }
+    virtual WebWidget* createPopupMenu(const WebPopupMenuInfo&) { return 0; }
+    virtual WebExternalPopupMenu* createExternalPopupMenu(
+        const WebPopupMenuInfo&, WebExternalPopupMenuClient*) { return 0; }
+
+    // Create a session storage namespace object associated with this WebView.
+    virtual WebStorageNamespace* createSessionStorageNamespace(unsigned quota) { 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; }
+
+    // Called to request an icon for the specified filenames.
+    // The icon is shown in a file upload control.
+    virtual bool queryIconForFiles(const WebVector<WebString>& filenames, WebIconLoadingCompletion*) { return false; }
+
+    // This method enumerates all the files in the path. It returns immediately
+    // and asynchronously invokes the WebFileChooserCompletion with all the
+    // files in the directory. Returns false if the WebFileChooserCompletion
+    // will never be called.
+    virtual bool enumerateChosenDirectory(const WebString& path, WebFileChooserCompletion*) { return false; }
+
+    // Creates the main WebFrame for the specified WebHelperPlugin.
+    // Called by WebHelperPlugin to provide the WebFrameClient interface for the WebFrame.
+    virtual void initializeHelperPluginWebFrame(WebHelperPlugin*) { }
+
+
+    // Navigational --------------------------------------------------------
+
+    // These notifications bracket any loading that occurs in the WebView.
+    virtual void didStartLoading() { }
+    virtual void didStopLoading() { }
+
+    // Notification that some progress was made loading the current page.
+    // loadProgress is a value between 0 (nothing loaded) and 1.0 (frame fully
+    // loaded).
+    virtual void didChangeLoadProgress(WebFrame*, double loadProgress) { }
+
+    // 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 void didBeginEditing() { }
+    virtual void didCancelCompositionOnSelectionChange() { }
+    virtual void didChangeSelection(bool isSelectionEmpty) { }
+    virtual void didChangeContents() { }
+    virtual void didExecuteCommand(const WebString& commandName) { }
+    virtual void didEndEditing() { }
+    virtual void didChangeFormState(const WebNode&) { }
+
+    // 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; }
+
+    // Dialogs -------------------------------------------------------------
+
+    // This method opens the color chooser and returns a new WebColorChooser
+    // instance. If there is a WebColorChooser already from the last time this
+    // was called, it ends the color chooser by calling endChooser, and replaces
+    // it with the new one.
+    virtual WebColorChooser* createColorChooser(WebColorChooserClient*,
+                                                const WebColor&) { return 0; }
+
+    // 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(const WebFileChooserParams&,
+                                WebFileChooserCompletion*) { return false; }
+
+    // Ask users to choose date/time for the specified parameters. When a user
+    // chooses a value, an implementation of this function should call
+    // WebDateTimeChooserCompletion::didChooseValue or didCancelChooser. If the
+    // implementation opened date/time chooser UI successfully, it should return
+    // true. This function is used only if ExternalDateTimeChooser is used.
+    virtual bool openDateTimeChooser(const WebDateTimeChooserParams&, WebDateTimeChooserCompletion*) { 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&) { }
+
+    // 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(WebFrame*, const WebDragData&, WebDragOperationsMask, const WebImage&, const WebPoint& dragImageOffset) { }
+
+    // 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() { }
+
+    // Called when a new node gets focused.
+    virtual void focusedNodeChanged(const WebNode&) { }
+
+    virtual void numberOfWheelEventHandlersChanged(unsigned) { }
+
+    // Indicates two things:
+    //   1) This view may have a new layout now.
+    //   2) Calling layout() is a no-op.
+    // After calling WebWidget::layout(), expect to get this notification
+    // unless the view did not need a layout.
+    virtual void didUpdateLayout() { }
+
+    // Return true to swallow the input event if the embedder will start a disambiguation popup
+    virtual bool didTapMultipleTargets(const WebGestureEvent&, const WebVector<WebRect>& targetRects) { return false; }
+
+    // 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 about an accessibility notification.
+    virtual void postAccessibilityNotification(const WebAccessibilityObject&, WebAccessibilityNotification) { }
+
+
+    // Developer tools -----------------------------------------------------
+
+    // Called to notify the client that the inspector's settings were
+    // changed and should be saved.  See WebView::inspectorSettings.
+    virtual void didUpdateInspectorSettings() { }
+
+    virtual void didUpdateInspectorSetting(const WebString& key, const WebString& value) { }
+
+    // Geolocation ---------------------------------------------------------
+
+    // Access the embedder API for (client-based) geolocation client .
+    virtual WebGeolocationClient* geolocationClient() { return 0; }
+    // Access the embedder API for (non-client-based) geolocation services.
+    virtual WebGeolocationService* geolocationService() { return 0; }
+
+    // Speech --------------------------------------------------------------
+
+    // Access the embedder API for speech input services.
+    virtual WebSpeechInputController* speechInputController(
+        WebSpeechInputListener*) { return 0; }
+
+    // Access the embedder API for speech recognition services.
+    virtual WebSpeechRecognizer* speechRecognizer() { return 0; }
+
+    // Device Orientation --------------------------------------------------
+
+    // Access the embedder API for device orientation services.
+    virtual WebDeviceOrientationClient* deviceOrientationClient() { return 0; }
+
+    // Zoom ----------------------------------------------------------------
+
+    // Informs the browser that the zoom levels for this frame have changed from
+    // the default values.
+    virtual void zoomLimitsChanged(double minimumLevel, double maximumLevel) { }
+
+    // Informs the browser that the zoom level has changed as a result of an
+    // action that wasn't initiated by the client.
+    virtual void zoomLevelChanged() { }
+
+    // Registers a new URL handler for the given protocol.
+    virtual void registerProtocolHandler(const WebString& scheme,
+                                         const WebString& baseUrl,
+                                         const WebString& url,
+                                         const WebString& title) { }
+
+    // Visibility -----------------------------------------------------------
+
+    // Returns the current visibility of the WebView.
+    virtual WebPageVisibilityState visibilityState() const
+    {
+        return WebPageVisibilityStateVisible;
+    }
+
+    // Media Streams -------------------------------------------------------
+
+    virtual WebUserMediaClient* userMediaClient() { return 0; }
+
+
+    // Content detection ----------------------------------------------------
+
+    // Retrieves detectable content (e.g., email addresses, phone numbers)
+    // around a hit test result. The embedder should use platform-specific
+    // content detectors to analyze the region around the hit test result.
+    virtual WebContentDetectionResult detectContentAround(const WebHitTestResult&) { return WebContentDetectionResult(); }
+
+    // Schedules a new content intent with the provided url.
+    virtual void scheduleContentIntent(const WebURL&) { }
+
+    // Cancels any previously scheduled content intents that have not yet launched.
+    virtual void cancelScheduledContentIntents() { }
+
+    // Draggable regions ----------------------------------------------------
+
+    // Informs the browser that the draggable regions have been updated.
+    virtual void draggableRegionsChanged() { }
+
+protected:
+    ~WebViewClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebWidget.h b/public/webpage/WebWidget.h
new file mode 100644
index 0000000..c201b67
--- /dev/null
+++ b/public/webpage/WebWidget.h
@@ -0,0 +1,251 @@
+/*
+ * 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 "../platform/WebCanvas.h"
+#include "../platform/WebCommon.h"
+#include "../platform/WebRect.h"
+#include "../platform/WebSize.h"
+#include "WebCompositionUnderline.h"
+#include "WebTextDirection.h"
+#include "WebTextInputInfo.h"
+
+namespace WebKit {
+
+class WebInputEvent;
+class WebLayerTreeView;
+class WebMouseEvent;
+class WebString;
+struct WebPoint;
+struct WebRenderingStats;
+template <typename T> class WebVector;
+
+class WebWidget {
+public:
+    // This method closes and deletes the WebWidget.
+    virtual void close() { }
+
+    // Returns the current size of the WebWidget.
+    virtual WebSize size() { return WebSize(); }
+
+    // Used to group a series of resize events. For example, if the user
+    // drags a resizer then willStartLiveResize will be called, followed by a
+    // sequence of resize events, ending with willEndLiveResize when the user
+    // lets go of the resizer.
+    virtual void willStartLiveResize() { }
+
+    // Called to resize the WebWidget.
+    virtual void resize(const WebSize&) { }
+
+    // Ends a group of resize events that was started with a call to
+    // willStartLiveResize.
+    virtual void willEndLiveResize() { }
+
+    // Called to notify the WebWidget of entering/exiting fullscreen mode. The
+    // resize method may be called between will{Enter,Exit}FullScreen and
+    // did{Enter,Exit}FullScreen.
+    virtual void willEnterFullScreen() { }
+    virtual void didEnterFullScreen() { }
+    virtual void willExitFullScreen() { }
+    virtual void didExitFullScreen() { }
+
+    // Called to update imperative animation state. This should be called before
+    // paint, although the client can rate-limit these calls.
+    virtual void animate(double monotonicFrameBeginTime) { }
+
+    // Called to layout the WebWidget. This MUST be called before Paint,
+    // and it may result in calls to WebWidgetClient::didInvalidateRect.
+    virtual void layout() { }
+
+    // Called to toggle the WebWidget in or out of force compositing mode. This
+    // should be called before paint.
+    virtual void enterForceCompositingMode(bool enter) { }
+
+    // Called to notify the WebWidget that the widget has exited compositing
+    // mode and cannot reenter.
+    virtual void didExitCompositingMode() { }
+
+    enum PaintOptions {
+        // Attempt to fulfill the painting request by reading back from the
+        // compositor, assuming we're using a compositor to render.
+        ReadbackFromCompositorIfAvailable,
+
+        // Force the widget to rerender onto the canvas using software. This
+        // mode ignores 3d transforms and ignores GPU-resident content, such
+        // as video, canvas, and WebGL.
+        //
+        // Note: This option exists on OS(ANDROID) and will hopefully be
+        //       removed once the link disambiguation feature renders using
+        //       the compositor.
+        ForceSoftwareRenderingAndIgnoreGPUResidentContent,
+    };
+
+    // Called to paint the rectangular region within the WebWidget
+    // onto the specified canvas at (viewPort.x,viewPort.y). 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& viewPort, PaintOptions = ReadbackFromCompositorIfAvailable) { }
+
+    // Returns true if we've started tracking repaint rectangles.
+    virtual bool isTrackingRepaints() const { return false; }
+
+    // Indicates that the compositing surface associated with this WebWidget is
+    // ready to use.
+    virtual void setCompositorSurfaceReady() { }
+
+    // Temporary method for the embedder to notify the WebWidget that the widget
+    // has taken damage, e.g. due to a window expose. This method will be
+    // removed when the WebWidget inversion patch lands --- http://crbug.com/112837
+    virtual void setNeedsRedraw() { }
+
+    // Called to inform the WebWidget of a change in theme.
+    // Implementors that cache rendered copies of widgets need to re-render
+    // on receiving this message
+    virtual void themeChanged() { }
+
+    // Called to inform the WebWidget of an input event. Returns true if
+    // the event has been processed, false otherwise.
+    virtual bool handleInputEvent(const WebInputEvent&) { return false; }
+
+    // Called to inform the WebWidget of the mouse cursor's visibility.
+    virtual void setCursorVisibilityState(bool isVisible) { }
+
+    // Check whether the given point hits any registered touch event handlers.
+    virtual bool hasTouchEventHandlersAt(const WebPoint&) { return true; }
+
+    // Applies a scroll delta to the root layer, which is bundled with a page
+    // scale factor that may apply a CSS transform on the whole document (used
+    // for mobile-device pinch zooming). This is triggered by events sent to the
+    // compositor thread.
+    virtual void applyScrollAndScale(const WebSize& scrollDelta, float scaleFactor) { }
+
+    // Called to inform the WebWidget that mouse capture was lost.
+    virtual void mouseCaptureLost() { }
+
+    // Called to inform the WebWidget that it has gained or lost keyboard focus.
+    virtual void setFocus(bool) { }
+
+    // Called to inform the WebWidget of a new composition text.
+    // If selectionStart and selectionEnd has the same value, then it indicates
+    // the input caret position. If the text is empty, then the existing
+    // composition text will be cancelled.
+    // Returns true if the composition text was set successfully.
+    virtual bool setComposition(
+        const WebString& text,
+        const WebVector<WebCompositionUnderline>& underlines,
+        int selectionStart,
+        int selectionEnd) { return false; }
+
+    // Called to inform the WebWidget to confirm an ongoing composition.
+    // This method is same as confirmComposition(WebString());
+    // Returns true if there is an ongoing composition.
+    virtual bool confirmComposition() { return false; }
+
+    // Called to inform the WebWidget to confirm an ongoing composition with a
+    // new composition text. If the text is empty then the current composition
+    // text is confirmed. If there is no ongoing composition, then deletes the
+    // current selection and inserts the text. This method has no effect if
+    // there is no ongoing composition and the text is empty.
+    // Returns true if there is an ongoing composition or the text is inserted.
+    virtual bool confirmComposition(const WebString& text) { return false; }
+
+    // Fetches the character range of the current composition, also called the
+    // "marked range." Returns true and fills the out-paramters on success;
+    // returns false on failure.
+    virtual bool compositionRange(size_t* location, size_t* length) { return false; }
+
+    // Returns information about the current text input of this WebWidget.
+    virtual WebTextInputInfo textInputInfo() { return WebTextInputInfo(); }
+
+    // Returns the current text input type of this WebWidget.
+    // FIXME: Remove this method. It's redundant with textInputInfo().
+    virtual WebTextInputType textInputType() { return WebTextInputTypeNone; }
+
+    // Returns the anchor and focus bounds of the current selection.
+    // If the selection range is empty, it returns the caret bounds.
+    virtual bool selectionBounds(WebRect& anchor, WebRect& focus) const { return false; }
+
+    // Returns the text direction at the start and end bounds of the current selection.
+    // If the selection range is empty, it returns false.
+    virtual bool selectionTextDirection(WebTextDirection& start, WebTextDirection& end) const { return false; }
+
+    // Returns true if the selection range is nonempty and its anchor is first
+    // (i.e its anchor is its start).
+    virtual bool isSelectionAnchorFirst() const { return false; }
+
+    // Fetch the current selection range of this WebWidget. If there is no
+    // selection, it will output a 0-length range with the location at the
+    // caret. Returns true and fills the out-paramters on success; returns false
+    // on failure.
+    virtual bool caretOrSelectionRange(size_t* location, size_t* length) { return false; }
+
+    // Changes the text direction of the selected input node.
+    virtual void setTextDirection(WebTextDirection) { }
+
+    // Returns true if the WebWidget uses GPU accelerated compositing
+    // to render its contents.
+    virtual bool isAcceleratedCompositingActive() const { return false; }
+
+    // The WebLayerTreeView initialized on this WebWidgetClient will be going away and
+    // is no longer safe to access.
+    virtual void willCloseLayerTreeView() { }
+
+    // Calling WebWidgetClient::requestPointerLock() will result in one
+    // return call to didAcquirePointerLock() or didNotAcquirePointerLock().
+    virtual void didAcquirePointerLock() { }
+    virtual void didNotAcquirePointerLock() { }
+
+    // Pointer lock was held, but has been lost. This may be due to a
+    // request via WebWidgetClient::requestPointerUnlock(), or for other
+    // reasons such as the user exiting lock, window focus changing, etc.
+    virtual void didLosePointerLock() { }
+
+    // Informs the WebWidget that the resizer rect changed. Happens for example
+    // on mac, when a widget appears below the WebWidget without changing the
+    // WebWidget's size (WebWidget::resize() automatically checks the resizer
+    // rect.)
+    virtual void didChangeWindowResizerRect() { }
+
+    // The page background color. Can be used for filling in areas without
+    // content.
+    virtual WebColor backgroundColor() const { return 0xFFFFFFFF; /* SK_ColorWHITE */ }
+
+protected:
+    ~WebWidget() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebWidgetClient.h b/public/webpage/WebWidgetClient.h
new file mode 100644
index 0000000..14c818b
--- /dev/null
+++ b/public/webpage/WebWidgetClient.h
@@ -0,0 +1,184 @@
+/*
+ * 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 "../platform/WebCommon.h"
+#include "../platform/WebRect.h"
+#include "WebNavigationPolicy.h"
+#include "WebScreenInfo.h"
+#include "../platform/WebLayerTreeView.h"
+
+namespace WebKit {
+
+class WebGestureEvent;
+class WebString;
+class WebWidget;
+struct WebCursorInfo;
+struct WebSize;
+
+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 has changed size as a result of an auto-resize.
+    virtual void didAutoResize(const WebSize& newSize) { }
+
+    // Called when the compositor is enabled or disabled. The parameter to
+    // didActivateCompositor() is meaningless.
+    // FIXME: Remove parameter from didActivateCompositor().
+    virtual void didActivateCompositor(int deprecated) { }
+    virtual void didDeactivateCompositor() { }
+
+    // Attempt to initialize compositing for this widget. If this is successful,
+    // layerTreeView() will return a valid WebLayerTreeView.
+    virtual void initializeLayerTreeView() { }
+
+    // Return a compositing view used for this widget. This is owned by the
+    // WebWidgetClient.
+    virtual WebLayerTreeView* layerTreeView() { return 0; }
+
+    // Sometimes the WebWidget enters a state where it will generate a sequence
+    // of invalidations that should not, by themselves, trigger the compositor
+    // to schedule a new frame. This call indicates to the embedder that it
+    // should suppress compositor scheduling temporarily.
+    virtual void suppressCompositorScheduling(bool enable) { }
+
+    // Indicates to the embedder that the compositor is about to begin a
+    // frame. This is primarily to signal to flow control mechanisms that a
+    // frame is beginning, not to perform actual painting work.
+    virtual void willBeginCompositorFrame() { }
+
+    // Indicates to the embedder that the WebWidget is ready for additional
+    // input.
+    virtual void didBecomeReadyForAdditionalInput() { }
+
+    // Called for compositing mode when a frame commit operation has finished.
+    virtual void didCommitCompositorFrame() { }
+
+    // Called for compositing mode when the draw commands for a WebKit-side
+    // frame have been issued.
+    virtual void didCommitAndDrawCompositorFrame() { }
+
+    // Called for compositing mode when swapbuffers has been posted in the GPU
+    // process.
+    virtual void didCompleteSwapBuffers() { }
+
+    // Called when a call to WebWidget::animate is required
+    virtual void scheduleAnimation() { }
+
+    // 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 enter/exit fullscreen mode. If enterFullScreen returns true,
+    // then WebWidget::{will,Did}EnterFullScreen should bound resizing the
+    // WebWidget into fullscreen mode. Similarly, when exitFullScreen is
+    // called, WebWidget::{will,Did}ExitFullScreen should bound resizing the
+    // WebWidget out of fullscreen mode.
+    virtual bool enterFullScreen() { return false; }
+    virtual void exitFullScreen() { }
+
+    // Called to get/set the position of the widget in screen coordinates.
+    virtual WebRect windowRect() { return WebRect(); }
+    virtual void setWindowRect(const WebRect&) { }
+
+    // Called when a tooltip should be shown at the current cursor position.
+    virtual void setToolTipText(const WebString&, WebTextDirection hint) { }
+
+    // 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(); }
+
+    // Called to get the scale factor of the display.
+    virtual float deviceScaleFactor() { return 1; }
+
+    // When this method gets called, WebWidgetClient implementation should
+    // reset the input method by cancelling any ongoing composition.
+    virtual void resetInputMethod() { }
+
+    // Requests to lock the mouse cursor. If true is returned, the success
+    // result will be asynchronously returned via a single call to
+    // WebWidget::didAcquirePointerLock() or
+    // WebWidget::didNotAcquirePointerLock().
+    // If false, the request has been denied synchronously.
+    virtual bool requestPointerLock() { return false; }
+
+    // Cause the pointer lock to be released. This may be called at any time,
+    // including when a lock is pending but not yet acquired.
+    // WebWidget::didLosePointerLock() is called when unlock is complete.
+    virtual void requestPointerUnlock() { }
+
+    // Returns true iff the pointer is locked to this widget.
+    virtual bool isPointerLocked() { return false; }
+
+    // Called when a gesture event is handled.
+    virtual void didHandleGestureEvent(const WebGestureEvent& event, bool eventCancelled) { }
+
+    // Called to update if touch events should be sent.
+    virtual void hasTouchEventHandlers(bool) { }
+
+    // Called when WebKit programmatically scrolls.
+    virtual void didProgrammaticallyScroll(const WebPoint& scrollPoint) { }
+
+protected:
+    ~WebWidgetClient() { }
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebWindowFeatures.h b/public/webpage/WebWindowFeatures.h
new file mode 100644
index 0000000..7bd7ce5
--- /dev/null
+++ b/public/webpage/WebWindowFeatures.h
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2010 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 WebWindowFeatures_h
+#define WebWindowFeatures_h
+
+#include "../platform/WebCommon.h"
+#include "../platform/WebString.h"
+#include "../platform/WebVector.h"
+
+#if WEBKIT_IMPLEMENTATION
+#include "core/page/WindowFeatures.h"
+#endif
+
+namespace WebKit {
+
+struct WebWindowFeatures {
+    float x;
+    bool xSet;
+    float y;
+    bool ySet;
+    float width;
+    bool widthSet;
+    float height;
+    bool heightSet;
+
+    bool menuBarVisible;
+    bool statusBarVisible;
+    bool toolBarVisible;
+    bool locationBarVisible;
+    bool scrollbarsVisible;
+    bool resizable;
+
+    bool fullscreen;
+    bool dialog;
+    WebVector<WebString> additionalFeatures;
+
+    WebWindowFeatures()
+        : xSet(false)
+        , ySet(false)
+        , widthSet(false)
+        , heightSet(false)
+        , menuBarVisible(true)
+        , statusBarVisible(true)
+        , toolBarVisible(true)
+        , locationBarVisible(true)
+        , scrollbarsVisible(true)
+        , resizable(true)
+        , fullscreen(false)
+        , dialog(false)
+    {
+    }
+
+
+#if WEBKIT_IMPLEMENTATION
+    WebWindowFeatures(const WebCore::WindowFeatures& f)
+        : x(f.x)
+        , xSet(f.xSet)
+        , y(f.y)
+        , ySet(f.ySet)
+        , width(f.width)
+        , widthSet(f.widthSet)
+        , height(f.height)
+        , heightSet(f.heightSet)
+        , menuBarVisible(f.menuBarVisible)
+        , statusBarVisible(f.statusBarVisible)
+        , toolBarVisible(f.toolBarVisible)
+        , locationBarVisible(f.locationBarVisible)
+        , scrollbarsVisible(f.scrollbarsVisible)
+        , resizable(f.resizable)
+        , fullscreen(f.fullscreen)
+        , dialog(f.dialog)
+        , additionalFeatures(f.additionalFeatures)
+    {
+    }
+#endif
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/WebWorkerInfo.h b/public/webpage/WebWorkerInfo.h
new file mode 100644
index 0000000..d94b410
--- /dev/null
+++ b/public/webpage/WebWorkerInfo.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2012 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 WebWorkerInfo_h
+#define WebWorkerInfo_h
+
+#include "../platform/WebCommon.h"
+
+namespace WebKit {
+
+class WebWorkerInfo {
+public:
+    WEBKIT_EXPORT static unsigned dedicatedWorkerCount();
+};
+
+}
+#endif
diff --git a/public/webpage/android/WebInputEventFactory.h b/public/webpage/android/WebInputEventFactory.h
new file mode 100644
index 0000000..1e8435c
--- /dev/null
+++ b/public/webpage/android/WebInputEventFactory.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2011 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 "../../platform/WebCommon.h"
+#include "../WebInputEvent.h"
+
+namespace WebKit {
+
+class WebKeyboardEvent;
+
+class WebInputEventFactory {
+public:
+    enum MouseEventType {
+        MouseEventTypeDown = 0,
+        MouseEventTypeUp,
+        MouseEventTypeMove,
+    };
+
+    enum MouseWheelDirectionType {
+        MouseWheelDirectionTypeUp = 0,
+        MouseWheelDirectionTypeDown,
+        MouseWheelDirectionTypeLeft,
+        MouseWheelDirectionTypeRight,
+    };
+
+    WEBKIT_EXPORT static WebKeyboardEvent keyboardEvent(WebInputEvent::Type,
+                                                        int modifiers,
+                                                        double timeStampSeconds,
+                                                        int keycode,
+                                                        WebUChar unicodeCharacter,
+                                                        bool isSystemKey);
+
+    WEBKIT_EXPORT static WebMouseEvent mouseEvent(MouseEventType,
+                                                  WebMouseEvent::Button,
+                                                  double timeStampSeconds,
+                                                  int windowX,
+                                                  int windowY,
+                                                  int modifiers,
+                                                  int clickCount);
+
+    WEBKIT_EXPORT static WebMouseWheelEvent mouseWheelEvent(MouseWheelDirectionType,
+                                                            double timeStampSeconds,
+                                                            int windowX,
+                                                            int windowY);
+
+    WEBKIT_EXPORT static WebGestureEvent gestureEvent(WebInputEvent::Type,
+                                                      double timeStampSeconds,
+                                                      int x,
+                                                      int y,
+                                                      float deltaX,
+                                                      float deltaY,
+                                                      int modifiers);
+
+    WEBKIT_EXPORT static WebGestureEvent gestureEvent(WebInputEvent::Type,
+                                                      double timeStampSeconds,
+                                                      int x,
+                                                      int y,
+                                                      int modifiers);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/android/WebSandboxSupport.h b/public/webpage/android/WebSandboxSupport.h
new file mode 100644
index 0000000..05ec35e
--- /dev/null
+++ b/public/webpage/android/WebSandboxSupport.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 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_MIGRATE_HEADERS_TO_PLATFORM
+#include "../../platform/android/WebSandboxSupport.h"
+#endif
diff --git a/public/webpage/default/WebRenderTheme.h b/public/webpage/default/WebRenderTheme.h
new file mode 100644
index 0000000..48b2e6a
--- /dev/null
+++ b/public/webpage/default/WebRenderTheme.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2009 Joel Stanley. 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 WebRenderTheme_h
+#define WebRenderTheme_h
+
+#include "../../platform/WebCommon.h"
+
+namespace WebKit {
+
+// Set caret blink interval for text input areas.
+WEBKIT_EXPORT void setCaretBlinkInterval(double);
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/gtk/WebInputEventFactory.h b/public/webpage/gtk/WebInputEventFactory.h
new file mode 100644
index 0000000..d497a22
--- /dev/null
+++ b/public/webpage/gtk/WebInputEventFactory.h
@@ -0,0 +1,60 @@
+/*
+ * 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 "../../platform/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_EXPORT static WebKeyboardEvent keyboardEvent(const GdkEventKey*);
+    WEBKIT_EXPORT static WebKeyboardEvent keyboardEvent(wchar_t character, int state, double timeStampSeconds);
+    WEBKIT_EXPORT static WebMouseEvent mouseEvent(const GdkEventButton*);
+    WEBKIT_EXPORT static WebMouseEvent mouseEvent(const GdkEventMotion*);
+    WEBKIT_EXPORT static WebMouseEvent mouseEvent(const GdkEventCrossing*);
+    WEBKIT_EXPORT static WebMouseWheelEvent mouseWheelEvent(const GdkEventScroll*);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/linux/WebFontInfo.h b/public/webpage/linux/WebFontInfo.h
new file mode 100644
index 0000000..706b1bc
--- /dev/null
+++ b/public/webpage/linux/WebFontInfo.h
@@ -0,0 +1,31 @@
+/*
+ * 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 "../../platform/linux/WebFontInfo.h"
diff --git a/public/webpage/linux/WebFontRenderStyle.h b/public/webpage/linux/WebFontRenderStyle.h
new file mode 100644
index 0000000..aa67abb
--- /dev/null
+++ b/public/webpage/linux/WebFontRenderStyle.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2010 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 "../../platform/linux/WebFontRenderStyle.h"
diff --git a/public/webpage/linux/WebFontRendering.h b/public/webpage/linux/WebFontRendering.h
new file mode 100644
index 0000000..8903924
--- /dev/null
+++ b/public/webpage/linux/WebFontRendering.h
@@ -0,0 +1,56 @@
+/*
+ * 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 "../../platform/WebCommon.h"
+#include <SkFontHost.h>
+#include <SkPaint.h>
+
+namespace WebKit {
+
+class WebFontRendering {
+public:
+    // Set global font renderering preferences.
+
+    WEBKIT_EXPORT static void setHinting(SkPaint::Hinting);
+    WEBKIT_EXPORT static void setAutoHint(bool);
+    WEBKIT_EXPORT static void setUseBitmaps(bool);
+    WEBKIT_EXPORT static void setAntiAlias(bool);
+    WEBKIT_EXPORT static void setSubpixelRendering(bool);
+    WEBKIT_EXPORT static void setSubpixelPositioning(bool);
+    WEBKIT_EXPORT static void setLCDOrder(SkFontHost::LCDOrder);
+    WEBKIT_EXPORT static void setLCDOrientation(SkFontHost::LCDOrientation);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/linux/WebSandboxSupport.h b/public/webpage/linux/WebSandboxSupport.h
new file mode 100644
index 0000000..4a4e6f7
--- /dev/null
+++ b/public/webpage/linux/WebSandboxSupport.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 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_MIGRATE_HEADERS_TO_PLATFORM
+#include "../../platform/linux/WebSandboxSupport.h"
+#endif
diff --git a/public/webpage/mac/WebInputEventFactory.h b/public/webpage/mac/WebInputEventFactory.h
new file mode 100644
index 0000000..e153997
--- /dev/null
+++ b/public/webpage/mac/WebInputEventFactory.h
@@ -0,0 +1,62 @@
+/*
+ * 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 "../../platform/WebCommon.h"
+
+#ifdef __OBJC__
+@class NSEvent;
+@class NSView;
+#else
+class NSEvent;
+class NSView;
+#endif
+
+namespace WebKit {
+
+class WebKeyboardEvent;
+class WebMouseEvent;
+class WebMouseWheelEvent;
+class WebGestureEvent;
+
+class WebInputEventFactory {
+public:
+    WEBKIT_EXPORT static WebKeyboardEvent keyboardEvent(NSEvent*);
+    WEBKIT_EXPORT static WebKeyboardEvent keyboardEvent(wchar_t character, int modifiers, double timeStampSeconds);
+    WEBKIT_EXPORT static WebMouseEvent mouseEvent(NSEvent*, NSView*);
+    WEBKIT_EXPORT static WebMouseWheelEvent mouseWheelEvent(NSEvent*, NSView*);
+    WEBKIT_EXPORT static WebGestureEvent gestureEvent(NSEvent *, NSView *);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/mac/WebSandboxSupport.h b/public/webpage/mac/WebSandboxSupport.h
new file mode 100644
index 0000000..41b99a7
--- /dev/null
+++ b/public/webpage/mac/WebSandboxSupport.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 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_MIGRATE_HEADERS_TO_PLATFORM
+#include "../../platform/mac/WebSandboxSupport.h"
+#endif
diff --git a/public/webpage/mac/WebScreenInfoFactory.h b/public/webpage/mac/WebScreenInfoFactory.h
new file mode 100644
index 0000000..9cde312
--- /dev/null
+++ b/public/webpage/mac/WebScreenInfoFactory.h
@@ -0,0 +1,53 @@
+/*
+ * 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 "../../platform/WebCommon.h"
+
+#ifdef __OBJC__
+@class NSView;
+#else
+class NSView;
+#endif
+
+namespace WebKit {
+
+struct WebScreenInfo;
+
+class WebScreenInfoFactory {
+public:
+    WEBKIT_EXPORT static WebScreenInfo screenInfo(NSView*);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/mac/WebSubstringUtil.h b/public/webpage/mac/WebSubstringUtil.h
new file mode 100644
index 0000000..14f3c99
--- /dev/null
+++ b/public/webpage/mac/WebSubstringUtil.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2011 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 WebSubstringUtil_h
+#define WebSubstringUtil_h
+
+#include "../../platform/WebCommon.h"
+
+namespace WebKit {
+class WebFrame;
+}
+
+#if __OBJC__
+@class NSAttributedString;
+#else
+class NSAttributedString;
+#endif
+
+namespace WebKit {
+
+class WebSubstringUtil {
+public:
+    // Returns an autoreleased NSAttributedString that is a substring of the
+    // Frame at the given range, or nil on error.
+    WEBKIT_EXPORT static NSAttributedString* attributedSubstringInRange(WebFrame*,
+        size_t location,
+        size_t length);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/win/WebInputEventFactory.h b/public/webpage/win/WebInputEventFactory.h
new file mode 100644
index 0000000..620216a
--- /dev/null
+++ b/public/webpage/win/WebInputEventFactory.h
@@ -0,0 +1,61 @@
+/*
+ * 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 "../../platform/WebCommon.h"
+
+#include <windows.h>
+
+namespace WebKit {
+
+class WebKeyboardEvent;
+class WebMouseEvent;
+class WebMouseWheelEvent;
+
+class WebInputEventFactory {
+public:
+    WEBKIT_EXPORT static WebKeyboardEvent keyboardEvent(HWND, UINT, WPARAM, LPARAM);
+    WEBKIT_EXPORT static WebMouseEvent mouseEvent(HWND, UINT, WPARAM, LPARAM);
+    WEBKIT_EXPORT 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_EXPORT static void resetLastClickState();
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/win/WebSandboxSupport.h b/public/webpage/win/WebSandboxSupport.h
new file mode 100644
index 0000000..acb574a
--- /dev/null
+++ b/public/webpage/win/WebSandboxSupport.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 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_MIGRATE_HEADERS_TO_PLATFORM
+#include "../../platform/win/WebSandboxSupport.h"
+#endif
diff --git a/public/webpage/win/WebScreenInfoFactory.h b/public/webpage/win/WebScreenInfoFactory.h
new file mode 100644
index 0000000..7c0d067
--- /dev/null
+++ b/public/webpage/win/WebScreenInfoFactory.h
@@ -0,0 +1,49 @@
+/*
+ * 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 "../../platform/WebCommon.h"
+
+typedef struct HWND__* HWND;
+
+namespace WebKit {
+
+struct WebScreenInfo;
+
+class WebScreenInfoFactory {
+public:
+    WEBKIT_EXPORT static WebScreenInfo screenInfo(HWND);
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/public/webpage/x11/WebScreenInfoFactory.h b/public/webpage/x11/WebScreenInfoFactory.h
new file mode 100644
index 0000000..f38f88a
--- /dev/null
+++ b/public/webpage/x11/WebScreenInfoFactory.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2011 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 "../../platform/WebCommon.h"
+
+typedef struct _XDisplay Display;
+
+namespace WebKit {
+
+struct WebScreenInfo;
+
+class WebScreenInfoFactory {
+public:
+    WEBKIT_EXPORT static WebScreenInfo screenInfo(Display*, int screenNumber);
+};
+
+} // namespace WebKit
+
+#endif