Title: [94859] trunk/Source/WebKit/chromium
Revision
94859
Author
commit-qu...@webkit.org
Date
2011-09-09 09:58:11 -0700 (Fri, 09 Sep 2011)

Log Message

[Chromium] Add WebSandboxSupport and WebThemeEngine for Android.
https://bugs.webkit.org/show_bug.cgi?id=67584

Patch by Hao Zheng <zheng...@chromium.org> on 2011-09-09
Reviewed by Steve Block.

Make src/PlatformSupport.cpp and src/WebFrameImpl.cpp compile on
Chromium port for Android.

* WebKit.gyp:
* public/android: Added.
* public/android/WebSandboxSupport.h: Added.
* public/android/WebThemeEngine.h: Added.
(WebKit::WebThemeEngine::getSize):
(WebKit::WebThemeEngine::paint):
* src/PlatformSupport.cpp:
(WebCore::PlatformSupport::getFontFamilyForCharacters):
(WebCore::PlatformSupport::getRenderStyleForStrike):
* src/WebFrameImpl.cpp:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (94858 => 94859)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-09-09 16:49:49 UTC (rev 94858)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-09-09 16:58:11 UTC (rev 94859)
@@ -1,3 +1,24 @@
+2011-09-09  Hao Zheng  <zheng...@chromium.org>
+
+        [Chromium] Add WebSandboxSupport and WebThemeEngine for Android.
+        https://bugs.webkit.org/show_bug.cgi?id=67584
+
+        Reviewed by Steve Block.
+
+        Make src/PlatformSupport.cpp and src/WebFrameImpl.cpp compile on
+        Chromium port for Android.
+
+        * WebKit.gyp:
+        * public/android: Added.
+        * public/android/WebSandboxSupport.h: Added.
+        * public/android/WebThemeEngine.h: Added.
+        (WebKit::WebThemeEngine::getSize):
+        (WebKit::WebThemeEngine::paint):
+        * src/PlatformSupport.cpp:
+        (WebCore::PlatformSupport::getFontFamilyForCharacters):
+        (WebCore::PlatformSupport::getRenderStyleForStrike):
+        * src/WebFrameImpl.cpp:
+
 2011-09-09  Martin Kosiba  <mkos...@chromium.org>
 
         Exposing the isLink method on WebNode for the Chromium port on Android.

Modified: trunk/Source/WebKit/chromium/WebKit.gyp (94858 => 94859)


--- trunk/Source/WebKit/chromium/WebKit.gyp	2011-09-09 16:49:49 UTC (rev 94858)
+++ trunk/Source/WebKit/chromium/WebKit.gyp	2011-09-09 16:58:11 UTC (rev 94859)
@@ -89,6 +89,8 @@
                 'WEBKIT_IMPLEMENTATION=1',
             ],
             'sources': [
+                'public/android/WebSandboxSupport.h',
+                'public/android/WebThemeEngine.h',
                 'public/gtk/WebInputEventFactory.h',
                 'public/linux/WebFontRendering.h',
                 'public/linux/WebFontRenderStyle.h',
@@ -704,6 +706,11 @@
                         ['exclude', '/linux/'],
                     ],
                 }],
