1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 32ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "PlatformBridge.h" 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <googleurl/src/url_util.h> 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 36d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "Chrome.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "ChromeClientImpl.h" 384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "WebAudioBus.h" 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebClipboard.h" 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebCookie.h" 41692e5dbf12901edacf14812a6fae25462920af42Steve Block#include "WebCookieJar.h" 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebData.h" 43ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include "WebDragData.h" 44f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "WebFileUtilities.h" 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebFrameClient.h" 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebFrameImpl.h" 47e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "WebIDBKey.h" 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebImage.h" 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebKit.h" 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebKitClient.h" 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebMimeRegistry.h" 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebPluginContainerImpl.h" 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebPluginListBuilderImpl.h" 5406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "WebSandboxSupport.h" 55e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "WebSerializedScriptValue.h" 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebScreenInfo.h" 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebString.h" 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebURL.h" 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebVector.h" 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebViewClient.h" 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebViewImpl.h" 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebWorkerClientImpl.h" 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if USE(CG) 65cad810f21b803229eb11403f9209855525a25d57Steve Block#include <CoreGraphics/CGContext.h> 66cad810f21b803229eb11403f9209855525a25d57Steve Block#endif 67cad810f21b803229eb11403f9209855525a25d57Steve Block 68d0825bca7fe65beaee391d30da42e937db621564Steve Block#if OS(WINDOWS) 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebRect.h" 70a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "win/WebThemeEngine.h" 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 73bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if OS(LINUX) || OS(FREEBSD) 74a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "linux/WebThemeEngine.h" 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebFontInfo.h" 76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "WebFontRenderStyle.h" 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 79cad810f21b803229eb11403f9209855525a25d57Steve Block#if OS(DARWIN) 80cad810f21b803229eb11403f9209855525a25d57Steve Block#include "mac/WebThemeEngine.h" 81cad810f21b803229eb11403f9209855525a25d57Steve Block#endif 82cad810f21b803229eb11403f9209855525a25d57Steve Block 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if WEBKIT_USING_SKIA 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "NativeImageSkia.h" 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "BitmapImage.h" 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "Cookie.h" 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "FrameView.h" 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "GraphicsContext.h" 91db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "IDBFactoryBackendProxy.h" 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "KURL.h" 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "NotImplemented.h" 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "PlatformContextSkia.h" 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "PluginData.h" 96dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "SharedBuffer.h" 97a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "Worker.h" 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WorkerContextProxy.h" 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/Assertions.h> 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// We are part of the WebKit implementation. 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockusing namespace WebKit; 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebCore { 106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 10754cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Blockstatic WebWidgetClient* toWebWidgetClient(Widget* widget) 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!widget) 110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return 0; 111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Block FrameView* view; 113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (widget->isFrameView()) 114643ca7872b450ea4efacab6188849e5aac2ba161Steve Block view = static_cast<FrameView*>(widget); 115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block else if (widget->parent() && widget->parent()->isFrameView()) 116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block view = static_cast<FrameView*>(widget->parent()); 117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block else 118643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 119643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block Page* page = view->frame() ? view->frame()->page() : 0; 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!page) 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 12454cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block void* webView = page->chrome()->client()->webView(); 12554cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block if (!webView) 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 12754cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block 12854cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block return static_cast<WebViewImpl*>(webView)->client(); 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 131692e5dbf12901edacf14812a6fae25462920af42Steve Blockstatic WebCookieJar* getCookieJar(const Document* document) 132692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 133692e5dbf12901edacf14812a6fae25462920af42Steve Block WebFrameImpl* frameImpl = WebFrameImpl::fromFrame(document->frame()); 134692e5dbf12901edacf14812a6fae25462920af42Steve Block if (!frameImpl || !frameImpl->client()) 135692e5dbf12901edacf14812a6fae25462920af42Steve Block return 0; 136f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebCookieJar* cookieJar = frameImpl->client()->cookieJar(frameImpl); 137692e5dbf12901edacf14812a6fae25462920af42Steve Block if (!cookieJar) 138692e5dbf12901edacf14812a6fae25462920af42Steve Block cookieJar = webKitClient()->cookieJar(); 139692e5dbf12901edacf14812a6fae25462920af42Steve Block return cookieJar; 140692e5dbf12901edacf14812a6fae25462920af42Steve Block} 141692e5dbf12901edacf14812a6fae25462920af42Steve Block 1426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen// Cache ---------------------------------------------------------------------- 1436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 144ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::cacheMetadata(const KURL& url, double responseTime, const Vector<char>& data) 1456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 1466c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen webKitClient()->cacheMetadata(url, responseTime, data.data(), data.size()); 1476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Clipboard ------------------------------------------------------------------ 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 151ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::clipboardIsFormatAvailable( 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PasteboardPrivate::ClipboardFormat format, 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PasteboardPrivate::ClipboardBuffer buffer) 154643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 155643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->clipboard()->isFormatAvailable( 156643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static_cast<WebClipboard::Format>(format), 157643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static_cast<WebClipboard::Buffer>(buffer)); 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 160ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::clipboardReadPlainText( 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PasteboardPrivate::ClipboardBuffer buffer) 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->clipboard()->readPlainText( 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static_cast<WebClipboard::Buffer>(buffer)); 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 167ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::clipboardReadHTML( 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PasteboardPrivate::ClipboardBuffer buffer, 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block String* htmlText, KURL* sourceURL) 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURL url; 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *htmlText = webKitClient()->clipboard()->readHTML( 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static_cast<WebClipboard::Buffer>(buffer), &url); 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *sourceURL = url; 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochPassRefPtr<SharedBuffer> PlatformBridge::clipboardReadImage( 1782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch PasteboardPrivate::ClipboardBuffer buffer) 1792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 1802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return webKitClient()->clipboard()->readImage(static_cast<WebClipboard::Buffer>(buffer)); 1812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 1822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 183ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::clipboardWriteSelection(const String& htmlText, 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const KURL& sourceURL, 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const String& plainText, 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool writeSmartPaste) 187643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 188643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->clipboard()->writeHTML( 189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block htmlText, sourceURL, plainText, writeSmartPaste); 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 192ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::clipboardWritePlainText(const String& plainText) 193643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 194643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->clipboard()->writePlainText(plainText); 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 197ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::clipboardWriteURL(const KURL& url, const String& title) 198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 199643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->clipboard()->writeURL(url, title); 200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 201643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 202ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::clipboardWriteImage(NativeImagePtr image, 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const KURL& sourceURL, 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const String& title) 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 206643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if WEBKIT_USING_SKIA 207643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebImage webImage(*image); 208643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#else 209643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebImage webImage(image); 210643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->clipboard()->writeImage(webImage, sourceURL, title); 212643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 213643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 214ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::clipboardWriteData(const String& type, 2155ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen const String& data, 2165ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen const String& metadata) 217ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 2185ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen webKitClient()->clipboard()->writeData(type, data, metadata); 219ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 220ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 221ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochHashSet<String> PlatformBridge::clipboardReadAvailableTypes( 22281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch PasteboardPrivate::ClipboardBuffer buffer, bool* containsFilenames) 223ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 22481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebVector<WebString> result = webKitClient()->clipboard()->readAvailableTypes( 225ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block static_cast<WebClipboard::Buffer>(buffer), containsFilenames); 226ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block HashSet<String> types; 227ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block for (size_t i = 0; i < result.size(); ++i) 228ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block types.add(result[i]); 229ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block return types; 230ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 231ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 23281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochbool PlatformBridge::clipboardReadData(PasteboardPrivate::ClipboardBuffer buffer, 23381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch const String& type, String& data, String& metadata) 234ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 235ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block WebString resultData; 236ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block WebString resultMetadata; 23781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch bool succeeded = webKitClient()->clipboard()->readData( 238ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block static_cast<WebClipboard::Buffer>(buffer), type, &resultData, &resultMetadata); 239ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block if (succeeded) { 240ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block data = resultData; 241ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block metadata = resultMetadata; 242ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block } 243ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block return succeeded; 244ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 245ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 24681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochVector<String> PlatformBridge::clipboardReadFilenames(PasteboardPrivate::ClipboardBuffer buffer) 247ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 24881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebVector<WebString> result = webKitClient()->clipboard()->readFilenames( 249ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block static_cast<WebClipboard::Buffer>(buffer)); 250ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block Vector<String> convertedResult; 251ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block for (size_t i = 0; i < result.size(); ++i) 252ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block convertedResult.append(result[i]); 253ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block return convertedResult; 254ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 255ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 256643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Cookies -------------------------------------------------------------------- 257643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 258ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::setCookies(const Document* document, const KURL& url, 259692e5dbf12901edacf14812a6fae25462920af42Steve Block const String& value) 260643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 261692e5dbf12901edacf14812a6fae25462920af42Steve Block WebCookieJar* cookieJar = getCookieJar(document); 262692e5dbf12901edacf14812a6fae25462920af42Steve Block if (cookieJar) 263692e5dbf12901edacf14812a6fae25462920af42Steve Block cookieJar->setCookie(url, document->firstPartyForCookies(), value); 264692e5dbf12901edacf14812a6fae25462920af42Steve Block} 265692e5dbf12901edacf14812a6fae25462920af42Steve Block 266ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::cookies(const Document* document, const KURL& url) 267692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 268692e5dbf12901edacf14812a6fae25462920af42Steve Block String result; 269692e5dbf12901edacf14812a6fae25462920af42Steve Block WebCookieJar* cookieJar = getCookieJar(document); 270692e5dbf12901edacf14812a6fae25462920af42Steve Block if (cookieJar) 271692e5dbf12901edacf14812a6fae25462920af42Steve Block result = cookieJar->cookies(url, document->firstPartyForCookies()); 272692e5dbf12901edacf14812a6fae25462920af42Steve Block return result; 273643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 274643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 275ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::cookieRequestHeaderFieldValue(const Document* document, 276692e5dbf12901edacf14812a6fae25462920af42Steve Block const KURL& url) 277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 278692e5dbf12901edacf14812a6fae25462920af42Steve Block String result; 279692e5dbf12901edacf14812a6fae25462920af42Steve Block WebCookieJar* cookieJar = getCookieJar(document); 280692e5dbf12901edacf14812a6fae25462920af42Steve Block if (cookieJar) 281692e5dbf12901edacf14812a6fae25462920af42Steve Block result = cookieJar->cookieRequestHeaderFieldValue(url, document->firstPartyForCookies()); 282692e5dbf12901edacf14812a6fae25462920af42Steve Block return result; 283643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 285ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::rawCookies(const Document* document, const KURL& url, Vector<Cookie>& rawCookies) 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 287692e5dbf12901edacf14812a6fae25462920af42Steve Block rawCookies.clear(); 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebVector<WebCookie> webCookies; 289692e5dbf12901edacf14812a6fae25462920af42Steve Block 290692e5dbf12901edacf14812a6fae25462920af42Steve Block WebCookieJar* cookieJar = getCookieJar(document); 291692e5dbf12901edacf14812a6fae25462920af42Steve Block if (cookieJar) 292692e5dbf12901edacf14812a6fae25462920af42Steve Block cookieJar->rawCookies(url, document->firstPartyForCookies(), webCookies); 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (unsigned i = 0; i < webCookies.size(); ++i) { 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCookie& webCookie = webCookies[i]; 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block Cookie cookie(webCookie.name, 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webCookie.value, 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webCookie.domain, 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webCookie.path, 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webCookie.expires, 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webCookie.httpOnly, 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webCookie.secure, 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webCookie.session); 304692e5dbf12901edacf14812a6fae25462920af42Steve Block rawCookies.append(cookie); 305643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 306643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return true; 307643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 308643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 309ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::deleteCookie(const Document* document, const KURL& url, const String& cookieName) 310643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 311692e5dbf12901edacf14812a6fae25462920af42Steve Block WebCookieJar* cookieJar = getCookieJar(document); 312692e5dbf12901edacf14812a6fae25462920af42Steve Block if (cookieJar) 313692e5dbf12901edacf14812a6fae25462920af42Steve Block cookieJar->deleteCookie(url, cookieName); 314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 315643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 316ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::cookiesEnabled(const Document* document) 317d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 318dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool result = false; 319692e5dbf12901edacf14812a6fae25462920af42Steve Block WebCookieJar* cookieJar = getCookieJar(document); 320692e5dbf12901edacf14812a6fae25462920af42Steve Block if (cookieJar) 321692e5dbf12901edacf14812a6fae25462920af42Steve Block result = cookieJar->cookiesEnabled(document->cookieURL(), document->firstPartyForCookies()); 322692e5dbf12901edacf14812a6fae25462920af42Steve Block return result; 323d0825bca7fe65beaee391d30da42e937db621564Steve Block} 324d0825bca7fe65beaee391d30da42e937db621564Steve Block 325643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// DNS ------------------------------------------------------------------------ 326643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 327ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::prefetchDNS(const String& hostname) 328643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 329643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->prefetchHostName(hostname); 330643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 331643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 332643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// File ------------------------------------------------------------------------ 333643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 334ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::fileExists(const String& path) 335643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 336f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->fileExists(path); 337643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 338643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 339ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::deleteFile(const String& path) 340643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 341f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->deleteFile(path); 342643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 343643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 344ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::deleteEmptyDirectory(const String& path) 345643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 346f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->deleteEmptyDirectory(path); 347643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 348643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 349ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::getFileSize(const String& path, long long& result) 350643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 351f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->getFileSize(path, result); 352643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 353643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 354ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::revealFolderInOS(const String& path) 35528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 35628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu webKitClient()->fileUtilities()->revealFolderInOS(path); 35728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 35828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 359ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::getFileModificationTime(const String& path, time_t& result) 360643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 361dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block double modificationTime; 362f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick if (!webKitClient()->fileUtilities()->getFileModificationTime(path, modificationTime)) 363e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block return false; 364dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block result = static_cast<time_t>(modificationTime); 365dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return true; 366643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 367643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 368ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::directoryName(const String& path) 369643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 370f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->directoryName(path); 371643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 372643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 373ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::pathByAppendingComponent(const String& path, const String& component) 374643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 375f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->pathByAppendingComponent(path, component); 376643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 377643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 378ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::makeAllDirectories(const String& path) 379643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 380f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->makeAllDirectories(path); 381643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 382643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 383ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::getAbsolutePath(const String& path) 384643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 385f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->getAbsolutePath(path); 386643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 387643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 388ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::isDirectory(const String& path) 389643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 390f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->isDirectory(path); 391643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 392643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 393ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochKURL PlatformBridge::filePathToURL(const String& path) 394643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 395f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->filePathToURL(path); 396643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 397643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 398ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochPlatformFileHandle PlatformBridge::openFile(const String& path, FileOpenMode mode) 39921939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 400f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->openFile(path, mode); 40121939df44de1705786c545cd1bf519d47250322dBen Murdoch} 40221939df44de1705786c545cd1bf519d47250322dBen Murdoch 403ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::closeFile(PlatformFileHandle& handle) 40421939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 405f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick webKitClient()->fileUtilities()->closeFile(handle); 40621939df44de1705786c545cd1bf519d47250322dBen Murdoch} 40721939df44de1705786c545cd1bf519d47250322dBen Murdoch 408ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochlong long PlatformBridge::seekFile(PlatformFileHandle handle, long long offset, FileSeekOrigin origin) 40921939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 410f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->seekFile(handle, offset, origin); 41121939df44de1705786c545cd1bf519d47250322dBen Murdoch} 41221939df44de1705786c545cd1bf519d47250322dBen Murdoch 413ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::truncateFile(PlatformFileHandle handle, long long offset) 41421939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 415f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->truncateFile(handle, offset); 41621939df44de1705786c545cd1bf519d47250322dBen Murdoch} 41721939df44de1705786c545cd1bf519d47250322dBen Murdoch 418ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochint PlatformBridge::readFromFile(PlatformFileHandle handle, char* data, int length) 41921939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 420f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->readFromFile(handle, data, length); 42121939df44de1705786c545cd1bf519d47250322dBen Murdoch} 42221939df44de1705786c545cd1bf519d47250322dBen Murdoch 423ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochint PlatformBridge::writeToFile(PlatformFileHandle handle, const char* data, int length) 42421939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 425f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return webKitClient()->fileUtilities()->writeToFile(handle, data, length); 42621939df44de1705786c545cd1bf519d47250322dBen Murdoch} 42721939df44de1705786c545cd1bf519d47250322dBen Murdoch 428643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Font ----------------------------------------------------------------------- 429643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 430d0825bca7fe65beaee391d30da42e937db621564Steve Block#if OS(WINDOWS) 431ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::ensureFontLoaded(HFONT font) 432643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 433643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebSandboxSupport* ss = webKitClient()->sandboxSupport(); 434643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 435643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // if there is no sandbox, then we can assume the font 436643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // was able to be loaded successfully already 437643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return ss ? ss->ensureFontLoaded(font) : true; 438643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 439643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 440643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 441bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if OS(LINUX) || OS(FREEBSD) 44281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochString PlatformBridge::getFontFamilyForCharacters(const UChar* characters, size_t numCharacters, const char* preferredLocale) 443643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 444643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (webKitClient()->sandboxSupport()) 44581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return webKitClient()->sandboxSupport()->getFontFamilyForCharacters(characters, numCharacters, preferredLocale); 446643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 44781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebCString family = WebFontInfo::familyForChars(characters, numCharacters, preferredLocale); 448643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (family.data()) 449643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString::fromUTF8(family.data()); 450643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 451643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 452643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 453dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 454ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::getRenderStyleForStrike(const char* font, int sizeAndStyle, FontRenderStyle* result) 455dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 456dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebFontRenderStyle style; 457dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 458dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (webKitClient()->sandboxSupport()) 459dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block webKitClient()->sandboxSupport()->getRenderStyleForStrike(font, sizeAndStyle, &style); 460dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block else 461dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebFontInfo::renderStyleForStrike(font, sizeAndStyle, &style); 462dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 463dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block style.toFontRenderStyle(result); 464dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 465643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 466643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 46706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if OS(DARWIN) 468ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::loadFont(NSFont* srcFont, ATSFontContainerRef* out) 46906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 47006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen WebSandboxSupport* ss = webKitClient()->sandboxSupport(); 47106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen if (ss) 47206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return ss->loadFont(srcFont, out); 47306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 47406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen // This function should only be called in response to an error loading a 47506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen // font due to being blocked by the sandbox. 47606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen // This by definition shouldn't happen if there is no sandbox support. 47706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ASSERT_NOT_REACHED(); 47806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *out = 0; 47906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return false; 48006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 48106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif 48206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 4830617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen// Databases ------------------------------------------------------------------ 484643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 485ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochPlatformFileHandle PlatformBridge::databaseOpenFile(const String& vfsFileName, int desiredFlags) 486643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 4876c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return webKitClient()->databaseOpenFile(WebString(vfsFileName), desiredFlags); 488643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 489643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 490ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochint PlatformBridge::databaseDeleteFile(const String& vfsFileName, bool syncDir) 491643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 492643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->databaseDeleteFile(WebString(vfsFileName), syncDir); 493643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 494643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 495ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochlong PlatformBridge::databaseGetFileAttributes(const String& vfsFileName) 496643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 497643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->databaseGetFileAttributes(WebString(vfsFileName)); 498643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 499643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 500ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochlong long PlatformBridge::databaseGetFileSize(const String& vfsFileName) 501643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 502643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->databaseGetFileSize(WebString(vfsFileName)); 503643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 504643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 505dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block// Indexed Database ----------------------------------------------------------- 506dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 507ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochPassRefPtr<IDBFactoryBackendInterface> PlatformBridge::idbFactory() 508dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 509dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // There's no reason why we need to allocate a new proxy each time, but 510dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // there's also no strong reason not to. 511db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block return IDBFactoryBackendProxy::create(); 512dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 513dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 514ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::createIDBKeysFromSerializedValuesAndKeyPath(const Vector<RefPtr<SerializedScriptValue> >& values, const String& keyPath, Vector<RefPtr<IDBKey> >& keys) 515e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 516e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block WebVector<WebSerializedScriptValue> webValues = values; 517e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block WebVector<WebIDBKey> webKeys; 51881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch webKitClient()->createIDBKeysFromSerializedValuesAndKeyPath(webValues, keyPath, webKeys); 519e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 520e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block size_t webKeysSize = webKeys.size(); 521e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block keys.reserveCapacity(webKeysSize); 522e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block for (size_t i = 0; i < webKeysSize; ++i) 523e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block keys.append(PassRefPtr<IDBKey>(webKeys[i])); 524e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 525e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 52681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochPassRefPtr<SerializedScriptValue> PlatformBridge::injectIDBKeyIntoSerializedValue(PassRefPtr<IDBKey> key, PassRefPtr<SerializedScriptValue> value, const String& keyPath) 52781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 52881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return webKitClient()->injectIDBKeyIntoSerializedValue(key, value, keyPath); 52981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 53081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 531643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Keygen --------------------------------------------------------------------- 532643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 533ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::signedPublicKeyAndChallengeString( 534643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned keySizeIndex, const String& challenge, const KURL& url) 535643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 536643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->signedPublicKeyAndChallengeString(keySizeIndex, 537643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebString(challenge), 538643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURL(url)); 539643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 540643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 541643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Language ------------------------------------------------------------------- 542643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 543ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::computedDefaultLanguage() 544643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 545643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->defaultLocale(); 546643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 547643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 548643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// LayoutTestMode ------------------------------------------------------------- 549643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 550ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::layoutTestMode() 551643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 552643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebKit::layoutTestMode(); 553643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 554643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 555643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// MimeType ------------------------------------------------------------------- 556643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 557ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::isSupportedImageMIMEType(const String& mimeType) 558643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 559643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->mimeRegistry()->supportsImageMIMEType(mimeType) 560643ca7872b450ea4efacab6188849e5aac2ba161Steve Block != WebMimeRegistry::IsNotSupported; 561643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 562643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 563ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::isSupportedJavaScriptMIMEType(const String& mimeType) 564643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 565643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->mimeRegistry()->supportsJavaScriptMIMEType(mimeType) 566643ca7872b450ea4efacab6188849e5aac2ba161Steve Block != WebMimeRegistry::IsNotSupported; 567643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 568643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 569ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::isSupportedNonImageMIMEType(const String& mimeType) 570643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 571643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->mimeRegistry()->supportsNonImageMIMEType(mimeType) 572643ca7872b450ea4efacab6188849e5aac2ba161Steve Block != WebMimeRegistry::IsNotSupported; 573643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 574643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 575ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::mimeTypeForExtension(const String& extension) 576643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 577643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->mimeRegistry()->mimeTypeForExtension(extension); 578643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 579643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 580ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::mimeTypeFromFile(const String& path) 581643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 582643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->mimeRegistry()->mimeTypeFromFile(path); 583643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 584643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 585ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochString PlatformBridge::preferredExtensionForMIMEType(const String& mimeType) 586643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 587643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->mimeRegistry()->preferredExtensionForMIMEType(mimeType); 588643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 589643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 590643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Plugin --------------------------------------------------------------------- 591643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 592ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::plugins(bool refresh, Vector<PluginInfo>* results) 593643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 594643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebPluginListBuilderImpl builder(results); 595643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->getPluginList(refresh, &builder); 596643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return true; // FIXME: There is no need for this function to return a value. 597643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 598643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 599ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochNPObject* PlatformBridge::pluginScriptableObject(Widget* widget) 600643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 601a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (!widget || !widget->isPluginContainer()) 602643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 603643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 604643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return static_cast<WebPluginContainerImpl*>(widget)->scriptableObject(); 605643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 606643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 607643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Resources ------------------------------------------------------------------ 608643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 609ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochPassRefPtr<Image> PlatformBridge::loadPlatformImageResource(const char* name) 610643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 611643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebData& resource = webKitClient()->loadResource(name); 612643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (resource.isEmpty()) 613643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return Image::nullImage(); 614643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 615643ca7872b450ea4efacab6188849e5aac2ba161Steve Block RefPtr<Image> image = BitmapImage::create(); 616643ca7872b450ea4efacab6188849e5aac2ba161Steve Block image->setData(resource, true); 617643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return image; 618643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 619643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 6204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#if ENABLE(WEB_AUDIO) 6214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 622ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochPassOwnPtr<AudioBus> PlatformBridge::loadPlatformAudioResource(const char* name, double sampleRate) 6234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 6244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang const WebData& resource = webKitClient()->loadResource(name); 6254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (resource.isEmpty()) 6264576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return 0; 6274576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 6284576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return decodeAudioFileData(resource.data(), resource.size(), sampleRate); 6294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 6304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 631ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochPassOwnPtr<AudioBus> PlatformBridge::decodeAudioFileData(const char* data, size_t size, double sampleRate) 6324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 6334576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang WebAudioBus webAudioBus; 634f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (webKitClient()->loadAudioResource(&webAudioBus, data, size, sampleRate)) 6354576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return webAudioBus.release(); 6364576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return 0; 6374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 6384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 6394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#endif // ENABLE(WEB_AUDIO) 6404576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 641643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Sandbox -------------------------------------------------------------------- 642643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 643ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::sandboxEnabled() 644643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 645643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->sandboxEnabled(); 646643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 647643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 648643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// SharedTimers --------------------------------------------------------------- 649643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 650ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::setSharedTimerFiredFunction(void (*func)()) 651643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 652643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->setSharedTimerFiredFunction(func); 653643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 654643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 655ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::setSharedTimerFireTime(double fireTime) 656643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 657643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->setSharedTimerFireTime(fireTime); 658643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 659643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 660ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::stopSharedTimer() 661643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 662643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->stopSharedTimer(); 663643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 664643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 665643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// StatsCounters -------------------------------------------------------------- 666643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 667ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::decrementStatsCounter(const char* name) 668643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 669643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->decrementStatsCounter(name); 670643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 671643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 672ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::incrementStatsCounter(const char* name) 673643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 674643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->incrementStatsCounter(name); 675643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 676643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 677ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::histogramCustomCounts(const char* name, int sample, int min, int max, int bucketCount) 6784a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch{ 6794a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch webKitClient()->histogramCustomCounts(name, sample, min, max, bucketCount); 6804a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch} 6814a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch 682ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::histogramEnumeration(const char* name, int sample, int boundaryValue) 6834a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch{ 6844a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch webKitClient()->histogramEnumeration(name, sample, boundaryValue); 6854a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch} 6864a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch 687643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Sudden Termination --------------------------------------------------------- 688643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 689ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::suddenTerminationChanged(bool enabled) 690643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 691643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->suddenTerminationChanged(enabled); 692643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 693643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 694643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// SystemTime ----------------------------------------------------------------- 695643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 696ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochdouble PlatformBridge::currentTime() 697643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 698643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->currentTime(); 699643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 700643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 701643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Theming -------------------------------------------------------------------- 702643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 703d0825bca7fe65beaee391d30da42e937db621564Steve Block#if OS(WINDOWS) 704643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 705ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintButton( 706643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext* gc, int part, int state, int classicState, 707643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const IntRect& rect) 708643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 709643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->themeEngine()->paintButton( 710643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gc->platformContext()->canvas(), part, state, classicState, rect); 711643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 712643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 713ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintMenuList( 714643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext* gc, int part, int state, int classicState, 715643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const IntRect& rect) 716643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 717643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->themeEngine()->paintMenuList( 718643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gc->platformContext()->canvas(), part, state, classicState, rect); 719643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 720643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 721ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintScrollbarArrow( 722643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext* gc, int state, int classicState, 723643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const IntRect& rect) 724643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 725643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->themeEngine()->paintScrollbarArrow( 726643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gc->platformContext()->canvas(), state, classicState, rect); 727643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 728643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 729ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintScrollbarThumb( 730643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext* gc, int part, int state, int classicState, 731643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const IntRect& rect) 732643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 733643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->themeEngine()->paintScrollbarThumb( 734643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gc->platformContext()->canvas(), part, state, classicState, rect); 735643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 736643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 737ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintScrollbarTrack( 738643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext* gc, int part, int state, int classicState, 739643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const IntRect& rect, const IntRect& alignRect) 740643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 741643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->themeEngine()->paintScrollbarTrack( 742643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gc->platformContext()->canvas(), part, state, classicState, rect, 743643ca7872b450ea4efacab6188849e5aac2ba161Steve Block alignRect); 744643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 745643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 746ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintSpinButton( 747967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch GraphicsContext* gc, int part, int state, int classicState, 748967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const IntRect& rect) 749967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{ 750967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch webKitClient()->themeEngine()->paintSpinButton( 751967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch gc->platformContext()->canvas(), part, state, classicState, rect); 752967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch} 753967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 754ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintTextField( 755643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext* gc, int part, int state, int classicState, 756643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const IntRect& rect, const Color& color, bool fillContentArea, 757643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool drawEdges) 758643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 759643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Fallback to white when |color| is invalid. 760643ca7872b450ea4efacab6188849e5aac2ba161Steve Block RGBA32 backgroundColor = color.isValid() ? color.rgb() : Color::white; 761643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 762643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->themeEngine()->paintTextField( 763643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gc->platformContext()->canvas(), part, state, classicState, rect, 764643ca7872b450ea4efacab6188849e5aac2ba161Steve Block backgroundColor, fillContentArea, drawEdges); 765643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 766643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 767ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintTrackbar( 768643ca7872b450ea4efacab6188849e5aac2ba161Steve Block GraphicsContext* gc, int part, int state, int classicState, 769643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const IntRect& rect) 770643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 771643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->themeEngine()->paintTrackbar( 772643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gc->platformContext()->canvas(), part, state, classicState, rect); 773643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 774643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 775ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintProgressBar( 776e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block GraphicsContext* gc, const IntRect& barRect, const IntRect& valueRect, bool determinate, double animatedSeconds) 7776c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 7786c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen webKitClient()->themeEngine()->paintProgressBar( 779e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block gc->platformContext()->canvas(), barRect, valueRect, determinate, animatedSeconds); 7806c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 7816c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 782a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#elif OS(LINUX) 783a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 784ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochstatic WebThemeEngine::Part WebThemePart(PlatformBridge::ThemePart part) 785a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 786a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch switch (part) { 787ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarDownArrow: return WebThemeEngine::PartScrollbarDownArrow; 788ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarLeftArrow: return WebThemeEngine::PartScrollbarLeftArrow; 789ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarRightArrow: return WebThemeEngine::PartScrollbarRightArrow; 790ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarUpArrow: return WebThemeEngine::PartScrollbarUpArrow; 791ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarHorizontalThumb: return WebThemeEngine::PartScrollbarHorizontalThumb; 792ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarVerticalThumb: return WebThemeEngine::PartScrollbarVerticalThumb; 793ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarHorizontalTrack: return WebThemeEngine::PartScrollbarHorizontalTrack; 794ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarVerticalTrack: return WebThemeEngine::PartScrollbarVerticalTrack; 795ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartCheckbox: return WebThemeEngine::PartCheckbox; 796ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartRadio: return WebThemeEngine::PartRadio; 797ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartButton: return WebThemeEngine::PartButton; 798ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartTextField: return WebThemeEngine::PartTextField; 799ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartMenuList: return WebThemeEngine::PartMenuList; 800ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartSliderTrack: return WebThemeEngine::PartSliderTrack; 801ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartSliderThumb: return WebThemeEngine::PartSliderThumb; 802ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartInnerSpinButton: return WebThemeEngine::PartInnerSpinButton; 803ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartProgressBar: return WebThemeEngine::PartProgressBar; 804a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 805a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ASSERT_NOT_REACHED(); 806a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return WebThemeEngine::PartScrollbarDownArrow; 807a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 808a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 809ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochstatic WebThemeEngine::State WebThemeState(PlatformBridge::ThemePaintState state) 810a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 811a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch switch (state) { 812ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::StateDisabled: return WebThemeEngine::StateDisabled; 813ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::StateHover: return WebThemeEngine::StateHover; 814ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::StateNormal: return WebThemeEngine::StateNormal; 815ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::StatePressed: return WebThemeEngine::StatePressed; 816a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 817a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ASSERT_NOT_REACHED(); 818a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return WebThemeEngine::StateDisabled; 819a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 820a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 821ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochstatic void GetWebThemeExtraParams(PlatformBridge::ThemePart part, PlatformBridge::ThemePaintState state, const PlatformBridge::ThemePaintExtraParams* extraParams, WebThemeEngine::ExtraParams* webThemeExtraParams) 822a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 823ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch switch (part) { 824ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarHorizontalTrack: 825ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartScrollbarVerticalTrack: 826a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch webThemeExtraParams->scrollbarTrack.trackX = extraParams->scrollbarTrack.trackX; 827a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch webThemeExtraParams->scrollbarTrack.trackY = extraParams->scrollbarTrack.trackY; 828a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch webThemeExtraParams->scrollbarTrack.trackWidth = extraParams->scrollbarTrack.trackWidth; 829a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch webThemeExtraParams->scrollbarTrack.trackHeight = extraParams->scrollbarTrack.trackHeight; 830ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 831ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartCheckbox: 832ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->button.checked = extraParams->button.checked; 833ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->button.indeterminate = extraParams->button.indeterminate; 834ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 835ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartRadio: 836ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->button.checked = extraParams->button.checked; 837ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 838ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartButton: 839ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->button.isDefault = extraParams->button.isDefault; 84081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch webThemeExtraParams->button.hasBorder = extraParams->button.hasBorder; 841ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->button.backgroundColor = extraParams->button.backgroundColor; 842ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 843ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartTextField: 844ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->textField.isTextArea = extraParams->textField.isTextArea; 845ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->textField.isListbox = extraParams->textField.isListbox; 846ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->textField.backgroundColor = extraParams->textField.backgroundColor; 847ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 848ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartMenuList: 84981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch webThemeExtraParams->menuList.hasBorder = extraParams->menuList.hasBorder; 85081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch webThemeExtraParams->menuList.hasBorderRadius = extraParams->menuList.hasBorderRadius; 851ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->menuList.arrowX = extraParams->menuList.arrowX; 852ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->menuList.arrowY = extraParams->menuList.arrowY; 853ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->menuList.backgroundColor = extraParams->menuList.backgroundColor; 854ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 855ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartSliderTrack: 856ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartSliderThumb: 857ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->slider.vertical = extraParams->slider.vertical; 858ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->slider.inDrag = extraParams->slider.inDrag; 859ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 860ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartInnerSpinButton: 861ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->innerSpin.spinUp = extraParams->innerSpin.spinUp; 862ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->innerSpin.readOnly = extraParams->innerSpin.readOnly; 863ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 864ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch case PlatformBridge::PartProgressBar: 865ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->progressBar.determinate = extraParams->progressBar.determinate; 866ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->progressBar.valueRectX = extraParams->progressBar.valueRectX; 867ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->progressBar.valueRectY = extraParams->progressBar.valueRectY; 868ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->progressBar.valueRectWidth = extraParams->progressBar.valueRectWidth; 869ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch webThemeExtraParams->progressBar.valueRectHeight = extraParams->progressBar.valueRectHeight; 870ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; 871ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch default: 872ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch break; // Parts that have no extra params get here. 873a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 874a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 875a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 876ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochIntSize PlatformBridge::getThemePartSize(ThemePart part) 877a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 878a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return webKitClient()->themeEngine()->getSize(WebThemePart(part)); 879a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 880a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 881ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintThemePart( 882a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch GraphicsContext* gc, ThemePart part, ThemePaintState state, const IntRect& rect, const ThemePaintExtraParams* extraParams) 883a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 884a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch WebThemeEngine::ExtraParams webThemeExtraParams; 885a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch GetWebThemeExtraParams(part, state, extraParams, &webThemeExtraParams); 886a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch webKitClient()->themeEngine()->paint( 887a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch gc->platformContext()->canvas(), WebThemePart(part), WebThemeState(state), rect, &webThemeExtraParams); 888a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 889a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 890cad810f21b803229eb11403f9209855525a25d57Steve Block#elif OS(DARWIN) 891cad810f21b803229eb11403f9209855525a25d57Steve Block 892ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::paintScrollbarThumb( 893cad810f21b803229eb11403f9209855525a25d57Steve Block GraphicsContext* gc, ThemePaintState state, ThemePaintSize size, const IntRect& rect, const ThemePaintScrollbarInfo& scrollbarInfo) 894cad810f21b803229eb11403f9209855525a25d57Steve Block{ 895cad810f21b803229eb11403f9209855525a25d57Steve Block WebThemeEngine::ScrollbarInfo webThemeScrollbarInfo; 896cad810f21b803229eb11403f9209855525a25d57Steve Block 897cad810f21b803229eb11403f9209855525a25d57Steve Block webThemeScrollbarInfo.orientation = static_cast<WebThemeEngine::ScrollbarOrientation>(scrollbarInfo.orientation); 898cad810f21b803229eb11403f9209855525a25d57Steve Block webThemeScrollbarInfo.parent = static_cast<WebThemeEngine::ScrollbarParent>(scrollbarInfo.parent); 899cad810f21b803229eb11403f9209855525a25d57Steve Block webThemeScrollbarInfo.maxValue = scrollbarInfo.maxValue; 900cad810f21b803229eb11403f9209855525a25d57Steve Block webThemeScrollbarInfo.currentValue = scrollbarInfo.currentValue; 901cad810f21b803229eb11403f9209855525a25d57Steve Block webThemeScrollbarInfo.visibleSize = scrollbarInfo.visibleSize; 902cad810f21b803229eb11403f9209855525a25d57Steve Block webThemeScrollbarInfo.totalSize = scrollbarInfo.totalSize; 903cad810f21b803229eb11403f9209855525a25d57Steve Block 904cad810f21b803229eb11403f9209855525a25d57Steve Block webKitClient()->themeEngine()->paintScrollbarThumb( 905cad810f21b803229eb11403f9209855525a25d57Steve Block gc->platformContext(), 906cad810f21b803229eb11403f9209855525a25d57Steve Block static_cast<WebThemeEngine::State>(state), 907cad810f21b803229eb11403f9209855525a25d57Steve Block static_cast<WebThemeEngine::Size>(size), 908cad810f21b803229eb11403f9209855525a25d57Steve Block rect, 909cad810f21b803229eb11403f9209855525a25d57Steve Block webThemeScrollbarInfo); 910cad810f21b803229eb11403f9209855525a25d57Steve Block} 911cad810f21b803229eb11403f9209855525a25d57Steve Block 912643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 913643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 914643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Trace Event ---------------------------------------------------------------- 915643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 916ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::traceEventBegin(const char* name, void* id, const char* extra) 917643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 918643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->traceEventBegin(name, id, extra); 919643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 920643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 921ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::traceEventEnd(const char* name, void* id, const char* extra) 922643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 923643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webKitClient()->traceEventEnd(name, id, extra); 924643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 925643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 926643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Visited Links -------------------------------------------------------------- 927643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 928ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochLinkHash PlatformBridge::visitedLinkHash(const UChar* url, unsigned length) 929643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 930643ca7872b450ea4efacab6188849e5aac2ba161Steve Block url_canon::RawCanonOutput<2048> buffer; 931643ca7872b450ea4efacab6188849e5aac2ba161Steve Block url_parse::Parsed parsed; 932643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!url_util::Canonicalize(url, length, 0, &buffer, &parsed)) 933643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; // Invalid URLs are unvisited. 934643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->visitedLinkHash(buffer.data(), buffer.length()); 935643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 936643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 937ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochLinkHash PlatformBridge::visitedLinkHash(const KURL& base, 938643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const AtomicString& attributeURL) 939643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 940643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Resolve the relative URL using googleurl and pass the absolute URL up to 941643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the embedder. We could create a GURL object from the base and resolve 942643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the relative URL that way, but calling the lower-level functions 943643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // directly saves us the string allocation in most cases. 944643ca7872b450ea4efacab6188849e5aac2ba161Steve Block url_canon::RawCanonOutput<2048> buffer; 945643ca7872b450ea4efacab6188849e5aac2ba161Steve Block url_parse::Parsed parsed; 946643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 947643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if USE(GOOGLEURL) 948643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const CString& cstr = base.utf8String(); 949643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const char* data = cstr.data(); 950643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int length = cstr.length(); 951643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const url_parse::Parsed& srcParsed = base.parsed(); 952643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#else 953643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // When we're not using GoogleURL, first canonicalize it so we can resolve it 954643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // below. 955643ca7872b450ea4efacab6188849e5aac2ba161Steve Block url_canon::RawCanonOutput<2048> srcCanon; 956643ca7872b450ea4efacab6188849e5aac2ba161Steve Block url_parse::Parsed srcParsed; 957643ca7872b450ea4efacab6188849e5aac2ba161Steve Block String str = base.string(); 958643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!url_util::Canonicalize(str.characters(), str.length(), 0, &srcCanon, &srcParsed)) 959643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 960643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const char* data = srcCanon.data(); 961643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int length = srcCanon.length(); 962643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 963643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 964643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!url_util::ResolveRelative(data, length, srcParsed, attributeURL.characters(), 965643ca7872b450ea4efacab6188849e5aac2ba161Steve Block attributeURL.length(), 0, &buffer, &parsed)) 966643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; // Invalid resolved URL. 967643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 968643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->visitedLinkHash(buffer.data(), buffer.length()); 969643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 970643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 971ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::isLinkVisited(LinkHash visitedLinkHash) 972643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 973643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return webKitClient()->isLinkVisited(visitedLinkHash); 974643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 975643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 976643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// These are temporary methods that the WebKit layer can use to call to the 977643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// Glue layer. Once the Glue layer moves entirely into the WebKit layer, these 978643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// methods will be deleted. 979643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 980ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PlatformBridge::notifyJSOutOfMemory(Frame* frame) 981643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 982643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!frame) 983643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 984643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 985643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame); 986643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!webFrame->client()) 987643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 988643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webFrame->client()->didExhaustMemoryAvailableForScript(webFrame); 989643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 990643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 991ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochint PlatformBridge::memoryUsageMB() 992643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 993643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return static_cast<int>(webKitClient()->memoryUsageMB()); 994643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 995643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 996ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochint PlatformBridge::actualMemoryUsageMB() 9975abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{ 9985abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return static_cast<int>(webKitClient()->actualMemoryUsageMB()); 9995abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 10005abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 1001ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochint PlatformBridge::screenDepth(Widget* widget) 1002643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1003643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebWidgetClient* client = toWebWidgetClient(widget); 1004643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!client) 1005643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 1006643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return client->screenInfo().depth; 1007643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1008643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1009ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochint PlatformBridge::screenDepthPerComponent(Widget* widget) 1010643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1011643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebWidgetClient* client = toWebWidgetClient(widget); 1012643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!client) 1013643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 1014643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return client->screenInfo().depthPerComponent; 1015643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1016643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1017ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::screenIsMonochrome(Widget* widget) 1018643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1019643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebWidgetClient* client = toWebWidgetClient(widget); 1020643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!client) 1021643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 1022643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return client->screenInfo().isMonochrome; 1023643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1024643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1025ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochIntRect PlatformBridge::screenRect(Widget* widget) 1026643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1027643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebWidgetClient* client = toWebWidgetClient(widget); 1028643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!client) 1029643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return IntRect(); 1030643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return client->screenInfo().rect; 1031643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1032643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1033ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochIntRect PlatformBridge::screenAvailableRect(Widget* widget) 1034643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1035643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebWidgetClient* client = toWebWidgetClient(widget); 1036643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!client) 1037643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return IntRect(); 1038643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return client->screenInfo().availableRect; 1039643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1040643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1041ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool PlatformBridge::popupsAllowed(NPP npp) 1042643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1043643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // FIXME: Give the embedder a way to control this. 1044643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return false; 1045643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1046643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1047643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWorkerContextProxy* WorkerContextProxy::create(Worker* worker) 1048643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1049643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebWorkerClientImpl::createWorkerContextProxy(worker); 1050643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1051643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1052643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebCore 1053