Title: [185483] trunk/Tools
Revision
185483
Author
[email protected]
Date
2015-06-11 19:16:28 -0700 (Thu, 11 Jun 2015)

Log Message

Move cursor to corner and fix safari window size before running benchmark
https://bugs.webkit.org/show_bug.cgi?id=145858

Patch by Dewei Zhu <[email protected]> on 2015-06-11
Reviewed by Ryosuke Niwa

* Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:
(OSXBrowserDriver.prepareEnv):
(OSXBrowserDriver):
(OSXBrowserDriver.moveCursor):
(OSXBrowserDriver.getScreenSize):
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:
(OSXChromeDriver.launchUrl):
(OSXChromeCanaryDriver.launchUrl):
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py:
(OSXFirefoxDriver.launchUrl):
(OSXFirefoxNightlyDriver.launchUrl):
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:
(OSXSafariDriver.prepareEnv):
(OSXSafariDriver):
(OSXSafariDriver.maximizeWindow):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (185482 => 185483)


--- trunk/Tools/ChangeLog	2015-06-12 01:46:42 UTC (rev 185482)
+++ trunk/Tools/ChangeLog	2015-06-12 02:16:28 UTC (rev 185483)
@@ -1,3 +1,26 @@
+2015-06-11  Dewei Zhu  <[email protected]>
+
+        Move cursor to corner and fix safari window size before running benchmark
+        https://bugs.webkit.org/show_bug.cgi?id=145858
+
+        Reviewed by Ryosuke Niwa
+
+        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:
+        (OSXBrowserDriver.prepareEnv):
+        (OSXBrowserDriver):
+        (OSXBrowserDriver.moveCursor):
+        (OSXBrowserDriver.getScreenSize):
+        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:
+        (OSXChromeDriver.launchUrl):
+        (OSXChromeCanaryDriver.launchUrl):
+        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py:
+        (OSXFirefoxDriver.launchUrl):
+        (OSXFirefoxNightlyDriver.launchUrl):
+        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:
+        (OSXSafariDriver.prepareEnv):
+        (OSXSafariDriver):
+        (OSXSafariDriver.maximizeWindow):
+
 2015-06-11  Daniel Bates  <[email protected]>
 
         [iOS] Cannot run run-webkit-tests with public SDK; LayoutTestRelay fails to build

Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py (185482 => 185483)


--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py	2015-06-12 01:46:42 UTC (rev 185482)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py	2015-06-12 02:16:28 UTC (rev 185483)
@@ -4,6 +4,12 @@
 import subprocess
 
 from AppKit import NSRunningApplication
+from AppKit import NSScreen
+from Quartz.CoreGraphics import CGEventCreateMouseEvent
+from Quartz.CoreGraphics import CGEventPost
+from Quartz.CoreGraphics import kCGEventMouseMoved
+from Quartz.CoreGraphics import kCGHIDEventTap
+from Quartz.CoreGraphics import kCGMouseButtonLeft
 from browser_driver import BrowserDriver
 
 
@@ -15,6 +21,7 @@
 
     def prepareEnv(self):
         self.closeBrowsers()
+        self.moveCursor(0, 0)
 
     def closeBrowsers(self):
         self.terminateProcesses(self.bundleIdentifier)
@@ -43,3 +50,12 @@
         process = subprocess.Popen(args, env=env)
         subprocess.Popen(["/usr/bin/caffeinate", "-disw", str(process.pid)])
         return process
+
+    @classmethod
+    def moveCursor(cls, x, y):
+        moveEvent = CGEventCreateMouseEvent(None, kCGEventMouseMoved, (x, y), kCGMouseButtonLeft)
+        CGEventPost(kCGHIDEventTap, moveEvent)
+
+    @classmethod
+    def screenSize(cls):
+        return NSScreen.mainScreen().frame().size

Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py (185482 => 185483)