+                ['OS=="android"', {
+                    'include_dirs': [
+                        'public/android',
+                    ],
+                }],
                 ['OS=="mac"', {
                     'include_dirs': [
                         'public/mac',

Added: trunk/Source/WebKit/chromium/public/android/WebSandboxSupport.h (0 => 94859)


--- trunk/Source/WebKit/chromium/public/android/WebSandboxSupport.h	                        (rev 0)
+++ trunk/Source/WebKit/chromium/public/android/WebSandboxSupport.h	2011-09-09 16:58:11 UTC (rev 94859)
@@ -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 WebSandboxSupport_h
+#define WebSandboxSupport_h
+
+namespace WebKit {
+
+// Empty class, as we need it to compile.
+class WebSandboxSupport {
+public:
+};
+
+} // namespace WebKit
+
+#endif

Added: trunk/Source/WebKit/chromium/public/android/WebThemeEngine.h (0 => 94859)


--- trunk/Source/WebKit/chromium/public/android/WebThemeEngine.h	                        (rev 0)
+++ trunk/Source/WebKit/chromium/public/android/WebThemeEngine.h	2011-09-09 16:58:11 UTC (rev 94859)
@@ -0,0 +1,152 @@
+/*
+ * 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 WebThemeEngine_h
+#define WebThemeEngine_h
+
+#include "../WebCanvas.h"
+#include "../WebColor.h"
+#include "../WebSize.h"
+
+namespace WebKit {
+
+struct WebRect;
+
+class WebThemeEngine {
+public:
+    // The UI part which is being accessed.
+    enum Part {
+        // ScrollbarTheme parts
+        PartScrollbarDownArrow,
+        PartScrollbarLeftArrow,
+        PartScrollbarRightArrow,
+        PartScrollbarUpArrow,
+        PartScrollbarHorizontalThumb,
+        PartScrollbarVerticalThumb,
+        PartScrollbarHorizontalTrack,
+        PartScrollbarVerticalTrack,
+
+        // RenderTheme parts
+        PartCheckbox,
+        PartRadio,
+        PartButton,
+        PartTextField,
+        PartMenuList,
+        PartSliderTrack,
+        PartSliderThumb,
+        PartInnerSpinButton,
+        PartProgressBar
+    };
+
+    // The current state of the associated Part.
+    enum State {
+        StateDisabled,
+        StateHover,
+        StateNormal,
+        StatePressed,
+    };
+
+    // Extra parameters for drawing the PartScrollbarHorizontalTrack and
+    // PartScrollbarVerticalTrack.
+    struct ScrollbarTrackExtraParams {
+        // The bounds of the entire track, as opposed to the part being painted.
+        int trackX;
+        int trackY;
+        int trackWidth;
+        int trackHeight;
+    };
+
+    // Extra parameters for PartCheckbox, PartPushButton and PartRadio.
+    struct ButtonExtraParams {
+        bool checked;
+        bool indeterminate; // Whether the button state is indeterminate.
+        bool isDefault; // Whether the button is default button.
+        bool hasBorder;
+        WebColor backgroundColor;
+    };
+
+    // Extra parameters for PartTextField
+    struct TextFieldExtraParams {
+        bool isTextArea;
+        bool isListbox;
+        WebColor backgroundColor;
+    };
+
+    // Extra parameters for PartMenuList
+    struct MenuListExtraParams {
+        bool hasBorder;
+        bool hasBorderRadius;
+        int arrowX;
+        int arrowY;
+        WebColor backgroundColor;
+    };
+
+    // Extra parameters for PartSliderTrack and PartSliderThumb
+    struct SliderExtraParams {
+        bool vertical;
+        bool inDrag;
+    };
+
+    // Extra parameters for PartInnerSpinButton
+    struct InnerSpinButtonExtraParams {
+        bool spinUp;
+        bool readOnly;
+    };
+
+    // Extra parameters for PartProgressBar
+    struct ProgressBarExtraParams {
+        bool determinate;
+        int valueRectX;
+        int valueRectY;
+        int valueRectWidth;
+        int valueRectHeight;
+    };
+
+    union ExtraParams {
+        ScrollbarTrackExtraParams scrollbarTrack;
+        ButtonExtraParams button;
+        TextFieldExtraParams textField;
+        MenuListExtraParams menuList;
+        SliderExtraParams slider;
+        InnerSpinButtonExtraParams innerSpin;
+        ProgressBarExtraParams progressBar;
+    };
+
+    // Gets the size of the given theme part. For variable sized items
+    // like vertical scrollbar thumbs, the width will be the required width of
+    // the track while the height will be the minimum height.
+    virtual WebSize getSize(Part) { return WebSize(); }
+    // Paint the given the given theme part.
+    virtual void paint(WebCanvas*, Part, State, const WebRect&, const ExtraParams*) { }
+};
+
+} // namespace WebKit
+
+#endif

Modified: trunk/Source/WebKit/chromium/src/PlatformSupport.cpp (94858 => 94859)


--- trunk/Source/WebKit/chromium/src/PlatformSupport.cpp	2011-09-09 16:49:49 UTC (rev 94858)
+++ trunk/Source/WebKit/chromium/src/PlatformSupport.cpp	2011-09-09 16:58:11 UTC (rev 94859)
@@ -73,10 +73,12 @@
 
 #if OS(DARWIN)
 #include "mac/WebThemeEngine.h"
-#elif OS(UNIX)
+#elif OS(UNIX) && !OS(ANDROID)
 #include "linux/WebThemeEngine.h"
 #include "WebFontInfo.h"
 #include "WebFontRenderStyle.h"
+#elif OS(ANDROID)
+#include "android/WebThemeEngine.h"
 #endif
 
 #if WEBKIT_USING_SKIA
@@ -461,6 +463,11 @@
 #elif OS(UNIX)
 String PlatformSupport::getFontFamilyForCharacters(const UChar* characters, size_t numCharacters, const char* preferredLocale)
 {
+#if OS(ANDROID)
+    // FIXME: We do not use fontconfig on Android, so use simple logic for now.
+    // https://bugs.webkit.org/show_bug.cgi?id=67587
+    return WebString("Arial");
+#else
     if (webKitPlatformSupport()->sandboxSupport())
         return webKitPlatformSupport()->sandboxSupport()->getFontFamilyForCharacters(characters, numCharacters, preferredLocale);
 
@@ -469,10 +476,12 @@
         return WebString::fromUTF8(family.data());
 
     return WebString();
+#endif
 }
 
 void PlatformSupport::getRenderStyleForStrike(const char* font, int sizeAndStyle, FontRenderStyle* result)
 {
+#if !OS(ANDROID)
     WebFontRenderStyle style;
 
     if (webKitPlatformSupport()->sandboxSupport())
@@ -481,6 +490,7 @@
         WebFontInfo::renderStyleForStrike(font, sizeAndStyle, &style);
 
     style.toFontRenderStyle(result);
+#endif
 }
 #endif
 

Modified: trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp (94858 => 94859)


--- trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp	2011-09-09 16:49:49 UTC (rev 94858)
+++ trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp	2011-09-09 16:58:11 UTC (rev 94859)
@@ -163,7 +163,7 @@
 #include <algorithm>
 #include <wtf/CurrentTime.h>
 
-#if OS(UNIX) && !OS(DARWIN)
+#if OS(UNIX) && !OS(DARWIN) && !OS(ANDROID)
 #include <gdk/gdk.h>
 #endif
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to