Updated Branches:
  refs/heads/master 444a89013 -> 2cef31367

Add a benchmark into CordovaLibApp for measuring exec() speed.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/commit/2cef3136
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/tree/2cef3136
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/diff/2cef3136

Branch: refs/heads/master
Commit: 2cef313671476dda7aa43ebef5206ac3f22815b7
Parents: 444a890
Author: Andrew Grieve <agri...@chromium.org>
Authored: Wed Aug 8 11:28:37 2012 -0400
Committer: Andrew Grieve <agri...@chromium.org>
Committed: Wed Aug 8 11:31:34 2012 -0400

----------------------------------------------------------------------
 CordovaLib/CordovaLibApp/Cordova.plist            |   22 +-----
 CordovaLib/CordovaLibApp/EchoPlugin.h             |   23 ++++++
 CordovaLib/CordovaLibApp/EchoPlugin.m             |   32 ++++++++
 CordovaLib/CordovaLibApp/www/index.html           |   62 +++++++++++++++-
 CordovaLib/CordovaTests.xcodeproj/project.pbxproj |    6 ++
 5 files changed, 124 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/2cef3136/CordovaLib/CordovaLibApp/Cordova.plist
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/Cordova.plist 
b/CordovaLib/CordovaLibApp/Cordova.plist
index 69d86a3..4725c8a 100644
--- a/CordovaLib/CordovaLibApp/Cordova.plist
+++ b/CordovaLib/CordovaLibApp/Cordova.plist
@@ -1,25 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
-<!--
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-# http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
--->
 <plist version="1.0">
 <dict>
        <key>UIWebViewBounce</key>
@@ -76,6 +56,8 @@
                <string>CDVCapture</string>
                <key>SplashScreen</key>
                <string>CDVSplashScreen</string>
+               <key>EchoPlugin</key>
+               <string>EchoPlugin</string>
                <key>Battery</key>
                <string>CDVBattery</string>
        </dict>

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/2cef3136/CordovaLib/CordovaLibApp/EchoPlugin.h
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/EchoPlugin.h 
b/CordovaLib/CordovaLibApp/EchoPlugin.h
new file mode 100644
index 0000000..3c5055d
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/EchoPlugin.h
@@ -0,0 +1,23 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+#import "CDVPlugin.h"
+
+@interface EchoPlugin : CDVPlugin
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/2cef3136/CordovaLib/CordovaLibApp/EchoPlugin.m
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/EchoPlugin.m 
b/CordovaLib/CordovaLibApp/EchoPlugin.m
new file mode 100644
index 0000000..c1790a8
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/EchoPlugin.m
@@ -0,0 +1,32 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+
+#import "EchoPlugin.h"
+#import "CDV.h"
+
+@implementation EchoPlugin
+
+- (void)echo:(CDVInvokedUrlCommand*)command
+{
+    CDVPluginResult* pluginResult = [CDVPluginResult 
resultWithStatus:CDVCommandStatus_OK messageAsString:[command.arguments 
objectAtIndex:0]];
+    [self success:pluginResult callbackId:command.callbackId];
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/2cef3136/CordovaLib/CordovaLibApp/www/index.html
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/www/index.html 
b/CordovaLib/CordovaLibApp/www/index.html
index f7ec13c..bb6955a 100644
--- a/CordovaLib/CordovaLibApp/www/index.html
+++ b/CordovaLib/CordovaLibApp/www/index.html
@@ -69,9 +69,67 @@
     // Used by unit tests to tell when the page is loaded.
     window.pageIsLoaded = true;
                // do your thing!
-               navigator.notification.alert("Cordova is working")
+               navigator.notification.alert("Cordova is working")        
        }
     
+    var appLogElem;
+    function appLog(message) {
+        if (!appLogElem) {
+            appLogElem = document.getElementById('app-logs');
+        }
+        appLogElem.innerText += message + '\n';
+    }
+    
+    function benchExec()
+    {
+        appLog('Started exec benchmark');
+        var exec = cordova.require('cordova/exec'),
+            BENCH_DURATION_MS = 2000,
+            BENCH_PAYLOAD = 'This is a small test message.',
+            startTime = +new Date,
+            callCount = 0;
+        
+        function win(result) {
+            callCount++;
+            if (result != BENCH_PAYLOAD) {
+                appLog('Wrong echo data!');
+            }
+            var elapsedMs = new Date - startTime;
+            if (elapsedMs < BENCH_DURATION_MS) {
+                setTimeout(echoMessage, 0);
+            } else {
+                var callsPerSecond = callCount * 1000 / elapsedMs;
+                appLog('Calls per second: ' + callsPerSecond);
+            }
+        }
+        function fail() {
+            appLog('Call failed!');
+        }
+        function echoMessage() {
+            exec(win, fail, "EchoPlugin", "echo", [BENCH_PAYLOAD]);
+        }
+        echoMessage();
+        setTimeout(function() {
+            if (!callCount) {
+                alert('Echo plugin did not respond');
+            }
+        }, 500);
+        
+        // Benchmark results on agrieve's iPad 3:
+        // webView:shouldStartLoadWithRequest:navigationType:
+        // ~350 Echos per second.
+        // NSURLProtocol with XHR to gap:///gapready, not handling response:
+        // ~160 Echos per second.
+        // NSURLProtocol with XHR to http:///gapready, not handling response:
+        // ~215 Echos per second.
+        // NSURLProtocol with XHR to file:///gapready, not handling response:
+        // ~215 Echos per second.
+        // NSURLProtocol with XHR to about:/gapready, not handling response:
+        // ~160 Echos per second.
+        // NSURLProtocol with XHR to http:///gapready, *with* handling 
response:
+        // ~160 Echos per second.
+    }
+    
     </script>
   </head>
   <body onload="onBodyLoad()">
@@ -80,5 +138,7 @@
                <li>Check your console log for any white-list rejection 
errors.</li>
                <li>Add your allowed <strong>hosts</strong> in 
Cordova.plist/ExternalHosts (wildcards OK, don't enter the URL scheme)</li>
        </ol>
+    <button onclick="benchExec()">Benchmark exec</button>
+    <pre id="app-logs"></pre>
   </body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/2cef3136/CordovaLib/CordovaTests.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaTests.xcodeproj/project.pbxproj 
b/CordovaLib/CordovaTests.xcodeproj/project.pbxproj
index 3d1fda3..03bc898 100644
--- a/CordovaLib/CordovaTests.xcodeproj/project.pbxproj
+++ b/CordovaLib/CordovaTests.xcodeproj/project.pbxproj
@@ -43,6 +43,7 @@
                68A32D7E141030EB006B237C /* UIKit.framework in Frameworks */ = 
{isa = PBXBuildFile; fileRef = 686357AA141002F100DF4CF2 /* UIKit.framework */; 
};
                68A32D7F141030F3006B237C /* Foundation.framework in Frameworks 
*/ = {isa = PBXBuildFile; fileRef = 686357AC141002F100DF4CF2 /* 
Foundation.framework */; };
                EB37019415D18B9A00BEBC43 /* libCordova.a in Frameworks */ = 
{isa = PBXBuildFile; fileRef = EB37018C15D18B2E00BEBC43 /* libCordova.a */; };
+               EB68E0BA15D2BCF400885F79 /* EchoPlugin.m in Sources */ = {isa = 
PBXBuildFile; fileRef = EB68E0B915D2BCF400885F79 /* EchoPlugin.m */; };
                EBA3554615A731F100F4DE24 /* CDVFakeFileManager.m in Sources */ 
= {isa = PBXBuildFile; fileRef = EBA3554515A731F100F4DE24 /* 
CDVFakeFileManager.m */; };
                EBA3556F15ABD0C900F4DE24 /* CDVFileTransferTests.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = EBA3556E15ABD0C900F4DE24 /* 
CDVFileTransferTests.m */; };
 /* End PBXBuildFile section */
@@ -105,6 +106,8 @@
                686357DC14100B1600DF4CF2 /* CoreMedia.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; 
sourceTree = SDKROOT; };
                68A32D7414103017006B237C /* AddressBook.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; 
sourceTree = SDKROOT; };
                EB37018115D18B2D00BEBC43 /* CordovaLib.xcodeproj */ = {isa = 
PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = 
CordovaLib.xcodeproj; sourceTree = "<group>"; };
+               EB68E0B815D2BCF400885F79 /* EchoPlugin.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
EchoPlugin.h; sourceTree = "<group>"; };
+               EB68E0B915D2BCF400885F79 /* EchoPlugin.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= EchoPlugin.m; sourceTree = "<group>"; };
                EBA3550F15A5F18900F4DE24 /* CDVWebViewTest.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDVWebViewTest.h; 
sourceTree = "<group>"; };
                EBA3554415A731F100F4DE24 /* CDVFakeFileManager.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
CDVFakeFileManager.h; sourceTree = "<group>"; };
                EBA3554515A731F100F4DE24 /* CDVFakeFileManager.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= CDVFakeFileManager.m; sourceTree = "<group>"; };
@@ -197,6 +200,8 @@
                                30F8AE1C152129DA006625B3 /* www */,
                                303A4076152124BB00182201 /* AppDelegate.h */,
                                303A4077152124BB00182201 /* AppDelegate.m */,
+                               EB68E0B815D2BCF400885F79 /* EchoPlugin.h */,
+                               EB68E0B915D2BCF400885F79 /* EchoPlugin.m */,
                                303A4079152124BB00182201 /* ViewController.h */,
                                303A407A152124BB00182201 /* ViewController.m */,
                                303A406E152124BB00182201 /* Supporting Files */,
@@ -400,6 +405,7 @@
                                303A4074152124BB00182201 /* main.m in Sources 
*/,
                                303A4078152124BB00182201 /* AppDelegate.m in 
Sources */,
                                303A407B152124BB00182201 /* ViewController.m in 
Sources */,
+                               EB68E0BA15D2BCF400885F79 /* EchoPlugin.m in 
Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };

Reply via email to