Cleanup: Use @memoized for property IOSSimulator.testing_device
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Apr 2015 21:39:06 +0000 (21:39 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Apr 2015 21:39:06 +0000 (21:39 +0000)
https://bugs.webkit.org/show_bug.cgi?id=141715

Reviewed by Darin Adler.

Simplify the caching of the result of IOSSimulator.testing_device
and make the code more readable by making use of the @memoized declarator
instead of explicitly managing a private instance variable,
IOSSimulator._testing_device, for the cached result.

* Scripts/webkitpy/port/ios.py:
(IOSPort.determine_full_port_name):
(IOSSimulatorPort.__init__): Delete instance variable IOSSimulatorPort._testing_device.
(IOSSimulatorPort):
(IOSSimulatorPort.testing_device): No need to cache the created device object in
IOSSimulatorPort._testing_device since we are marking this function @memoized.
(IOSSimulatorPort.reset_preferences): Code style fix; inline self.testing_device.path instead
of caching in local variable since we only make use of this value exactly once in this function.
(IOSPort.__init__): Deleted; The instance variable IOSPort._testing_device has never
been used since being added in r178622. So, we can remove this constructor since
it's the trivial constructor once we remove the instance variable IOSPort._testing_device.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@183281 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/webkitpy/port/ios.py

index cc3b9d3..bea7a74 100644 (file)
@@ -1,3 +1,27 @@
+2015-04-24  Daniel Bates  <dabates@apple.com>
+
+        Cleanup: Use @memoized for property IOSSimulator.testing_device
+        https://bugs.webkit.org/show_bug.cgi?id=141715
+
+        Reviewed by Darin Adler.
+
+        Simplify the caching of the result of IOSSimulator.testing_device
+        and make the code more readable by making use of the @memoized declarator
+        instead of explicitly managing a private instance variable,
+        IOSSimulator._testing_device, for the cached result.
+
+        * Scripts/webkitpy/port/ios.py:
+        (IOSPort.determine_full_port_name):
+        (IOSSimulatorPort.__init__): Delete instance variable IOSSimulatorPort._testing_device.
+        (IOSSimulatorPort):
+        (IOSSimulatorPort.testing_device): No need to cache the created device object in
+        IOSSimulatorPort._testing_device since we are marking this function @memoized.
+        (IOSSimulatorPort.reset_preferences): Code style fix; inline self.testing_device.path instead
+        of caching in local variable since we only make use of this value exactly once in this function.
+        (IOSPort.__init__): Deleted; The instance variable IOSPort._testing_device has never
+        been used since being added in r178622. So, we can remove this constructor since
+        it's the trivial constructor once we remove the instance variable IOSPort._testing_device.
+
 2015-04-24  Anders Carlsson  <andersca@apple.com>
 
         Rename -[WKWebsiteDataStore isNonPersistent] to -[WKWebsiteDataStore isPersistent]
index cac2674..69e7fb3 100644 (file)
@@ -60,11 +60,6 @@ class IOSPort(ApplePort):
             port_name = port_name + '-' + major_version_number
         return port_name
 
-    def __init__(self, *args, **kwargs):
-        super(IOSPort, self).__init__(*args, **kwargs)
-
-        self._testing_device = None
-
     # Despite their names, these flags do not actually get passed all the way down to webkit-build.
     def _build_driver_flags(self):
         return ['--sdk', 'iphoneos'] + (['ARCHS=%s' % self.architecture()] if self.architecture() else [])
@@ -93,8 +88,6 @@ class IOSSimulatorPort(Port):
             # with MallocStackLogging enabled.
             self.set_option_default("batch_size", 1000)
 
-        self._testing_device = None
-
     def driver_name(self):
         if self.get_option('driver_name'):
             return self.get_option('driver_name')
@@ -328,11 +321,9 @@ class IOSSimulatorPort(Port):
         return stderr, crash_log
 
     @property
+    @memoized
     def testing_device(self):
-        if self._testing_device is not None:
-            return self._testing_device
-        self._testing_device = Simulator().lookup_or_create_device(self.simulator_device_type.name + ' WebKit Tester', self.simulator_device_type, self.simulator_runtime)
-        return self.testing_device
+        return Simulator().lookup_or_create_device(self.simulator_device_type.name + ' WebKit Tester', self.simulator_device_type, self.simulator_runtime)
 
     def look_for_new_crash_logs(self, crashed_processes, start_time):
         crash_logs = {}
@@ -385,8 +376,7 @@ class IOSSimulatorPort(Port):
         return self._image_differ.diff_image(expected_contents, actual_contents, tolerance)
 
     def reset_preferences(self):
-        simulator_path = self.testing_device.path
-        data_path = os.path.join(simulator_path, 'data')
+        data_path = os.path.join(self.testing_device.path, 'data')
         if os.path.isdir(data_path):
             shutil.rmtree(data_path)