diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-30 16:58:06 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-30 17:03:09 +0100 |
commit | 32ea33253afbbdefd2680aa95ab5f57455272ae7 (patch) | |
tree | 2389569585b666c310fbb36d3fb8e6ab94462967 /Tools | |
parent | 41c25f231cbca1babc445187283524cc6c751c71 (diff) | |
download | qtwebkit-32ea33253afbbdefd2680aa95ab5f57455272ae7.tar.gz |
Imported WebKit commit 6a4a1d32e1d779548c726c4826cba9d69eb87601 (http://svn.webkit.org/repository/webkit/trunk@136242)
Final import for the Qt 5.x series that implements the QtWebKit / QtWebKitWidgets split
Extra fixes will be cherry-picked.
Change-Id: I844f1ebb99c6d6b75db31d6538c2acd628e79681
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Tools')
28 files changed, 400 insertions, 104 deletions
diff --git a/Tools/ChangeLog b/Tools/ChangeLog index 40be5de2c..fa9f11631 100644 --- a/Tools/ChangeLog +++ b/Tools/ChangeLog @@ -1,3 +1,265 @@ +2012-11-29 Tommy Widenflycht <tommyw@google.com> + + Speech Recognition API: Update SpeechRecognitionEvent to match the specification + https://bugs.webkit.org/show_bug.cgi?id=103407 + + Reviewed by Adam Barth. + + Changing the mock to use the new results delivery API. + + * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp: + +2012-11-30 Simon Hausmann <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com> + + [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets + https://bugs.webkit.org/show_bug.cgi?id=99314 + + Reviewed by Tor Arne Vestbø. + + This big change separates QtWebKit into QtWebKit and QtWebKitWidgets as + shared libraries. + + It's a big refactoring that mostly involves moving WebCore dependent + code into QtWebKit and accessing it through exported QWebFrameAdapter + and QWebPageAdapter classes. + + * DumpRenderTree/qt/DumpRenderTree.pro: + * DumpRenderTree/qt/DumpRenderTreeQt.cpp: + (WebCore::DumpRenderTree::dump): Adapt to internal API changes. + * MiniBrowser/qt/MiniBrowser.pro: + * Scripts/webkitpy/style/checker.py: Adapt Qt exceptions to new paths. + * Scripts/webkitpy/style/checker_unittest.py: + (GlobalVariablesTest.test_path_rules_specifier): + * WebKitTestRunner/InjectedBundle/Target.pri: + * qmake/mkspecs/features/default_post.prf: + * qmake/mkspecs/features/webkit_modules.prf: + * qmake/mkspecs/modules/webkitwidgets.prf: Removed. + +2012-11-30 Csaba Osztrogonác <ossy@webkit.org> + + [Qt] Unreviewed trivial fix. + + Add empty.cpp back, it was removed accidentally by r129092. + + * qmake/config.tests/gccdepends/empty.cpp: Added. + +2012-11-30 Tor Arne Vestbø <tor.arne.vestbo@digia.com> + + [Qt] Add support for prepare_docs and generate_docs + + Follow-up to changes in Qt in how documentation is built. + + Reviewed by Simon Hausmann. + + * qmake/mkspecs/features/default_post.prf: + +2012-11-30 Zan Dobersek <zandobersek@gmail.com> + + Finally remove webkitpy.common.system.deprecated_logging + https://bugs.webkit.org/show_bug.cgi?id=103624 + + Reviewed by Adam Barth. + + Remove the deprecated logging module and its unit tests now that such logging is not + used anymore in webkitpy. + + The tee and OutputTee classes are moved into a new module, webkitpy.common.system.outputtee. + The tee class is renamed to Tee to conform with the usual guidelines. + + Only unit test for the Tee class is currently provided as the OutputTee is not currently + using the webkitpy Filesystem abstraction that would make its functionality testable. + + * Scripts/webkitpy/common/system/executive.py: tee (now Tee) is now in a new module. + (Executive.run_and_throw_if_fail): + * Scripts/webkitpy/common/system/outputtee.py: Renamed from Tools/Scripts/webkitpy/common/system/deprecated_logging.py. + (Tee): + (Tee.__init__): + (Tee.write): + (OutputTee): + (OutputTee.__init__): + (OutputTee.add_log): + (OutputTee.remove_log): + (OutputTee._open_log_file): + (OutputTee._tee_outputs_to_files): + * Scripts/webkitpy/common/system/outputtee_unittest.py: Renamed from Tools/Scripts/webkitpy/common/system/deprecated_logging_unittest.py. + (SimpleTeeTest): + (SimpleTeeTest.test_simple_tee): + * Scripts/webkitpy/tool/bot/queueengine.py: OutputTee is now in a new module. + * Scripts/webkitpy/webkitpy.pyproj: Remove the deprecated_logging module and related unit test file. + +2012-11-30 Sudarsana Nagineni <sudarsana.nagineni@intel.com> + + [EFL][WK2] Add support for PlatformWebView::simulateRightClick() in TestWebKitAPI + https://bugs.webkit.org/show_bug.cgi?id=103634 + + Reviewed by Gyuyoung Kim. + + Add support for PlatformWebView::simulateRightClick() and enable + WebKit2 API test HitTestResultNodeHandle. + + * TestWebKitAPI/PlatformEfl.cmake: + * TestWebKitAPI/efl/PlatformWebView.cpp: + (TestWebKitAPI::PlatformWebView::simulateRightClick): + (TestWebKitAPI): + +2012-11-30 Mihai Maerean <mmaerean@adobe.com> + + [CSSRegions] when WebKit uses V8, there should be a single variable to store if the CSS Regions feature is enabled + https://bugs.webkit.org/show_bug.cgi?id=101192 + + Reviewed by Hajime Morita. + + Removed the CSS Regions flag in Settings and switched to using the new flag I have added in RuntimeEnabledFeatures. + + Tests: No new tests because there is no functional change. + + * DumpRenderTree/chromium/WebPreferences.cpp: + (WebPreferences::applyTo): + +2012-11-29 Rafael Weinstein <rafaelw@chromium.org> + + [HTMLTemplateElement] Add feature flag + https://bugs.webkit.org/show_bug.cgi?id=103694 + + Reviewed by Adam Barth. + + This flag will guard the implementation of the HTMLTemplateElement. + http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html + + * Scripts/webkitperl/FeatureList.pm: + +2012-11-29 Dirk Pranke <dpranke@chromium.org> + + Ignore errors when removing directories on win32 during autoinstall + https://bugs.webkit.org/show_bug.cgi?id=103699 + + Unreviewed, build fix. + + I think this will work on win32; if not, I'll have to actually + reproduce this :). The problem is that the logilab files + appear to contain a write-protected file, and deleting those + is problematic on windows. + + * Scripts/webkitpy/common/system/autoinstall.py: + (AutoInstaller._install): + (AutoInstaller.install): + +2012-11-29 Dirk Pranke <dpranke@chromium.org> + + webkitpy: autoinstaller is failing on windows + https://bugs.webkit.org/show_bug.cgi?id=103699 + + Unreviewed, build fix. + + We're attempting to create directories with forward slashes in them; + this is a no-no on windows. + + * Scripts/webkitpy/common/system/autoinstall.py: + (AutoInstaller._create_scratch_directory_inner): + +2012-11-29 Dirk Pranke <dpranke@chromium.org> + + Fix python unit tests after r136158 (android port tests failing) + https://bugs.webkit.org/show_bug.cgi?id=103581 + + Unreviewed, build fix. + + The unit tests apparently weren't ran for this patch; we failed + to update the mock executive calls out to adb to determine various + aspects of the environment, and were failing to create drivers. + + * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py: + (MockRunCommand.mock_run_command_fn): + +2012-11-29 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r136175 and r136177. + http://trac.webkit.org/changeset/136175 + http://trac.webkit.org/changeset/136177 + https://bugs.webkit.org/show_bug.cgi?id=103683 + + Changes did not correct Windows build. (Requested by bfulgham + on #webkit). + + * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp: + +2012-11-29 Brent Fulgham <bfulgham@webkit.org> + + [Windows, WinCairo] Unreviewed build correction. Correct debug + build case on build machine. + + * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp: + +2012-11-29 Brent Fulgham <bfulgham@webkit.org> + + [Windows, WinCairo] Unreviewed build correction. Hide the + unexported 'notSolidColor' symbol when testing against + the BitmapImage class to avoid having to deal with a + debug-only symbol in the Windows export definition file. + + * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp: + +2012-11-29 Peter Beverloo <peter@chromium.org> + + run-perf-tests --chromium-android should not require adb in my path + https://bugs.webkit.org/show_bug.cgi?id=103581 + + Reviewed by Eric Seidel. + + Remove the need to have "adb" available in the path for Layout and Performance + tests. We'll determine the versions of the "adb" version in path (if any) and + the one provided in the Chromium Android checkout. Unless the "adb" available + in the path is newer, the provided version will be used. + + Some other minor nits addressed: + - The path_to_forwarder/path_to_md5sum should not be in the "private overrides" + section, as they're not overriding anything and are used by the driver. + - Make _restart_adb_as_root slightly more robust by waiting for the device + to come back online regardless of the output. + + * Scripts/webkitpy/layout_tests/port/chromium_android.py: + (ChromiumAndroidPort.__init__): + (ChromiumAndroidPort.check_build): + (ChromiumAndroidPort.path_to_adb): + (ChromiumAndroidPort): + (ChromiumAndroidPort.path_to_forwarder): + (ChromiumAndroidPort.path_to_md5sum): + (ChromiumAndroidPort._path_to_helper): + (ChromiumAndroidPort._determine_adb_version): + (ChromiumAndroidPort._get_devices): + (ChromiumAndroidDriver.__init__): + (ChromiumAndroidDriver._setup_md5sum_and_push_data_if_needed): + (ChromiumAndroidDriver._push_executable): + (ChromiumAndroidDriver._restart_adb_as_root): + +2012-11-29 Martin Robinson <mrobinson@igalia.com> + + [GTK] [WebKit2] Embed the HTTP authentication dialog into the WebView + https://bugs.webkit.org/show_bug.cgi?id=103277 + + Reviewed by Carlos Garcia Campos. + + Skip the new WebKit2GtkAuthenticationDialog files so that they are not processed + during gtkdoc generation. + + * gtk/generate-gtkdoc: + (get_webkit2_options): + +2012-11-29 Eric Seidel <eric@webkit.org> + + run-perf-tests --chromium-android fails due to Skia INFO logging + https://bugs.webkit.org/show_bug.cgi?id=103585 + + Reviewed by Adam Barth. + + Ignore all INFO logging from Chromium code. + Also added some basic testing of the ignored-stderr lines code. + + * Scripts/webkitpy/performance_tests/perftest.py: + (PerfTest): + * Scripts/webkitpy/performance_tests/perftest_unittest.py: + (MainTest.test_ignored_stderr_lines): + 2012-11-29 Sudarsana Nagineni <sudarsana.nagineni@intel.com> [EFL][WK2] Add support for PlatformWebView::simulateMouseMove() in TestWebKitAPI diff --git a/Tools/DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp b/Tools/DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp index 88143c0ba..40d3cb4ba 100644 --- a/Tools/DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp +++ b/Tools/DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp @@ -69,10 +69,11 @@ public: WebVector<float> confidences(static_cast<size_t>(1)); transcripts[0] = m_transcript; confidences[0] = m_confidence; - WebSpeechRecognitionResult res; - res.assign(transcripts, confidences, true); + WebVector<WebSpeechRecognitionResult> finalResults(static_cast<size_t>(1)); + WebVector<WebSpeechRecognitionResult> interimResults; + finalResults[0].assign(transcripts, confidences, true); - m_recognizer->client()->didReceiveResult(m_recognizer->handle(), res, 0, WebVector<WebSpeechRecognitionResult>()); + m_recognizer->client()->didReceiveResults(m_recognizer->handle(), finalResults, interimResults); } private: diff --git a/Tools/DumpRenderTree/chromium/WebPreferences.cpp b/Tools/DumpRenderTree/chromium/WebPreferences.cpp index e13939d32..f64a7b156 100644 --- a/Tools/DumpRenderTree/chromium/WebPreferences.cpp +++ b/Tools/DumpRenderTree/chromium/WebPreferences.cpp @@ -30,6 +30,7 @@ #include "config.h" #include "WebPreferences.h" +#include "WebRuntimeFeatures.h" #include "WebView.h" @@ -200,7 +201,7 @@ void WebPreferences::applyTo(WebView* webView) settings->setDefaultTextEncodingName(defaultTextEncodingName); settings->setDeveloperExtrasEnabled(developerExtrasEnabled); settings->setExperimentalWebGLEnabled(experimentalWebGLEnabled); - settings->setExperimentalCSSRegionsEnabled(experimentalCSSRegionsEnabled); + WebRuntimeFeatures::enableCSSRegions(experimentalCSSRegionsEnabled); settings->setExperimentalCSSGridLayoutEnabled(experimentalCSSGridLayoutEnabled); settings->setExperimentalCSSCustomFilterEnabled(cssCustomFilterEnabled); settings->setJavaEnabled(javaEnabled); diff --git a/Tools/DumpRenderTree/qt/DumpRenderTree.pro b/Tools/DumpRenderTree/qt/DumpRenderTree.pro index 0bd0b16a6..ff696d398 100644 --- a/Tools/DumpRenderTree/qt/DumpRenderTree.pro +++ b/Tools/DumpRenderTree/qt/DumpRenderTree.pro @@ -16,6 +16,7 @@ INCLUDEPATH += \ $$PWD/.. \ $${ROOT_WEBKIT_DIR}/Source/WebCore/platform/qt \ $${ROOT_WEBKIT_DIR}/Source/WebKit/qt/WebCoreSupport \ + $${ROOT_WEBKIT_DIR}/Source/WebKit/qt/WidgetSupport \ $${ROOT_WEBKIT_DIR}/Source/WTF QT = core gui network testlib webkitwidgets widgets diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp index 88d8ae752..dea0edbc0 100755 --- a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp +++ b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp @@ -915,7 +915,7 @@ void DumpRenderTree::dump() if (m_controller->shouldDumpAsText()) resultString = dumpFramesAsText(mainFrame); else { - resultString = mainFrame->renderTreeDump(); + resultString = DumpRenderTreeSupportQt::frameRenderTreeDump(mainFrame->handle()); resultString += dumpFrameScrollPosition(mainFrame); } if (!resultString.isEmpty()) { diff --git a/Tools/MiniBrowser/qt/BrowserWindow.cpp b/Tools/MiniBrowser/qt/BrowserWindow.cpp index d9de51974..70750c6a7 100644 --- a/Tools/MiniBrowser/qt/BrowserWindow.cpp +++ b/Tools/MiniBrowser/qt/BrowserWindow.cpp @@ -39,8 +39,8 @@ BrowserWindow::BrowserWindow(WindowOptions* options) : m_windowOptions(options) { - setTitle("MiniBrowser"); - setFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint); + setWindowTitle("MiniBrowser"); + setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint); setResizeMode(QQuickView::SizeRootObjectToView); // This allows starting MiniBrowser from the build directory without previously defining QML_IMPORT_PATH. @@ -147,7 +147,7 @@ void BrowserWindow::onTitleChanged(QString title) { if (title.isEmpty()) title = QLatin1String("MiniBrowser"); - setTitle(title); + setWindowTitle(title); } void BrowserWindow::zoomIn() diff --git a/Tools/MiniBrowser/qt/MiniBrowser.pro b/Tools/MiniBrowser/qt/MiniBrowser.pro index 0fbddbe13..3db1c7887 100644 --- a/Tools/MiniBrowser/qt/MiniBrowser.pro +++ b/Tools/MiniBrowser/qt/MiniBrowser.pro @@ -30,7 +30,7 @@ DESTDIR = $${ROOT_BUILD_DIR}/bin have?(FONTCONFIG): PKGCONFIG += fontconfig -QT += network gui-private quick quick-private webkitwidgets webkitwidgets-private +QT += network gui-private quick quick-private webkit webkit-private macx: QT += xml RESOURCES += MiniBrowser.qrc diff --git a/Tools/Scripts/webkitperl/FeatureList.pm b/Tools/Scripts/webkitperl/FeatureList.pm index f5d02675c..c104d1f31 100644 --- a/Tools/Scripts/webkitperl/FeatureList.pm +++ b/Tools/Scripts/webkitperl/FeatureList.pm @@ -126,6 +126,7 @@ my ( $svgFontsSupport, $svgSupport, $systemMallocSupport, + $templateTagSupport, $textAutosizingSupport, $tiledBackingStoreSupport, $touchEventsSupport, @@ -393,6 +394,9 @@ my @features = ( { option => "system-malloc", desc => "Toggle system allocator instead of TCmalloc", define => "USE_SYSTEM_MALLOC", default => isWinCE(), value => \$systemMallocSupport }, + { option => "template-tag", desc => "Toggle Templates Tag support", + define => "ENABLE_TEMPLATE_ELEMENT", default => !isAppleWinWebKit(), value => \$templateTagSupport }, + { option => "text-autosizing", desc => "Toggle Text Autosizing support", define => "ENABLE_TEXT_AUTOSIZING", default => 0, value => \$textAutosizingSupport }, diff --git a/Tools/Scripts/webkitpy/common/system/autoinstall.py b/Tools/Scripts/webkitpy/common/system/autoinstall.py index f3045f86b..9d1f8cb2f 100755 --- a/Tools/Scripts/webkitpy/common/system/autoinstall.py +++ b/Tools/Scripts/webkitpy/common/system/autoinstall.py @@ -146,7 +146,7 @@ class AutoInstaller(object): # The tempfile.mkdtemp() method function requires that the # directory corresponding to the "dir" parameter already exist # if it is not None. - scratch_dir = tempfile.mkdtemp(prefix=prefix, dir=self._temp_dir) + scratch_dir = tempfile.mkdtemp(prefix=prefix.replace('/', '.'), dir=self._temp_dir) return scratch_dir def _create_scratch_directory(self, target_name): @@ -337,7 +337,7 @@ class AutoInstaller(object): if os.path.exists(target_path): if os.path.isdir(target_path): - shutil.rmtree(target_path) + shutil.rmtree(target_path, ignore_errors=True) else: os.remove(target_path) @@ -408,7 +408,7 @@ class AutoInstaller(object): % (target_name, target_path, err)) raise Exception(message) finally: - shutil.rmtree(scratch_dir) + shutil.rmtree(scratch_dir, ignore_errors=True) _log.debug('Auto-installed %s to:' % url) _log.debug(' "%s"' % target_path) return True diff --git a/Tools/Scripts/webkitpy/common/system/executive.py b/Tools/Scripts/webkitpy/common/system/executive.py index b1d239090..42a8122d3 100644 --- a/Tools/Scripts/webkitpy/common/system/executive.py +++ b/Tools/Scripts/webkitpy/common/system/executive.py @@ -37,7 +37,7 @@ import subprocess import sys import time -from webkitpy.common.system.deprecated_logging import tee +from webkitpy.common.system.outputtee import Tee from webkitpy.common.system.filesystem import FileSystem @@ -135,7 +135,7 @@ class Executive(object): if quiet: dev_null = open(os.devnull, "w") # FIXME: Does this need an encoding? tee_stdout = dev_null - child_stdout = tee(child_out_file, tee_stdout) + child_stdout = Tee(child_out_file, tee_stdout) exit_code = self._run_command_with_teed_output(args, child_stdout, **kwargs) if quiet: dev_null.close() diff --git a/Tools/Scripts/webkitpy/common/system/deprecated_logging.py b/Tools/Scripts/webkitpy/common/system/outputtee.py index 137535438..12366e865 100644 --- a/Tools/Scripts/webkitpy/common/system/deprecated_logging.py +++ b/Tools/Scripts/webkitpy/common/system/outputtee.py @@ -1,10 +1,10 @@ # Copyright (c) 2009, Google Inc. All rights reserved. # Copyright (c) 2009 Apple Inc. All rights reserved. -# +# # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: -# +# # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above @@ -14,7 +14,7 @@ # * Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -26,26 +26,14 @@ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# WebKit's Python module for logging -# This module is now deprecated in favor of python's built-in logging.py. import codecs import os import sys -def log(string): - print >> sys.stderr, string - - -def error(string): - log("ERROR: %s" % string) - sys.exit(1) - - # Simple class to split output between multiple destinations -class tee: +class Tee: def __init__(self, *files): self.files = files @@ -84,8 +72,8 @@ class OutputTee: self._original_stdout = sys.stdout self._original_stderr = sys.stderr if files and len(files): - sys.stdout = tee(self._original_stdout, *files) - sys.stderr = tee(self._original_stderr, *files) + sys.stdout = Tee(self._original_stdout, *files) + sys.stderr = Tee(self._original_stderr, *files) else: sys.stdout = self._original_stdout sys.stderr = self._original_stderr diff --git a/Tools/Scripts/webkitpy/common/system/deprecated_logging_unittest.py b/Tools/Scripts/webkitpy/common/system/outputtee_unittest.py index b986609bb..6a509f0c2 100644 --- a/Tools/Scripts/webkitpy/common/system/deprecated_logging_unittest.py +++ b/Tools/Scripts/webkitpy/common/system/outputtee_unittest.py @@ -1,4 +1,4 @@ -# Copyright (C) 2009 Google Inc. All rights reserved. +# Copyright (C) 2012 Zan Dobersek <zandobersek@gmail.com> # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -26,35 +26,18 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import os import StringIO -import tempfile import unittest -from webkitpy.common.system.executive import ScriptError -from webkitpy.common.system.deprecated_logging import * +from webkitpy.common.system.outputtee import Tee, OutputTee -class LoggingTest(unittest.TestCase): - def assert_log_equals(self, log_input, expected_output): - original_stderr = sys.stderr - test_stderr = StringIO.StringIO() - sys.stderr = test_stderr +class SimpleTeeTest(unittest.TestCase): + def test_simple_tee(self): + file1, file2 = StringIO.StringIO(), StringIO.StringIO() + tee = Tee(file1, file2) + tee.write("foo bar\n") + tee.write("baz\n") - try: - log(log_input) - actual_output = test_stderr.getvalue() - finally: - sys.stderr = original_stderr - - self.assertEqual(actual_output, expected_output, "log(\"%s\") expected: %s actual: %s" % (log_input, expected_output, actual_output)) - - def test_log(self): - self.assert_log_equals("test", "test\n") - - # Test that log() does not throw an exception when passed an object instead of a string. - self.assert_log_equals(ScriptError(message="ScriptError"), "ScriptError\n") - - -if __name__ == '__main__': - unittest.main() + self.assertEqual(file1.getvalue(), "foo bar\nbaz\n") + self.assertEqual(file2.getvalue(), file1.getvalue()) diff --git a/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py b/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py index c18cd0941..91cd3100c 100644 --- a/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py +++ b/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py @@ -32,6 +32,7 @@ import logging import os import re import subprocess +import sys import threading import time @@ -43,7 +44,6 @@ from webkitpy.layout_tests.port import server_process _log = logging.getLogger(__name__) - # The root directory for test resources, which has the same structure as the # source root directory of Chromium. # This path is defined in Chromium's base/test/test_support_android.cc. @@ -155,6 +155,9 @@ MD5SUM_DEVICE_PATH = '/data/local/tmp/' + MD5SUM_DEVICE_FILE_NAME class ChromiumAndroidPort(chromium.ChromiumPort): port_name = 'chromium-android' + # Avoid initializing the adb path [worker count]+1 times by storing it as a static member. + _adb_path = None + FALLBACK_PATHS = [ 'chromium-android', 'chromium-linux', @@ -208,8 +211,8 @@ class ChromiumAndroidPort(chromium.ChromiumPort): def check_build(self, needs_http): result = super(ChromiumAndroidPort, self).check_build(needs_http) - result = self._check_file_exists(self._path_to_md5sum(), 'md5sum utility') and result - result = self._check_file_exists(self._path_to_forwarder(), 'forwarder utility') and result + result = self._check_file_exists(self.path_to_md5sum(), 'md5sum utility') and result + result = self._check_file_exists(self.path_to_forwarder(), 'forwarder utility') and result if not result: _log.error('For complete Android build requirements, please see:') _log.error('') @@ -260,6 +263,33 @@ class ChromiumAndroidPort(chromium.ChromiumPort): # Override to return the actual DumpRenderTree command line. return self.create_driver(0)._drt_cmd_line(self.get_option('pixel_tests'), []) + def path_to_adb(self): + if ChromiumAndroidPort._adb_path: + return ChromiumAndroidPort._adb_path + + provided_adb_path = self.path_from_chromium_base('third_party', 'android_tools', 'sdk', 'platform-tools', 'adb') + + path_version = self._determine_adb_version('adb') + provided_version = self._determine_adb_version(provided_adb_path) + assert provided_version, 'The checked in Android SDK is missing. Are you sure you ran update-webkit --chromium-android?' + + if not path_version: + ChromiumAndroidPort._adb_path = provided_adb_path + elif provided_version > path_version: + # FIXME: The Printer isn't initialized when this is called, so using _log would just show an unitialized logger error. + print >> sys.stderr, 'The "adb" version in your path is older than the one checked in, consider updating your local Android SDK. Using the checked in one.' + ChromiumAndroidPort._adb_path = provided_adb_path + else: + ChromiumAndroidPort._adb_path = 'adb' + + return ChromiumAndroidPort._adb_path + + def path_to_forwarder(self): + return self._build_path('forwarder') + + def path_to_md5sum(self): + return self._build_path(MD5SUM_DEVICE_FILE_NAME) + # Overridden private functions. def _build_path(self, *comps): @@ -280,12 +310,6 @@ class ChromiumAndroidPort(chromium.ChromiumPort): def _path_to_helper(self): return None - def _path_to_forwarder(self): - return self._build_path('forwarder') - - def _path_to_md5sum(self): - return self._build_path(MD5SUM_DEVICE_FILE_NAME) - def _path_to_image_diff(self): return self._host_port._path_to_image_diff() @@ -309,10 +333,21 @@ class ChromiumAndroidPort(chromium.ChromiumPort): # Local private functions. + def _determine_adb_version(self, adb_path): + re_version = re.compile('^.*version ([\d\.]+)$') + try: + output = self._executive.run_command([adb_path, 'version'], error_handler=self._executive.ignore_error) + except OSError: + return None + result = re_version.match(output) + if not output or not result: + return None + return [int(n) for n in result.group(1).split('.')] + def _get_devices(self): if not self._devices: re_device = re.compile('^([a-zA-Z0-9_:.-]+)\tdevice$', re.MULTILINE) - result = self._executive.run_command(['adb', 'devices'], error_handler=self._executive.ignore_error) + result = self._executive.run_command([self.path_to_adb(), 'devices'], error_handler=self._executive.ignore_error) self._devices = re_device.findall(result) if not self._devices: raise AssertionError('No devices attached. Result of "adb devices": %s' % result) @@ -338,14 +373,14 @@ class ChromiumAndroidDriver(driver.Driver): self._has_setup = False self._original_governors = {} self._device_serial = port._get_device_serial(worker_number) - self._adb_command = ['adb', '-s', self._device_serial] + self._adb_command = [port.path_to_adb(), '-s', self._device_serial] def __del__(self): self._teardown_performance() super(ChromiumAndroidDriver, self).__del__() def _setup_md5sum_and_push_data_if_needed(self): - self._md5sum_path = self._port._path_to_md5sum() + self._md5sum_path = self._port.path_to_md5sum() if not self._file_exists_on_device(MD5SUM_DEVICE_PATH): if not self._push_to_device(self._md5sum_path, MD5SUM_DEVICE_PATH): raise AssertionError('Could not push md5sum to device') @@ -403,7 +438,7 @@ class ChromiumAndroidDriver(driver.Driver): self._push_to_device(host_file, device_file) def _push_executable(self): - self._push_file_if_needed(self._port._path_to_forwarder(), DEVICE_FORWARDER_PATH) + self._push_file_if_needed(self._port.path_to_forwarder(), DEVICE_FORWARDER_PATH) self._push_file_if_needed(self._port._build_path('DumpRenderTree.pak'), DEVICE_DRT_DIR + 'DumpRenderTree.pak') self._push_file_if_needed(self._port._build_path('DumpRenderTree_resources'), DEVICE_DRT_DIR + 'DumpRenderTree_resources') self._push_file_if_needed(self._port._build_path('android_main_fonts.xml'), DEVICE_DRT_DIR + 'android_main_fonts.xml') @@ -433,11 +468,12 @@ class ChromiumAndroidDriver(driver.Driver): output = self._run_adb_command(['root']) if 'adbd is already running as root' in output: return - elif 'restarting adbd as root' in output: - self._run_adb_command(['wait-for-device']) - else: + elif not 'restarting adbd as root' in output: self._log_error('Unrecognized output from adb root: %s' % output) + # Regardless the output, give the device a moment to come back online. + self._run_adb_command(['wait-for-device']) + def _run_adb_command(self, cmd, ignore_error=False): self._log_debug('Run adb command: ' + str(cmd)) if ignore_error: diff --git a/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py b/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py index 856ac3151..cfbc646df 100644 --- a/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py +++ b/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py @@ -50,10 +50,12 @@ class MockRunCommand(object): self._mock_ls_tombstones = '' def mock_run_command_fn(self, args): - if args[0] != 'adb': + if not args[0].endswith('adb'): return '' if args[1] == 'devices': return self._mock_devices_output + if args[1] == 'version': + return 'version 1.0' assert len(args) > 3 assert args[1] == '-s' diff --git a/Tools/Scripts/webkitpy/performance_tests/perftest.py b/Tools/Scripts/webkitpy/performance_tests/perftest.py index 623aef341..41115e41d 100644 --- a/Tools/Scripts/webkitpy/performance_tests/perftest.py +++ b/Tools/Scripts/webkitpy/performance_tests/perftest.py @@ -103,7 +103,9 @@ class PerfTest(object): _lines_to_ignore_in_stderr = [ re.compile(r'^Unknown option:'), - re.compile(r'^\[WARNING:proxy_service.cc')] + re.compile(r'^\[WARNING:proxy_service.cc'), + re.compile(r'^\[INFO:'), + ] def _should_ignore_line_in_stderr(self, line): return self._should_ignore_line(self._lines_to_ignore_in_stderr, line) diff --git a/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py b/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py index 9e275b635..741e8b644 100755 --- a/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py +++ b/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py @@ -99,6 +99,24 @@ class MainTest(unittest.TestCase): self.assertEqual(actual_stderr, '') self.assertEqual(actual_logs, 'some-unrecognizable-line\n') + def test_ignored_stderr_lines(self): + test = PerfTest(MockPort(), 'some-test', '/path/some-dir/some-test') + ignored_lines = [ + "Unknown option: --foo-bar", + "[WARNING:proxy_service.cc] bad moon a-rising", + "[INFO:SkFontHost_android.cpp(1158)] Use Test Config File Main /data/local/tmp/drt/android_main_fonts.xml, Fallback /data/local/tmp/drt/android_fallback_fonts.xml, Font Dir /data/local/tmp/drt/fonts/", + ] + for line in ignored_lines: + self.assertTrue(test._should_ignore_line_in_stderr(line)) + + non_ignored_lines = [ + "Should not be ignored", + "[WARNING:chrome.cc] Something went wrong", + "[ERROR:main.cc] The sky has fallen", + ] + for line in non_ignored_lines: + self.assertFalse(test._should_ignore_line_in_stderr(line)) + class TestPageLoadingPerfTest(unittest.TestCase): class MockDriver(object): diff --git a/Tools/Scripts/webkitpy/style/checker.py b/Tools/Scripts/webkitpy/style/checker.py index 282c33b70..7a1518b5b 100644 --- a/Tools/Scripts/webkitpy/style/checker.py +++ b/Tools/Scripts/webkitpy/style/checker.py @@ -149,7 +149,8 @@ _PATH_RULES_SPECIFIER = [ ([# The Qt APIs use Qt declaration style, it puts the * to # the variable name, not to the class. - "Source/WebKit/qt/Api/"], + "Source/WebKit/qt/Api/", + "Source/WebKit/qt/WidgetApi/"], ["-readability/naming", "-whitespace/declaration"]), diff --git a/Tools/Scripts/webkitpy/style/checker_unittest.py b/Tools/Scripts/webkitpy/style/checker_unittest.py index 3de39ebb0..3b7d94c02 100755 --- a/Tools/Scripts/webkitpy/style/checker_unittest.py +++ b/Tools/Scripts/webkitpy/style/checker_unittest.py @@ -227,7 +227,7 @@ class GlobalVariablesTest(unittest.TestCase): "readability/naming") # Test if Qt exceptions are indeed working - assertCheck("Source/WebKit/qt/Api/qwebpage.cpp", + assertCheck("Source/WebKit/qt/WidgetApi/qwebpage.cpp", "readability/braces") assertCheck("Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp", "readability/braces") @@ -235,7 +235,7 @@ class GlobalVariablesTest(unittest.TestCase): "readability/braces") assertCheck("Source/WebKit/qt/examples/platformplugin/WebPlugin.cpp", "readability/braces") - assertNoCheck("Source/WebKit/qt/Api/qwebpage.cpp", + assertNoCheck("Source/WebKit/qt/WidgetApi/qwebpage.cpp", "readability/naming") assertNoCheck("Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp", "readability/naming") diff --git a/Tools/Scripts/webkitpy/tool/bot/queueengine.py b/Tools/Scripts/webkitpy/tool/bot/queueengine.py index 0d2c97820..6d5576e28 100644 --- a/Tools/Scripts/webkitpy/tool/bot/queueengine.py +++ b/Tools/Scripts/webkitpy/tool/bot/queueengine.py @@ -34,7 +34,7 @@ import traceback from datetime import datetime, timedelta from webkitpy.common.system.executive import ScriptError -from webkitpy.common.system.deprecated_logging import OutputTee +from webkitpy.common.system.outputtee import OutputTee _log = logging.getLogger(__name__) diff --git a/Tools/Scripts/webkitpy/webkitpy.pyproj b/Tools/Scripts/webkitpy/webkitpy.pyproj index 0bff5fce6..588cfeaf5 100644 --- a/Tools/Scripts/webkitpy/webkitpy.pyproj +++ b/Tools/Scripts/webkitpy/webkitpy.pyproj @@ -130,8 +130,6 @@ <Compile Include="common\system\autoinstall.py" /> <Compile Include="common\system\crashlogs.py" /> <Compile Include="common\system\crashlogs_unittest.py" /> - <Compile Include="common\system\deprecated_logging.py" /> - <Compile Include="common\system\deprecated_logging_unittest.py" /> <Compile Include="common\system\environment.py" /> <Compile Include="common\system\environment_unittest.py" /> <Compile Include="common\system\executive.py" /> diff --git a/Tools/TestWebKitAPI/PlatformEfl.cmake b/Tools/TestWebKitAPI/PlatformEfl.cmake index e301968fe..b1aa579de 100644 --- a/Tools/TestWebKitAPI/PlatformEfl.cmake +++ b/Tools/TestWebKitAPI/PlatformEfl.cmake @@ -55,6 +55,7 @@ SET(test_webkit2_api_BINARIES FrameMIMETypeHTML FrameMIMETypePNG GetInjectedBundleInitializationUserDataCallback + HitTestResultNodeHandle InjectedBundleBasic InjectedBundleInitializationUserDataCallbackWins LoadAlternateHTMLStringWithNonDirectoryURL @@ -90,7 +91,6 @@ ADD_DEFINITIONS(-DTHEME_DIR="${THEME_BINARY_DIR}") # Tests disabled because of missing features on the test harness: # -# HitTestResultNodeHandle # ResponsivenessTimerDoesntFireEarly # SpacebarScrolling # diff --git a/Tools/TestWebKitAPI/efl/PlatformWebView.cpp b/Tools/TestWebKitAPI/efl/PlatformWebView.cpp index cdc97bd13..08407c6a3 100644 --- a/Tools/TestWebKitAPI/efl/PlatformWebView.cpp +++ b/Tools/TestWebKitAPI/efl/PlatformWebView.cpp @@ -102,4 +102,13 @@ void PlatformWebView::simulateMouseMove(unsigned x, unsigned y) evas_event_feed_mouse_move(evas, x, y, 0, 0); } +void PlatformWebView::simulateRightClick(unsigned x, unsigned y) +{ + Evas* evas = ecore_evas_get(m_window); + evas_object_show(m_view); + evas_event_feed_mouse_move(evas, x, y, 0, 0); + evas_event_feed_mouse_down(evas, 3, EVAS_BUTTON_NONE, 0, 0); + evas_event_feed_mouse_up(evas, 3, EVAS_BUTTON_NONE, 0, 0); +} + } // namespace TestWebKitAPI diff --git a/Tools/WebKitTestRunner/InjectedBundle/Target.pri b/Tools/WebKitTestRunner/InjectedBundle/Target.pri index d7305e3ac..b0091194a 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/Target.pri +++ b/Tools/WebKitTestRunner/InjectedBundle/Target.pri @@ -48,7 +48,7 @@ HEADERS += \ DESTDIR = $${ROOT_BUILD_DIR}/lib -QT += widgets webkitwidgets +QT += widgets webkit WEBKIT += wtf javascriptcore webcore diff --git a/Tools/gtk/generate-gtkdoc b/Tools/gtk/generate-gtkdoc index d40daebec..3edd13f3e 100755 --- a/Tools/gtk/generate-gtkdoc +++ b/Tools/gtk/generate-gtkdoc @@ -98,6 +98,7 @@ def get_webkit2_options(): 'ignored_files': glob.glob(src_path('*Private.h')) + \ glob.glob(src_path('*Client*')) + \ glob.glob(src_path('WebKitWebViewBaseAccessible.*')) + \ + glob.glob(src_path('WebKit2GtkAuthenticationDialog.*')) + \ glob.glob(src_path('WebKitGeolocationProvider.*')) + \ glob.glob(src_path('WebKitTextChecker.*')) + \ glob.glob(derived_sources_path('webkit2gtk', 'webkit2', 'WebKitMarshal.*')) + \ diff --git a/Tools/qmake/config.tests/gccdepends/empty.cpp b/Tools/qmake/config.tests/gccdepends/empty.cpp new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/Tools/qmake/config.tests/gccdepends/empty.cpp diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf index dc5e438c1..589671883 100644 --- a/Tools/qmake/mkspecs/features/default_post.prf +++ b/Tools/qmake/mkspecs/features/default_post.prf @@ -156,7 +156,7 @@ contains(TEMPLATE, lib) { DEFINES += BUILDING_$${TARGET} # Triggers the right export macro for the QtWebKit API (see qwebkitglobal.h) - !contains(QT, webkitwidgets): DEFINES += BUILDING_WEBKIT + !contains(QT, webkit)|equals(MODULE, webkitwidgets): DEFINES += BUILDING_WEBKIT # Prevent name clashes when building both debug and release. Qt5's module # system already takes care of this for the top level QtWebKit library. @@ -172,12 +172,12 @@ contains(TEMPLATE, lib) { } } -contains(QT, webkitwidgets) { +contains(QT, webkit)|contains(QT, webkitwidgets) { # In addition to the main shared QtWebKit library we also # need to link to any intermediate shared libraries. force_static_libs_as_shared { WEBKIT += wtf javascriptcore webcore - build?(webkit1): WEBKIT += webkitwidgets webkit1 + build?(webkit1): WEBKIT += webkit1 build?(webkit2): WEBKIT += webkit2 } @@ -193,12 +193,12 @@ defineTest(needToLink) { contains(libraries, $$TARGET): return(true) # Or anything that uses QtWebKit in this special config - contains(QT, webkitwidgets): return(true) + contains(QT, webkit): return(true) } # Lastly, we allow apps (jsc) to link directly to the intermediate # libraries intead of using the exported symbols from QtWebKit. - contains(TEMPLATE, app):!contains(QT, webkitwidgets): return(true) + contains(TEMPLATE, app):!contains(QT, webkit):!contains(QT, webkitwidgets): return(true) # Anything else should just get include paths, etc, not link return(false) @@ -247,7 +247,7 @@ root_project_file { # qmake_all and generate all the derived sources, just to # build documentation. previous_subdir = - doc_targets = docs install_docs uninstall_docs + doc_targets = docs install_docs uninstall_docs prepare_docs generate_docs for(subdir, SUBDIRS) { equals(subdir, QtWebKit) { for(doc_target, doc_targets) { diff --git a/Tools/qmake/mkspecs/features/webkit_modules.prf b/Tools/qmake/mkspecs/features/webkit_modules.prf index 505b82658..189387835 100644 --- a/Tools/qmake/mkspecs/features/webkit_modules.prf +++ b/Tools/qmake/mkspecs/features/webkit_modules.prf @@ -7,7 +7,7 @@ # Reorder libraries so that the link and include order is correct, # and make sure the case matches the original case. -libraries = WebKitWidgets WebKit1 WebKit2 WebCore ANGLE JavaScriptCore WTF +libraries = WebKit1 WebKit2 WebCore ANGLE JavaScriptCore WTF for(library, libraries) { contains(WEBKIT, $$lower($$library)) { WEBKIT -= $$lower($$library) @@ -34,11 +34,9 @@ for(library, WEBKIT) { # Anything not linking dynamically to QtWebKit should make sure to have its export # macros synchronized with the code that it will be linked with statically. - !contains(QT, webkitwidgets): DEFINES += STATICALLY_LINKED_WITH_$$library + !contains(QT, webkit): DEFINES += STATICALLY_LINKED_WITH_$$library } -!isEmpty(MODULE): CONFIG += creating_module - creating_module { # Sanitize PKGCONFIG as we don't want any of these libraries # to end up in as public API dependenices in the QtWebKit prl file. diff --git a/Tools/qmake/mkspecs/modules/webkitwidgets.prf b/Tools/qmake/mkspecs/modules/webkitwidgets.prf deleted file mode 100644 index ca1643c8d..000000000 --- a/Tools/qmake/mkspecs/modules/webkitwidgets.prf +++ /dev/null @@ -1,9 +0,0 @@ -# ------------------------------------------------------------------- -# Module file for WebKitWidget, used by targets that depend on WebKitWidget -# -# See 'Tools/qmake/README' for an overview of the build system -# ------------------------------------------------------------------- - -WEBKIT.webkitwidgets.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/WebKit - -include($${WEBKIT.webkitwidgets.root_source_dir}/WebKitWidgets.pri) |