--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py	2015-06-12 01:46:42 UTC (rev 185482)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py	2015-06-12 02:16:28 UTC (rev 185483)
@@ -15,11 +15,11 @@
     bundleIdentifier = 'com.google.Chrome'
 
     def launchUrl(self, url, browserBuildPath):
-        self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome.app', url="" args=['--args', '--homepage', url])
+        self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome.app', url="" args=['--args', '--homepage', url, '--window-size={width},{height}'.format(width=int(self.screenSize().width), height=int(self.screenSize().height))])
 
 
 class OSXChromeCanaryDriver(OSXBrowserDriver):
     bundleIdentifier = 'com.google.Chrome.canary'
 
     def launchUrl(self, url, browserBuildPath):
-        self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome Canary.app', url="" args=['--args', '--homepage', url])
+        self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome Canary.app', url="" args=['--args', '--homepage', url, '--window-size={width},{height}'.format(width=int(self.screenSize().width), height=int(self.screenSize().height))])

Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py (185482 => 185483)


--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py	2015-06-12 01:46:42 UTC (rev 185482)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py	2015-06-12 02:16:28 UTC (rev 185483)
@@ -15,11 +15,11 @@
     bundleIdentifier = 'org.mozilla.firefox'
 
     def launchUrl(self, url, browserBuildPath):
-        self.launchProcess(buildDir=browserBuildPath, appName='Firefox.app', url="" args=[url])
+        self.launchProcess(buildDir=browserBuildPath, appName='Firefox.app', url="" args=[url, '--args', '-width', str(int(self.screenSize().width)), '-height', str(int(self.screenSize().height))])
 
 
 class OSXFirefoxNightlyDriver(OSXBrowserDriver):
     bundleIdentifier = 'org.mozilla.nightly'
 
     def launchUrl(self, url, browserBuildPath):
-        self.launchProcess(buildDir=browserBuildPath, appName='FirefoxNightly.app', url="" args=[url])
+        self.launchProcess(buildDir=browserBuildPath, appName='FirefoxNightly.app', url="" args=[url, '--args', '-width', str(int(self.screenSize().width)), '-height', str(int(self.screenSize().height))])

Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py (185482 => 185483)


--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py	2015-06-12 01:46:42 UTC (rev 185482)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py	2015-06-12 02:16:28 UTC (rev 185483)
@@ -2,6 +2,7 @@
 
 import logging
 import os
+import re
 import subprocess
 import time
 
@@ -16,10 +17,11 @@
     bundleIdentifier = 'com.apple.Safari'
 
     def prepareEnv(self):
+        super(OSXSafariDriver, self).closeBrowsers()
         self.safariProcess = None
-        self.closeBrowsers()
         forceRemove(os.path.join(os.path.expanduser('~'), 'Library/Saved Application State/com.apple.Safari.savedState'))
         forceRemove(os.path.join(os.path.expanduser('~'), 'Library/Safari/LastSession.plist'))
+        self.maximizeWindow()
         self.safariPreferences = ["-HomePage", "about:blank", "-WarnAboutFraudulentWebsites", "0", "-ExtensionsEnabled", "0", "-ShowStatusBar", "0", "-NewWindowBehavior", "1", "-NewTabBehavior", "1"]
 
     def launchUrl(self, url, browserBuildPath):
@@ -46,3 +48,10 @@
         super(OSXSafariDriver, self).closeBrowsers()
         if self.safariProcess and self.safariProcess.returncode:
             sys.exit('Browser crashed with exitcode %d' % self._process.returncode)
+
+    @classmethod
+    def maximizeWindow(cls):
+        try:
+            subprocess.check_call(['/usr/bin/defaults', 'write', 'com.apple.Safari', 'NSWindow Frame BrowserWindowFrame', ' '.join(['0', '0', str(cls.screenSize().width), str(cls.screenSize().height)] * 2)])
+        except Exception as error:
+            _log.error('Reset safari window size failed - Error: {}'.format(error))
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to