[Chromium] Add WebSandboxSupport and WebThemeEngine for Android.

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

Patch by Hao Zheng <zhenghao@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:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@94859 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 898a6cc6
2011-09-09 Hao Zheng <zhenghao@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 <mkosiba@chromium.org>
Exposing the isLink method on WebNode for the Chromium port on Android.
......
......@@ -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',
......
/*
* 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
/*
* 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
......@@ -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 @@ bool PlatformSupport::loadFont(NSFont* srcFont, ATSFontContainerRef* container,
#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 @@ String PlatformSupport::getFontFamilyForCharacters(const UChar* characters, size
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 @@ void PlatformSupport::getRenderStyleForStrike(const char* font, int sizeAndStyle
WebFontInfo::renderStyleForStrike(font, sizeAndStyle, &style);
style.toFontRenderStyle(result);
#endif
}
#endif
......
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment