1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/* 2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2007 Apple Inc. All rights reserved. 3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2008 Nuanti Ltd. 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Jan Michael Alonzo <jmalonzo@gmail.com> 62fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2009,2011 Collabora Ltd. 7f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * Copyright (C) 2010 Joone Hur <joone@kldp.org> 8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without 10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions 11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met: 12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1. Redistributions of source code must retain the above copyright 14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer. 15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2. Redistributions in binary form must reproduce the above copyright 16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer in the 17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * documentation and/or other materials provided with the distribution. 18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * its contributors may be used to endorse or promote products derived 20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * from this software without specific prior written permission. 21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */ 33563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 34563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "config.h" 35563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "LayoutTestController.h" 36563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 37563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "DumpRenderTree.h" 38e14391e94c850b8bd03680c23b38978db68687a8John Reck#include "WebCoreSupport/DumpRenderTreeSupportGtk.h" 39563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "WorkQueue.h" 40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "WorkQueueItem.h" 41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <JavaScriptCore/JSRetainPtr.h> 42563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <JavaScriptCore/JSStringRef.h> 43e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block#include <cstring> 44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <iostream> 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <sstream> 46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <stdio.h> 47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <glib.h> 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <libsoup/soup.h> 49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <webkit/webkit.h> 50bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#include <wtf/gobject/GOwnPtr.h> 51563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkextern "C" { 53cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid webkit_web_inspector_execute_script(WebKitWebInspector* inspector, long callId, const gchar* script); 54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 55231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 56563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkLayoutTestController::~LayoutTestController() 57563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 58563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 59563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 60563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 61563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::addDisallowedURL(JSStringRef url) 62563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 63563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 64563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 65563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 66563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::clearBackForwardList() 67563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 68563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 69563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView); 70563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_current_item(list); 71563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_object_ref(item); 72563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 73563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // We clear the history by setting the back/forward list's capacity to 0 74563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // then restoring it back and adding back the current item. 75563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark gint limit = webkit_web_back_forward_list_get_limit(list); 76563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark webkit_web_back_forward_list_set_limit(list, 0); 77563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark webkit_web_back_forward_list_set_limit(list, limit); 78563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark webkit_web_back_forward_list_add_item(list, item); 79563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark webkit_web_back_forward_list_go_to_item(list, item); 80563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_object_unref(item); 81563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 82563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 83563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkJSStringRef LayoutTestController::copyDecodedHostName(JSStringRef name) 84563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 85563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 86563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return 0; 87563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 88563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 89563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkJSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name) 90563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 91563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 92563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return 0; 93563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 94563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid LayoutTestController::dispatchPendingLoadRequests() 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // FIXME: Implement for testing fix for 6727495 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 100563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::display() 101563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 102563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark displayWebView(); 103563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 104563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 105cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockJSRetainPtr<JSStringRef> LayoutTestController::counterValueForElementById(JSStringRef id) 106cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 107cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block gchar* idGChar = JSStringCopyUTF8CString(id); 108f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch CString counterValueGChar = DumpRenderTreeSupportGtk::counterValueForElementById(mainFrame, idGChar); 109cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block g_free(idGChar); 110f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (counterValueGChar.isNull()) 111cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return 0; 112f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch JSRetainPtr<JSStringRef> counterValue(Adopt, JSStringCreateWithUTF8CString(counterValueGChar.data())); 113cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return counterValue; 114cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 115cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 116563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::keepWebHistory() 117563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 118563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 119563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 120563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 121dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockJSValueRef LayoutTestController::computedStyleIncludingVisitedInfo(JSContextRef context, JSValueRef value) 122dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // FIXME: Implement this. 124dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return JSValueMakeUndefined(context); 125dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 126dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 127bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian MonsenJSValueRef LayoutTestController::nodesFromRect(JSContextRef context, JSValueRef value, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping) 128bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen{ 1296b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return DumpRenderTreeSupportGtk::nodesFromRect(context, value, x, y, top, right, bottom, left, ignoreClipping); 130bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen} 131bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 132dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockJSRetainPtr<JSStringRef> LayoutTestController::layerTreeAsText() const 133dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 134dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // FIXME: implement 135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block JSRetainPtr<JSStringRef> string(Adopt, JSStringCreateWithUTF8CString("")); 136dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return string; 137dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 138dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1398a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockint LayoutTestController::pageNumberForElementById(JSStringRef id, float pageWidth, float pageHeight) 1408a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{ 1418a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block gchar* idGChar = JSStringCopyUTF8CString(id); 142f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int pageNumber = DumpRenderTreeSupportGtk::pageNumberForElementById(mainFrame, idGChar, pageWidth, pageHeight); 1438a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block g_free(idGChar); 1448a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block return pageNumber; 1458a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block} 1468a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 147dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockint LayoutTestController::numberOfPages(float pageWidth, float pageHeight) 1485e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block{ 149f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return DumpRenderTreeSupportGtk::numberOfPagesForFrame(mainFrame, pageWidth, pageHeight); 1505e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block} 1515e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block 15206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSRetainPtr<JSStringRef> LayoutTestController::pageProperty(const char* propertyName, int pageNumber) const 15306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 154f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch JSRetainPtr<JSStringRef> propertyValue(Adopt, JSStringCreateWithUTF8CString(DumpRenderTreeSupportGtk::pageProperty(mainFrame, propertyName, pageNumber).data())); 155f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return propertyValue; 15606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 15706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 15806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenbool LayoutTestController::isPageBoxVisible(int pageNumber) const 15906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 160f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return DumpRenderTreeSupportGtk::isPageBoxVisible(mainFrame, pageNumber); 16106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 16206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 163ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve BlockJSRetainPtr<JSStringRef> LayoutTestController::pageSizeAndMarginsInPixels(int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) const 16406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 165f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch JSRetainPtr<JSStringRef> propertyValue(Adopt, JSStringCreateWithUTF8CString(DumpRenderTreeSupportGtk::pageSizeAndMarginsInPixels(mainFrame, pageNumber, width, height, marginTop, marginRight, marginBottom, marginLeft).data())); 166f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return propertyValue; 16706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 16806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 169563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarksize_t LayoutTestController::webHistoryItemCount() 170563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 171a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 172a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView); 173a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 174a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (!list) 175a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return -1; 176a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 177a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // We do not add the current page to the total count as it's not 178a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // considered in DRT tests 179a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return webkit_web_back_forward_list_get_back_length(list) + 180a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch webkit_web_back_forward_list_get_forward_length(list); 181563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 182563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 183231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockunsigned LayoutTestController::workerThreadCount() const 184231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 185f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return DumpRenderTreeSupportGtk::workerThreadCount(); 186231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 187231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 188563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::notifyDone() 189563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 190563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count()) 191563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark dump(); 192563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_waitToDump = false; 1930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch waitForPolicy = false; 194563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 195563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 196563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkJSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSStringRef url) 197563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 198563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // Function introduced in r28690. This may need special-casing on Windows. 199563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return JSStringRetain(url); // Do nothing on Unix. 200563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 201563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid LayoutTestController::queueLoad(JSStringRef url, JSStringRef target) 203563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 2040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gchar* relativeURL = JSStringCopyUTF8CString(url); 2050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch SoupURI* baseURI = soup_uri_new(webkit_web_frame_get_uri(mainFrame)); 206563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch SoupURI* absoluteURI = soup_uri_new_with_base(baseURI, relativeURL); 2080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch soup_uri_free(baseURI); 2090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(relativeURL); 210563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gchar* absoluteCString; 2120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (absoluteURI) { 2130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch absoluteCString = soup_uri_to_string(absoluteURI, FALSE); 2140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch soup_uri_free(absoluteURI); 2150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 2160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch absoluteCString = JSStringCopyUTF8CString(url); 217563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSRetainPtr<JSStringRef> absoluteURL(Adopt, JSStringCreateWithUTF8CString(absoluteCString)); 2190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(absoluteCString); 220563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WorkQueue::shared()->queue(new LoadItem(absoluteURL.get(), target)); 222563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 223563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 224563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setAcceptsEditing(bool acceptsEditing) 225563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 226563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 227563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark webkit_web_view_set_editable(webView, acceptsEditing); 228563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 229563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 230231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid LayoutTestController::setAlwaysAcceptCookies(bool alwaysAcceptCookies) 231231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 232dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block SoupSession* session = webkit_get_default_session(); 233dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block SoupCookieJar* jar = reinterpret_cast<SoupCookieJar*>(soup_session_get_feature(session, SOUP_TYPE_COOKIE_JAR)); 234dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 235f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick /* If the jar was not created - we create it on demand, i.e, just 236f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick in case we have HTTP requests - then we must create it here in 237f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick order to set the proper accept policy */ 238f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick if (!jar) { 239f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick jar = soup_cookie_jar_new(); 240f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick soup_session_add_feature(session, SOUP_SESSION_FEATURE(jar)); 241f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick g_object_unref(jar); 242f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick } 243f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 244dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block SoupCookieJarAcceptPolicy policy; 245dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 246dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (alwaysAcceptCookies) 247dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block policy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS; 248dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block else 249dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block policy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY; 250dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 251dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block g_object_set(G_OBJECT(jar), SOUP_COOKIE_JAR_ACCEPT_POLICY, policy, NULL); 252231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 253231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 254563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setCustomPolicyDelegate(bool setDelegate, bool permissive) 255563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 256563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 257563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 258563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid LayoutTestController::waitForPolicyDelegate() 2600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch waitForPolicy = true; 2620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setWaitToDump(true); 2630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 265dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::setScrollbarPolicy(JSStringRef orientation, JSStringRef policy) 266dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 267dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // FIXME: implement 268dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 269dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 270dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains) 271231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 272231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gchar* sourceOriginGChar = JSStringCopyUTF8CString(sourceOrigin); 273231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gchar* protocolGChar = JSStringCopyUTF8CString(protocol); 274231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gchar* hostGChar = JSStringCopyUTF8CString(host); 275f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch DumpRenderTreeSupportGtk::whiteListAccessFromOrigin(sourceOriginGChar, protocolGChar, hostGChar, includeSubdomains); 276231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(sourceOriginGChar); 277231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(protocolGChar); 278231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(hostGChar); 279231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 280231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 281dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains) 282dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 283dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // FIXME: implement 284dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 285dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 286563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setMainFrameIsFirstResponder(bool flag) 287563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 288563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 289563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 290563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 291563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setTabKeyCyclesThroughElements(bool cycles) 292563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebSettings* settings = webkit_web_view_get_settings(webView); 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_object_set(G_OBJECT(settings), "tab-key-cycles-through-elements", cycles, NULL); 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid LayoutTestController::setTimelineProfilingEnabled(bool flag) 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(view); 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebInspector* inspector = webkit_web_view_get_inspector(view); 304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_object_set(G_OBJECT(inspector), "timeline-profiling-enabled", flag, NULL); 305563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 306563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 307563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setUseDashboardCompatibilityMode(bool flag) 308563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 309563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 310563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 311563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 312563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstatic gchar* userStyleSheet = NULL; 313563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstatic gboolean userStyleSheetEnabled = TRUE; 314563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 315563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setUserStyleSheetEnabled(bool flag) 316563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 317563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark userStyleSheetEnabled = flag; 318563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 319563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 320563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebSettings* settings = webkit_web_view_get_settings(webView); 321563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (flag && userStyleSheet) 322563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_object_set(G_OBJECT(settings), "user-stylesheet-uri", userStyleSheet, NULL); 323563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark else 324563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_object_set(G_OBJECT(settings), "user-stylesheet-uri", "", NULL); 325563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 326563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 327563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setUserStyleSheetLocation(JSStringRef path) 328563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 329563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_free(userStyleSheet); 330563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark userStyleSheet = JSStringCopyUTF8CString(path); 331563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (userStyleSheetEnabled) 332563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark setUserStyleSheetEnabled(true); 333563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 334563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 3352bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid LayoutTestController::setValueForUser(JSContextRef context, JSValueRef nodeObject, JSStringRef value) 33681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 3372bde8e466a4451c7319e3a072d118917957d6554Steve Block DumpRenderTreeSupportGtk::setValueForUser(context, nodeObject, value); 33881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 33981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 340e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockvoid LayoutTestController::setViewModeMediaFeature(JSStringRef mode) 341e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 342e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 343e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block ASSERT(view); 344e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 345e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block char* viewMode = JSStringCopyUTF8CString(mode); 346e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 347e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block if (!g_strcmp0(viewMode, "windowed")) 348e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED); 349e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block else if (!g_strcmp0(viewMode, "floating")) 350e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING); 351e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block else if (!g_strcmp0(viewMode, "fullscreen")) 352e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN); 353e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block else if (!g_strcmp0(viewMode, "maximized")) 354e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED); 355e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block else if (!g_strcmp0(viewMode, "minimized")) 356e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED); 357e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 358e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block g_free(viewMode); 359e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 360e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 361563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setWindowIsKey(bool windowIsKey) 362563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 363563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 364563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 365563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 366563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setSmartInsertDeleteEnabled(bool flag) 367563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 368563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 369563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 370563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 371563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstatic gboolean waitToDumpWatchdogFired(void*) 372563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 373563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark waitToDumpWatchdog = 0; 374231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gLayoutTestController->waitToDumpWatchdogTimerFired(); 375563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return FALSE; 376563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 377563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 378563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setWaitToDump(bool waitUntilDone) 379563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 380dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static const int timeoutSeconds = 30; 381563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 382563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_waitToDump = waitUntilDone; 383563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (m_waitToDump && !waitToDumpWatchdog) 384563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark waitToDumpWatchdog = g_timeout_add_seconds(timeoutSeconds, waitToDumpWatchdogFired, 0); 385563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 386563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 387563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkint LayoutTestController::windowCount() 388563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 3890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // +1 -> including the main view 3900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return g_slist_length(webViewList) + 1; 391563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 392563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 393563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setPrivateBrowsingEnabled(bool flag) 394563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 395563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 396563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark ASSERT(view); 397563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 398563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebSettings* settings = webkit_web_view_get_settings(view); 399563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_object_set(G_OBJECT(settings), "enable-private-browsing", flag, NULL); 400563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 401563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 40221939df44de1705786c545cd1bf519d47250322dBen Murdochvoid LayoutTestController::setJavaScriptCanAccessClipboard(bool flag) 40321939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 40421939df44de1705786c545cd1bf519d47250322dBen Murdoch WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 40521939df44de1705786c545cd1bf519d47250322dBen Murdoch ASSERT(view); 40621939df44de1705786c545cd1bf519d47250322dBen Murdoch 40721939df44de1705786c545cd1bf519d47250322dBen Murdoch WebKitWebSettings* settings = webkit_web_view_get_settings(view); 40821939df44de1705786c545cd1bf519d47250322dBen Murdoch g_object_set(G_OBJECT(settings), "javascript-can-access-clipboard", flag, NULL); 40921939df44de1705786c545cd1bf519d47250322dBen Murdoch} 41021939df44de1705786c545cd1bf519d47250322dBen Murdoch 4110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid LayoutTestController::setXSSAuditorEnabled(bool flag) 4120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 4130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 4140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ASSERT(view); 4150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebSettings* settings = webkit_web_view_get_settings(view); 4170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_set(G_OBJECT(settings), "enable-xss-auditor", flag, NULL); 4180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 420dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::setFrameFlatteningEnabled(bool flag) 4218a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{ 422a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 423a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ASSERT(view); 424a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 425a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch WebKitWebSettings* settings = webkit_web_view_get_settings(view); 426a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch g_object_set(G_OBJECT(settings), "enable-frame-flattening", flag, NULL); 4278a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block} 4288a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 429dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::setSpatialNavigationEnabled(bool flag) 430dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 431dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 432dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ASSERT(view); 433dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 434dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebKitWebSettings* settings = webkit_web_view_get_settings(view); 435dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block g_object_set(G_OBJECT(settings), "enable-spatial-navigation", flag, NULL); 436dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 437dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 438643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid LayoutTestController::setAllowUniversalAccessFromFileURLs(bool flag) 439643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 440643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 441643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(view); 442643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 443643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebSettings* settings = webkit_web_view_get_settings(view); 444643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_object_set(G_OBJECT(settings), "enable-universal-access-from-file-uris", flag, NULL); 445643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 446643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 447692e5dbf12901edacf14812a6fae25462920af42Steve Blockvoid LayoutTestController::setAllowFileAccessFromFileURLs(bool flag) 448692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 449692e5dbf12901edacf14812a6fae25462920af42Steve Block WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 450692e5dbf12901edacf14812a6fae25462920af42Steve Block ASSERT(view); 451692e5dbf12901edacf14812a6fae25462920af42Steve Block 452692e5dbf12901edacf14812a6fae25462920af42Steve Block WebKitWebSettings* settings = webkit_web_view_get_settings(view); 453692e5dbf12901edacf14812a6fae25462920af42Steve Block g_object_set(G_OBJECT(settings), "enable-file-access-from-file-uris", flag, NULL); 454692e5dbf12901edacf14812a6fae25462920af42Steve Block} 455692e5dbf12901edacf14812a6fae25462920af42Steve Block 456563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setAuthorAndUserStylesEnabled(bool flag) 457563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 458563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 459563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 460563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 4612bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid LayoutTestController::setAutofilled(JSContextRef context, JSValueRef nodeObject, bool isAutofilled) 4622bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 4632bde8e466a4451c7319e3a072d118917957d6554Steve Block DumpRenderTreeSupportGtk::setAutofilled(context, nodeObject, isAutofilled); 4642bde8e466a4451c7319e3a072d118917957d6554Steve Block} 4652bde8e466a4451c7319e3a072d118917957d6554Steve Block 4660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid LayoutTestController::disableImageLoading() 4670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 4680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // FIXME: Implement for testing fix for https://bugs.webkit.org/show_bug.cgi?id=27896 4690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Also need to make sure image loading is re-enabled for each new test. 4700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 472db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid LayoutTestController::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma) 473db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 474db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // FIXME: Implement for DeviceOrientation layout tests. 475db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // See https://bugs.webkit.org/show_bug.cgi?id=30335. 476db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 477db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 478231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid LayoutTestController::setMockGeolocationPosition(double latitude, double longitude, double accuracy) 479231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 480231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // FIXME: Implement for Geolocation layout tests. 481231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // See https://bugs.webkit.org/show_bug.cgi?id=28264. 482231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 483231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 484231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid LayoutTestController::setMockGeolocationError(int code, JSStringRef message) 485231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 486231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // FIXME: Implement for Geolocation layout tests. 487231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // See https://bugs.webkit.org/show_bug.cgi?id=28264. 488231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 489231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 490dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid LayoutTestController::setGeolocationPermission(bool allow) 491dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 492dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch // FIXME: Implement for Geolocation layout tests. 493dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch setGeolocationPermissionCommon(allow); 494dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 495dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 4962bde8e466a4451c7319e3a072d118917957d6554Steve Blockint LayoutTestController::numberOfPendingGeolocationPermissionRequests() 4972bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 4982bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: Implement for Geolocation layout tests. 4992bde8e466a4451c7319e3a072d118917957d6554Steve Block return -1; 5002bde8e466a4451c7319e3a072d118917957d6554Steve Block} 5012bde8e466a4451c7319e3a072d118917957d6554Steve Block 5024576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid LayoutTestController::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language) 503dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 504dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch // FIXME: Implement for speech input layout tests. 505dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch // See https://bugs.webkit.org/show_bug.cgi?id=39485. 506dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 507dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 5082fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid LayoutTestController::setIconDatabaseEnabled(bool enabled) 509563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 5102bde8e466a4451c7319e3a072d118917957d6554Steve Block WebKitIconDatabase* database = webkit_get_icon_database(); 5112bde8e466a4451c7319e3a072d118917957d6554Steve Block if (enabled) { 5122bde8e466a4451c7319e3a072d118917957d6554Steve Block GOwnPtr<gchar> iconDatabasePath(g_build_filename(g_get_tmp_dir(), "DumpRenderTree", "icondatabase", NULL)); 5132bde8e466a4451c7319e3a072d118917957d6554Steve Block webkit_icon_database_set_path(database, iconDatabasePath.get()); 5142bde8e466a4451c7319e3a072d118917957d6554Steve Block } else 5152bde8e466a4451c7319e3a072d118917957d6554Steve Block webkit_icon_database_set_path(database, 0); 516563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 517563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 518563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setJavaScriptProfilingEnabled(bool flag) 519563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 520563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 521563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark ASSERT(view); 522563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 523dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block setDeveloperExtrasEnabled(flag); 524563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 525563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebInspector* inspector = webkit_web_view_get_inspector(view); 526563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_object_set(G_OBJECT(inspector), "javascript-profiling-enabled", flag, NULL); 527563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 528563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 529563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setSelectTrailingWhitespaceEnabled(bool flag) 530563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 53181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch DumpRenderTreeSupportGtk::setSelectTrailingWhitespaceEnabled(flag); 532563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 533563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 5340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid LayoutTestController::setPopupBlockingEnabled(bool flag) 535563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 5360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 5370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ASSERT(view); 5380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebSettings* settings = webkit_web_view_get_settings(view); 5400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_set(G_OBJECT(settings), "javascript-can-open-windows-automatically", !flag, NULL); 5410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 542563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 543563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 54421939df44de1705786c545cd1bf519d47250322dBen Murdochvoid LayoutTestController::setPluginsEnabled(bool flag) 54521939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 54621939df44de1705786c545cd1bf519d47250322dBen Murdoch // FIXME: Implement 54721939df44de1705786c545cd1bf519d47250322dBen Murdoch} 54821939df44de1705786c545cd1bf519d47250322dBen Murdoch 549563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkbool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef id) 550563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 551563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 552563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return false; 553563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 554563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 555563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::execCommand(JSStringRef name, JSStringRef value) 556563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 557dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 558dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch ASSERT(view); 559dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 560dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch gchar* cName = JSStringCopyUTF8CString(name); 561dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch gchar* cValue = JSStringCopyUTF8CString(value); 562f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch DumpRenderTreeSupportGtk::executeCoreCommandByName(view, cName, cValue); 563dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch g_free(cName); 564dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch g_free(cValue); 565563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 566563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 5672fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool LayoutTestController::findString(JSContextRef context, JSStringRef target, JSObjectRef optionsArray) 568f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 5692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WebKitFindOptions findOptions = 0; 5702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 5712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(webView); 5722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block JSRetainPtr<JSStringRef> lengthPropertyName(Adopt, JSStringCreateWithUTF8CString("length")); 5742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block JSValueRef lengthValue = JSObjectGetProperty(context, optionsArray, lengthPropertyName.get(), 0); 5752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!JSValueIsNumber(context, lengthValue)) 5762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return false; 5772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block GOwnPtr<gchar> targetString(JSStringCopyUTF8CString(target)); 5792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block size_t length = static_cast<size_t>(JSValueToNumber(context, lengthValue, 0)); 5812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block for (size_t i = 0; i < length; ++i) { 5822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block JSValueRef value = JSObjectGetPropertyAtIndex(context, optionsArray, i, 0); 5832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!JSValueIsString(context, value)) 5842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block continue; 5852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block JSRetainPtr<JSStringRef> optionName(Adopt, JSValueToStringCopy(context, value, 0)); 5872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (JSStringIsEqualToUTF8CString(optionName.get(), "CaseInsensitive")) 5892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block findOptions |= WebKit::WebFindOptionsCaseInsensitive; 5902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else if (JSStringIsEqualToUTF8CString(optionName.get(), "AtWordStarts")) 5912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block findOptions |= WebKit::WebFindOptionsAtWordStarts; 5922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else if (JSStringIsEqualToUTF8CString(optionName.get(), "TreatMedialCapitalAsWordStart")) 5932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block findOptions |= WebKit::WebFindOptionsTreatMedialCapitalAsWordStart; 5942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else if (JSStringIsEqualToUTF8CString(optionName.get(), "Backwards")) 5952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block findOptions |= WebKit::WebFindOptionsBackwards; 5962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else if (JSStringIsEqualToUTF8CString(optionName.get(), "WrapAround")) 5972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block findOptions |= WebKit::WebFindOptionsWrapAround; 5982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else if (JSStringIsEqualToUTF8CString(optionName.get(), "StartInSelection")) 5992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block findOptions |= WebKit::WebFindOptionsStartInSelection; 6002fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 6012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 6022fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return DumpRenderTreeSupportGtk::findString(webView, targetString.get(), findOptions); 603f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 604f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 605dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochbool LayoutTestController::isCommandEnabled(JSStringRef name) 6060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 607dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 608dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch ASSERT(view); 609dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 610dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch gchar* cName = JSStringCopyUTF8CString(name); 611f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool result = DumpRenderTreeSupportGtk::isCommandEnabled(view, cName); 612dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch g_free(cName); 613dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return result; 6140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 6150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 616f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LayoutTestController::setCacheModel(int cacheModel) 617563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 6182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // These constants are derived from the Mac cache model enum in Source/WebKit/mac/WebView/WebPreferences.h. 6192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block switch (cacheModel) { 6202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case 0: 6212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER); 6222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block break; 6232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case 1: 6242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER); 6252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block break; 6262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case 3: 6272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER); 6282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block break; 6292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block default: 6302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT_NOT_REACHED(); 6312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 632563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 633563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 634563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL) 635563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 636563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 637563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 638563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 639563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::clearPersistentUserStyleSheet() 640563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 641563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // FIXME: implement 642563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 643563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 644dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid LayoutTestController::clearAllApplicationCaches() 645dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 6462bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: Implement to support application cache quotas. 647dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 648dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 649dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid LayoutTestController::setApplicationCacheOriginQuota(unsigned long long quota) 650dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 6512bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: Implement to support application cache quotas. 6522bde8e466a4451c7319e3a072d118917957d6554Steve Block} 6532bde8e466a4451c7319e3a072d118917957d6554Steve Block 6542bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid LayoutTestController::clearApplicationCacheForOrigin(OpaqueJSString*) 6552bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 6562bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: Implement to support deleting all application caches for an origin. 6572bde8e466a4451c7319e3a072d118917957d6554Steve Block} 6582bde8e466a4451c7319e3a072d118917957d6554Steve Block 6592bde8e466a4451c7319e3a072d118917957d6554Steve BlockJSValueRef LayoutTestController::originsWithApplicationCache(JSContextRef context) 6602bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 6612bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: Implement to get origins that contain application caches. 6622bde8e466a4451c7319e3a072d118917957d6554Steve Block return JSValueMakeUndefined(context); 663dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 664dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 665563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::clearAllDatabases() 666563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 667231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block webkit_remove_all_web_databases(); 668563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 669563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 670563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid LayoutTestController::setDatabaseQuota(unsigned long long quota) 671231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 672231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitSecurityOrigin* origin = webkit_web_frame_get_security_origin(mainFrame); 673231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block webkit_security_origin_set_web_database_quota(origin, quota); 674563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 675563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 6762bde8e466a4451c7319e3a072d118917957d6554Steve BlockJSValueRef LayoutTestController::originsWithLocalStorage(JSContextRef context) 6772bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 6782bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: implement 6792bde8e466a4451c7319e3a072d118917957d6554Steve Block return JSValueMakeUndefined(context); 6802bde8e466a4451c7319e3a072d118917957d6554Steve Block} 6812bde8e466a4451c7319e3a072d118917957d6554Steve Block 6822bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid LayoutTestController::deleteAllLocalStorage() 6832bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 6842bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: implement 6852bde8e466a4451c7319e3a072d118917957d6554Steve Block} 6862bde8e466a4451c7319e3a072d118917957d6554Steve Block 6872bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid LayoutTestController::deleteLocalStorageForOrigin(JSStringRef originIdentifier) 6882bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 6892bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: implement 6902bde8e466a4451c7319e3a072d118917957d6554Steve Block} 6912bde8e466a4451c7319e3a072d118917957d6554Steve Block 6922bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid LayoutTestController::observeStorageTrackerNotifications(unsigned number) 6932bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 6942bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: implement 6952bde8e466a4451c7319e3a072d118917957d6554Steve Block} 6962bde8e466a4451c7319e3a072d118917957d6554Steve Block 6972bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid LayoutTestController::syncLocalStorage() 6982bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 6992bde8e466a4451c7319e3a072d118917957d6554Steve Block // FIXME: implement 7002bde8e466a4451c7319e3a072d118917957d6554Steve Block} 7012bde8e466a4451c7319e3a072d118917957d6554Steve Block 702d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid LayoutTestController::setDomainRelaxationForbiddenForURLScheme(bool, JSStringRef) 703d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 704d0825bca7fe65beaee391d30da42e937db621564Steve Block // FIXME: implement 705d0825bca7fe65beaee391d30da42e937db621564Steve Block} 706d0825bca7fe65beaee391d30da42e937db621564Steve Block 707c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescuvoid LayoutTestController::setAppCacheMaximumSize(unsigned long long size) 708c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu{ 7090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webkit_application_cache_set_maximum_size(size); 710c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu} 711c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu 712563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkbool LayoutTestController::pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId) 713563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 714563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark gchar* name = JSStringCopyUTF8CString(animationName); 715563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark gchar* element = JSStringCopyUTF8CString(elementId); 716f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool returnValue = DumpRenderTreeSupportGtk::pauseAnimation(mainFrame, name, time, element); 717231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(name); 718231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(element); 719231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return returnValue; 720563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 721563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 722563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkbool LayoutTestController::pauseTransitionAtTimeOnElementWithId(JSStringRef propertyName, double time, JSStringRef elementId) 723563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 724563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark gchar* name = JSStringCopyUTF8CString(propertyName); 725563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark gchar* element = JSStringCopyUTF8CString(elementId); 726f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool returnValue = DumpRenderTreeSupportGtk::pauseTransition(mainFrame, name, time, element); 727231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(name); 728231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(element); 729231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return returnValue; 730563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 731563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 732643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool LayoutTestController::sampleSVGAnimationForElementAtTime(JSStringRef animationId, double time, JSStringRef elementId) 733643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 734643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gchar* name = JSStringCopyUTF8CString(animationId); 735643ca7872b450ea4efacab6188849e5aac2ba161Steve Block gchar* element = JSStringCopyUTF8CString(elementId); 736f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool returnValue = DumpRenderTreeSupportGtk::pauseSVGAnimation(mainFrame, name, time, element); 737643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_free(name); 738643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_free(element); 739643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return returnValue; 740643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 741643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 742563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkunsigned LayoutTestController::numberOfActiveAnimations() const 743563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 744f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return DumpRenderTreeSupportGtk::numberOfActiveAnimations(mainFrame); 745563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 746231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 747f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvoid LayoutTestController::suspendAnimations() const 748f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 749f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch DumpRenderTreeSupportGtk::suspendAnimations(mainFrame); 750f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 751f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 752f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvoid LayoutTestController::resumeAnimations() const 753f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 754f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch DumpRenderTreeSupportGtk::resumeAnimations(mainFrame); 755f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 756f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 757231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid LayoutTestController::overridePreference(JSStringRef key, JSStringRef value) 758231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 759bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen GOwnPtr<gchar> originalName(JSStringCopyUTF8CString(key)); 760bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen GOwnPtr<gchar> valueAsString(JSStringCopyUTF8CString(value)); 761231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 762231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 763231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block ASSERT(view); 764231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 765bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // This transformation could be handled by a hash table (and it once was), but 766bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // having it prominent, makes it easier for people from other ports to keep the 767bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // list up to date. 768bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen const gchar* propertyName = 0; 769bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen if (g_str_equal(originalName.get(), "WebKitJavaScriptEnabled")) 770bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen propertyName = "enable-scripts"; 771bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (g_str_equal(originalName.get(), "WebKitDefaultFontSize")) 772bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen propertyName = "default-font-size"; 773bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (g_str_equal(originalName.get(), "WebKitEnableCaretBrowsing")) 774bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen propertyName = "enable-caret-browsing"; 775bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (g_str_equal(originalName.get(), "WebKitUsesPageCachePreferenceKey")) 776bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen propertyName = "enable-page-cache"; 777bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (g_str_equal(originalName.get(), "WebKitPluginsEnabled")) 778e14391e94c850b8bd03680c23b38978db68687a8John Reck propertyName = "enable-plugins"; 779bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (g_str_equal(originalName.get(), "WebKitHyperlinkAuditingEnabled")) 780e14391e94c850b8bd03680c23b38978db68687a8John Reck propertyName = "enable-hyperlink-auditing"; 7812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch else if (g_str_equal(originalName.get(), "WebKitWebGLEnabled")) 7822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch propertyName = "enable-webgl"; 783e14391e94c850b8bd03680c23b38978db68687a8John Reck else if (g_str_equal(originalName.get(), "WebKitTabToLinksPreferenceKey")) { 784e14391e94c850b8bd03680c23b38978db68687a8John Reck DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(!g_ascii_strcasecmp(valueAsString.get(), "true") || !g_ascii_strcasecmp(valueAsString.get(), "1")); 785e14391e94c850b8bd03680c23b38978db68687a8John Reck return; 786e14391e94c850b8bd03680c23b38978db68687a8John Reck } else { 787bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen fprintf(stderr, "LayoutTestController::overridePreference tried to override " 788bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen "unknown preference '%s'.\n", originalName.get()); 789bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen return; 790231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 791231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 792bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebKitWebSettings* settings = webkit_web_view_get_settings(view); 793bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen GParamSpec* pspec = g_object_class_find_property(G_OBJECT_CLASS( 794bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_WEB_SETTINGS_GET_CLASS(settings)), propertyName); 795bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen GValue currentPropertyValue = { 0, { { 0 } } }; 796bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen g_value_init(¤tPropertyValue, pspec->value_type); 797bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 798bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen if (G_VALUE_HOLDS_STRING(¤tPropertyValue)) 799bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen g_object_set(settings, propertyName, valueAsString.get(), NULL); 800bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (G_VALUE_HOLDS_BOOLEAN(¤tPropertyValue)) 801bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen g_object_set(G_OBJECT(settings), propertyName, !g_ascii_strcasecmp(valueAsString.get(), "true") 802bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen || !g_ascii_strcasecmp(valueAsString.get(), "1"), NULL); 803bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (G_VALUE_HOLDS_INT(¤tPropertyValue)) 804bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen g_object_set(G_OBJECT(settings), propertyName, atoi(valueAsString.get()), NULL); 805bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen else if (G_VALUE_HOLDS_FLOAT(¤tPropertyValue)) { 806bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen gfloat newValue = g_ascii_strtod(valueAsString.get(), 0); 807bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen g_object_set(G_OBJECT(settings), propertyName, newValue, NULL); 808bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen } else 809bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen fprintf(stderr, "LayoutTestController::overridePreference failed to override " 810bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen "preference '%s'.\n", originalName.get()); 811231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 812231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 813e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid LayoutTestController::addUserScript(JSStringRef source, bool runAtStart, bool allFrames) 814231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 815231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block printf("LayoutTestController::addUserScript not implemented.\n"); 816231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 817231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 818e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid LayoutTestController::addUserStyleSheet(JSStringRef source, bool allFrames) 819231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 820f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch GOwnPtr<gchar> sourceCode(JSStringCopyUTF8CString(source)); 821f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch DumpRenderTreeSupportGtk::addUserStyleSheet(mainFrame, sourceCode.get(), allFrames); 822f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // FIXME: needs more investigation why userscripts/user-style-top-frame-only.html fails when allFrames is false. 823f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 824231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 825231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 826dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::setDeveloperExtrasEnabled(bool enabled) 827231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 828cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 829cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebSettings* webSettings = webkit_web_view_get_settings(webView); 830dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 831dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block g_object_set(webSettings, "enable-developer-extras", enabled, NULL); 832dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 833dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 834f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LayoutTestController::setAsynchronousSpellCheckingEnabled(bool) 835f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 836f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // FIXME: Implement this. 837f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 838f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 839dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::showWebInspector() 840dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 841dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 842cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView); 843cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 844643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webkit_web_inspector_show(inspector); 845231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 846231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 847231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid LayoutTestController::closeWebInspector() 848231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 849cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 850cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView); 851cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 852cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block webkit_web_inspector_close(inspector); 853231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 854231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 855231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid LayoutTestController::evaluateInWebInspector(long callId, JSStringRef script) 856231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 857cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 858cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView); 859cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block char* scriptString = JSStringCopyUTF8CString(script); 860cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 861cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block webkit_web_inspector_execute_script(inspector, callId, scriptString); 862cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block g_free(scriptString); 863cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 864cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 865cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid LayoutTestController::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script) 866cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 867cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // FIXME: Implement this. 868cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 869cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 870cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid LayoutTestController::removeAllVisitedLinks() 871cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 872231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // FIXME: Implement this. 873231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 874692e5dbf12901edacf14812a6fae25462920af42Steve Block 875dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockbool LayoutTestController::callShouldCloseOnWebView() 876dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 877dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // FIXME: Implement for testing fix for https://bugs.webkit.org/show_bug.cgi?id=27481 878dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return false; 879dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 880dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 881692e5dbf12901edacf14812a6fae25462920af42Steve Blockvoid LayoutTestController::apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL) 882692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 883692e5dbf12901edacf14812a6fae25462920af42Steve Block 884692e5dbf12901edacf14812a6fae25462920af42Steve Block} 885dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 886dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::apiTestGoToCurrentBackForwardItem() 887dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 888dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 889dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 890dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 891dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::setWebViewEditable(bool) 892dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 893dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 894dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 895dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockJSRetainPtr<JSStringRef> LayoutTestController::markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const 896dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 897f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch CString markerTextGChar = DumpRenderTreeSupportGtk::markerTextForListItem(mainFrame, context, nodeObject); 898f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (markerTextGChar.isNull()) 899dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return 0; 900dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 901f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch JSRetainPtr<JSStringRef> markerText(Adopt, JSStringCreateWithUTF8CString(markerTextGChar.data())); 902dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return markerText; 903dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 904dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 905dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid LayoutTestController::authenticateSession(JSStringRef, JSStringRef, JSStringRef) 906dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 907dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 908e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block 909e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockvoid LayoutTestController::setEditingBehavior(const char* editingBehavior) 910e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block{ 911e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 912e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block WebKitWebSettings* settings = webkit_web_view_get_settings(webView); 913e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block 914e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block if (!strcmp(editingBehavior, "win")) 915e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block g_object_set(G_OBJECT(settings), "editing-behavior", WEBKIT_EDITING_BEHAVIOR_WINDOWS, NULL); 91628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu else if (!strcmp(editingBehavior, "mac")) 917e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block g_object_set(G_OBJECT(settings), "editing-behavior", WEBKIT_EDITING_BEHAVIOR_MAC, NULL); 91828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu else if (!strcmp(editingBehavior, "unix")) 91928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu g_object_set(G_OBJECT(settings), "editing-behavior", WEBKIT_EDITING_BEHAVIOR_UNIX, NULL); 920e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block} 921ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 9222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochJSValueRef LayoutTestController::shadowRoot(JSContextRef context, JSValueRef element) 9232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 9242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return DumpRenderTreeSupportGtk::shadowRoot(context, element); 9252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 9262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 927ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockvoid LayoutTestController::abortModal() 928ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 929ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 930a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 931f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochbool LayoutTestController::hasSpellingMarker(int from, int length) 932a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 933f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return DumpRenderTreeSupportGtk::webkitWebFrameSelectionHasSpellingMarker(mainFrame, from, length); 934f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 935f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 9362bde8e466a4451c7319e3a072d118917957d6554Steve Blockbool LayoutTestController::hasGrammarMarker(int from, int length) 9372bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 9382bde8e466a4451c7319e3a072d118917957d6554Steve Block return false; 9392bde8e466a4451c7319e3a072d118917957d6554Steve Block} 9402bde8e466a4451c7319e3a072d118917957d6554Steve Block 94181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid LayoutTestController::dumpConfigurationForViewport(int deviceDPI, int deviceWidth, int deviceHeight, int availableWidth, int availableHeight) 942f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 943f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 944f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ASSERT(webView); 94581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch DumpRenderTreeSupportGtk::dumpConfigurationForViewport(webView, deviceDPI, deviceWidth, deviceHeight, availableWidth, availableHeight); 946f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 947f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 948f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid LayoutTestController::setSerializeHTTPLoads(bool) 949f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 950f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // FIXME: Implement if needed for https://bugs.webkit.org/show_bug.cgi?id=50758. 951a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 95281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 95381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid LayoutTestController::setMinimumTimerInterval(double minimumTimerInterval) 95481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 95581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); 95681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch DumpRenderTreeSupportGtk::setMinimumTimerInterval(webView, minimumTimerInterval); 95781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 958