From da78aa8a255f189f3021394d339d8fab0ae9b0eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Mendiara=20Ca=C3=B1ardo?= Date: Wed, 26 Feb 2014 12:56:38 +0100 Subject: [PATCH 01/64] ADD bower --- .gitignore | 7 +++++++ bower.json | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 bower.json diff --git a/.gitignore b/.gitignore index 0a9e55c..4a07bae 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,10 @@ Pods */*/bin/ */*/gen/ */*/build/ + +# Web +.idea + +# Development +node_modules +bower_components diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..aaf5c9b --- /dev/null +++ b/bower.json @@ -0,0 +1,26 @@ +{ + "name": "hybridge", + "version": "1.2.0", + "homepage": "https://github.com/telefonicaid/tdigital-hybridge", + "description": "javascript / mobile native simple bridge for hybrid apps, back and forth...", + "main": "js/hybridge.js", + "keywords": [ + "native", + "javascript", + "ios", + "android", + "bridge", + "hybrid" + ], + "license": "AfferoGPLv3", + "ignore": [ + "android", + "ios", + "boilerplate", + ".gitignore", + "*.podspec" + ], + "dependencies": { + "jquery": ">=1.5.x" + } +} From ce93bf4f139f30bd71882a9094a5f8c8170482ca Mon Sep 17 00:00:00 2001 From: Javier Mendiara Date: Wed, 26 Feb 2014 13:33:38 +0100 Subject: [PATCH 02/64] Update README.md Add installation instructions for javascript --- README.md | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0928c8f..d3b94e9 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,10 @@ Yet another javascript / mobile native simple bridge for hybrid apps, back and f ## Index 1. [Why?](#why) - 1. [Getting Started](#start) - * [Dependencies](#dependencies) - * [Javascript](#dependencies_javascript) + 1. [Installation](#installation) + * [Javascript](#installation_javascript) + * [Android](#installation_javascript) + * [iOS](#installation_ios) 1. [Usage](#usage) * [Javascript](#usage_javascript) * [Android](#usage_android) @@ -31,14 +32,27 @@ Hybridge tries to make easy communication and data exchanging between native (iO **[[⬆]](#index)** -## Getting Started -Firstly, get the code by downloading the zip or cloning the project into your local. +## Installation +Hybridge follows [semantic versioning](http://semver.org/). In the `boilerplate` directory you can find examples of how to get running in the different platforms. + +### Javascript + +Since v1.2.0, `hybridge` is available in [bower](http://bower.io/). Bower will install `hybridge` itself and all its dependencies. +```sh +$ bower install --save hybridge +``` + +You can manually download the javascript [js/hybridge.js](js/hybridge.js) and use the traditional way. -### Dependencies -#### Javascript Hybridge works in an AMD fashion, so you'll need [RequireJS](http://requirejs.org) for the loading. You'll also need [JQuery](http://jquery.com) (version 1.5 or newer) for the Javascript part since [Deferred](http://api.jquery.com/category/deferred-object) object is used intensively. + +### Android + +### iOS + + **[[⬆]](#index)** ## Usage From 122c946d20348deee51257ffcedda56575fd21c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Mendiara=20Ca=C3=B1ardo?= Date: Wed, 26 Feb 2014 14:06:12 +0100 Subject: [PATCH 03/64] EDIT to support require and multijquery. We hope that somebody using bower is using a jquery>=5.... --- bower.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bower.json b/bower.json index aaf5c9b..29e9dcb 100644 --- a/bower.json +++ b/bower.json @@ -21,6 +21,7 @@ "*.podspec" ], "dependencies": { - "jquery": ">=1.5.x" + "jquery": "*", + "requirejs": "~2.1.0" } } From 622c06c66bd7f8a24ba66583ca2ddedd6062588c Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Thu, 27 Feb 2014 16:14:10 +0100 Subject: [PATCH 04/64] use universal lib in boilerplate (device and simulator) --- .../android/HybridgeBoilerplate/.classpath | 1 + .../HybridgeBoilerplate/libHybridge.a | Bin 285124 -> 376744 bytes 2 files changed, 1 insertion(+) diff --git a/boilerplate/android/HybridgeBoilerplate/.classpath b/boilerplate/android/HybridgeBoilerplate/.classpath index 6aed2eb..7bc01d9 100644 --- a/boilerplate/android/HybridgeBoilerplate/.classpath +++ b/boilerplate/android/HybridgeBoilerplate/.classpath @@ -4,5 +4,6 @@ + diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/libHybridge.a b/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/libHybridge.a index b127baac73ddeb17fb7382017c8173278f709896..0a3156552ec0c030ccd85e15bc294aebfde9561b 100644 GIT binary patch delta 47820 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 From e434069a79ace6fc962ddc7f57c5a524c589ee0b Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Thu, 27 Feb 2014 16:17:42 +0100 Subject: [PATCH 05/64] fix hybridge.js to work with JQuery 1.10.2 --- js/hybridge.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/js/hybridge.js b/js/hybridge.js index 937897e..707767d 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -239,28 +239,29 @@ define([ if (xhr && xhr.readyState !== 4) { xhr = null; } + var def = $.Deferred(); var action = data.action; var id = data.id; xhr = $.ajax({ url: 'http://hybridge/' + action + '/' + id + '/' + new Date().getTime(), type: 'HEAD', - headers: { 'data': strJSON || '{}' }, - done: function() { + headers: { 'data': strJSON || '{}' } + }); + xhr.done(function() { if (xhr.status === 200) { _getLogger().info('Hybridge: ' + xhr.statusText); - xhr.resolve(JSON.parse(xhr.responseText || '{}')); + def.resolve(JSON.parse(xhr.responseText || '{}')); } else { _getLogger().error('Hybridge: ' + xhr.statusText); - xhr.reject({'error' : 'HTTP error: ' + xhr.status}); + def.reject({'error' : 'HTTP error: ' + xhr.status}); } - }, - error: function(xhr, text, textError) { + }); + xhr.fail(function(xhr, text, textError) { _getLogger().error('Error on bridge to native. Non native environment?', xhr, text, textError); - } - }); - return xhr.promise(); + }); + return def.promise(); } /** From 9780c889909f985e346742bcaf07e23887a9d0bc Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Thu, 27 Feb 2014 16:44:03 +0100 Subject: [PATCH 06/64] update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0928c8f..d354ff7 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Firstly, get the code by downloading the zip or cloning the project into your lo ### Dependencies #### Javascript Hybridge works in an AMD fashion, so you'll need [RequireJS](http://requirejs.org) for the loading. -You'll also need [JQuery](http://jquery.com) (version 1.5 or newer) for the Javascript part since [Deferred](http://api.jquery.com/category/deferred-object) object is used intensively. +You'll also need [JQuery](http://jquery.com) (version 1.8.3 or newer) for the Javascript part since [Deferred](http://api.jquery.com/category/deferred-object) object is used intensively. **[[⬆]](#index)** From 1c0cf06c822a31de538ad5dd97cd6333bcfae4c0 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Fri, 28 Feb 2014 13:13:14 +0100 Subject: [PATCH 07/64] avoid reusing Event objects --- js/hybridge.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/js/hybridge.js b/js/hybridge.js index 707767d..982334e 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -28,7 +28,7 @@ define([ 'use strict'; var version = 1, xhr, method, logger, environment, debug, mockResponses, initialized = false, - _events = {}, _errors, initModuleDef = $.Deferred(), initGlobalDef = $.Deferred(); + _events = [], _errors, initModuleDef = $.Deferred(), initGlobalDef = $.Deferred(); /** * Sets init configuration (native environment, logger) @@ -60,9 +60,9 @@ define([ method = _sendPrompt; } /** - * Inits ready event + * Adds ready event */ - _events.ready = _createEvent('ready'); + _events.push('ready'); return initModuleDef.resolve(conf).promise(); } @@ -350,8 +350,8 @@ define([ if (window.HybridgeGlobal.events) { for (var i = 0; i < window.HybridgeGlobal.events.length; i++) { event = window.HybridgeGlobal.events[i]; - if (!_events[event]) { - _events[event] = _createEvent(event); + if (_events.indexOf(event) !== -1) { + _events.push(event); } } } @@ -365,9 +365,11 @@ define([ * Global method used from native to trigger events (scope HybridgeGlobal) */ var _fireEvent = function (type, data) { - if (_events[type]) { - _events[type].data = data; - return document.dispatchEvent(_events[type]); + var event; + if (_events.indexOf(type) !== -1) { + event = _createEvent(type); + event.data = data; + return document.dispatchEvent(event); } else { _getLogger().error('Hybridge event not defined: ' + type); From bb9bdfc00e2731818e950d42ccf2608a9a29faa3 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Fri, 28 Feb 2014 14:53:17 +0100 Subject: [PATCH 08/64] browser console doesn't have any warning method --- js/hybridge.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/hybridge.js b/js/hybridge.js index 982334e..b411685 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -294,7 +294,7 @@ define([ document.addEventListener(event.type, callback, false); } else if (debug) { - _getLogger().warning('Hybridge: ' + _errors.DEBUG_MODE); + _getLogger().log('Hybridge: ' + _errors.DEBUG_MODE); } else { _getLogger().error('Hybridge: ' + _errors.EVENT_NOT_IMPLEMENTED, event); @@ -311,7 +311,7 @@ define([ document.removeEventListener(event.type, callback, false); } else if (debug) { - _getLogger().warning('Hybridge: ' + _errors.DEBUG_MODE); + _getLogger().log('Hybridge: ' + _errors.DEBUG_MODE); } else { _getLogger().error('Hybridge: ' + _errors.EVENT_NOT_IMPLEMENTED, event); From 845430397b525a7ba8ba3ef5bcc7f9f0f38965f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Mendiara=20Ca=C3=B1ardo?= Date: Wed, 5 Mar 2014 12:59:22 +0100 Subject: [PATCH 09/64] IMPLEMENT ready API --- .gitignore | 3 +++ js/hybridge.js | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0a9e55c..e0f5342 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,6 @@ Pods */*/bin/ */*/gen/ */*/build/ + +.idea + diff --git a/js/hybridge.js b/js/hybridge.js index b411685..85b427d 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -376,6 +376,24 @@ define([ } }; + /** + * Function to notify whenever Hybridge becomes or is enabled/ready + * + * If hybridge is ready at calling time, the callback is inmediatelly executed + * + * @param {Function} cb Callback to be called once Hybridge is ready + */ + function _ready(cb) { + if (_isEnabled()) { + cb(); + } else { + _addListener('ready', function onReady() { + _removeListener('ready', onReady); + cb(); + }); + } + } + /** * Object containing different error types on rejecting requests (promises) * @type {Array} @@ -429,7 +447,8 @@ define([ isActionImplemented: _isActionImplemented, send: _send, events: _events, - errors: _errors + errors: _errors, + ready: _ready }; /** From 055fd290e6735b721820e9fc344ecef350c2e8a6 Mon Sep 17 00:00:00 2001 From: Javier Mendiara Date: Wed, 5 Mar 2014 13:14:25 +0100 Subject: [PATCH 10/64] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index d354ff7..eeab4b1 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,11 @@ let's enumerate the available methods and properties from the Hybridge Javascrip Provides the way to communicate from Javascript to native side. An `action` parameter is required in order to execute an implemented native task. Returns a [JQuery](http://jquery.com) [Promise](http://api.jquery.com/Types/#Promise) containing data returned from native or custom error. You can add a second function parameter `fallback` in case something goes wrong and you want to supply aditional user feedback as well as update your UI. +* **ready(callback:Function)** + Function that executes the callback function once Hybridge has become enabled. If Hybridge was enabled at calling time, + the callback is executed inmediatly. The main difference with `addListener('ready', handler)` event subscription + is that the event handler never becomes executed when the subscription happens and Hybridge was enabled + ### Properties * **errors** Container object of customs errors returned by the Hybridge: From 60329749eac70dd8ce13030c24398fb715d2f37a Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Thu, 3 Apr 2014 14:44:28 +0200 Subject: [PATCH 11/64] Move pod spec to iOS directory --- .../Hybridge/tdigital-hybridge.podspec | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tdigital-hybridge.podspec => ios/Hybridge/tdigital-hybridge.podspec (100%) diff --git a/tdigital-hybridge.podspec b/ios/Hybridge/tdigital-hybridge.podspec similarity index 100% rename from tdigital-hybridge.podspec rename to ios/Hybridge/tdigital-hybridge.podspec From b0cfa2e6548d8eee45dc28666004b83f3cbff642 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 11:55:55 +0200 Subject: [PATCH 12/64] Refactor all interfaces --- ios/Hybridge/.gitignore | 12 +- .../Hybridge.xcodeproj/project.pbxproj | 363 +++++++++--------- ios/Hybridge/Hybridge/HYBBridge.h | 96 +++++ ios/Hybridge/Hybridge/HYBBridge.m | 82 ++++ ios/Hybridge/Hybridge/HYBConstants.h | 19 - ios/Hybridge/Hybridge/HYBEvent.h | 16 + ios/Hybridge/Hybridge/HYBEvent.m | 14 + ios/Hybridge/Hybridge/HYBHybridge.h | 82 ---- ios/Hybridge/Hybridge/HYBHybridge.m | 119 ------ .../Hybridge/HYBHybridgeSubscriptor.h | 37 -- .../Hybridge/HYBHybridgeSubscriptor.m | 76 ---- ios/Hybridge/Hybridge/HYBURLProtocol.h | 15 +- ios/Hybridge/Hybridge/HYBURLProtocol.m | 78 +--- ios/Hybridge/Hybridge/HYBWebViewController.h | 23 ++ ios/Hybridge/Hybridge/HYBWebViewController.m | 38 ++ ios/Hybridge/Hybridge/Hybridge-Prefix.pch | 10 +- ios/Hybridge/Hybridge/Hybridge.h | 20 + .../Hybridge/NSHTTPURLResponse+Hybridge.h | 35 ++ .../Hybridge/NSHTTPURLResponse+Hybridge.m | 34 ++ ios/Hybridge/Hybridge/UIWebView+Hybridge.h | 22 ++ ios/Hybridge/Hybridge/UIWebView+Hybridge.m | 17 + .../HybridgeTests/HybridgeTests-Info.plist | 22 ++ ios/Hybridge/HybridgeTests/HybridgeTests.m | 34 ++ .../HybridgeTests/en.lproj/InfoPlist.strings | 2 + ios/Hybridge/tdigital-hybridge.podspec | 23 -- 25 files changed, 688 insertions(+), 601 deletions(-) create mode 100644 ios/Hybridge/Hybridge/HYBBridge.h create mode 100644 ios/Hybridge/Hybridge/HYBBridge.m delete mode 100644 ios/Hybridge/Hybridge/HYBConstants.h create mode 100644 ios/Hybridge/Hybridge/HYBEvent.h create mode 100644 ios/Hybridge/Hybridge/HYBEvent.m delete mode 100644 ios/Hybridge/Hybridge/HYBHybridge.h delete mode 100644 ios/Hybridge/Hybridge/HYBHybridge.m delete mode 100644 ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.h delete mode 100644 ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.m create mode 100644 ios/Hybridge/Hybridge/HYBWebViewController.h create mode 100644 ios/Hybridge/Hybridge/HYBWebViewController.m create mode 100644 ios/Hybridge/Hybridge/Hybridge.h create mode 100644 ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.h create mode 100644 ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m create mode 100644 ios/Hybridge/Hybridge/UIWebView+Hybridge.h create mode 100644 ios/Hybridge/Hybridge/UIWebView+Hybridge.m create mode 100644 ios/Hybridge/HybridgeTests/HybridgeTests-Info.plist create mode 100644 ios/Hybridge/HybridgeTests/HybridgeTests.m create mode 100644 ios/Hybridge/HybridgeTests/en.lproj/InfoPlist.strings delete mode 100644 ios/Hybridge/tdigital-hybridge.podspec diff --git a/ios/Hybridge/.gitignore b/ios/Hybridge/.gitignore index c2b0716..0e7bb72 100644 --- a/ios/Hybridge/.gitignore +++ b/ios/Hybridge/.gitignore @@ -1,4 +1,8 @@ -# Xcode files +# System +.DS_Store +# Subversion +.svn +# Xcode build/* *.pbxuser !default.pbxuser @@ -9,8 +13,10 @@ build/* *.perspectivev3 !default.perspectivev3 *.xcworkspace -!default.xcworkspace xcuserdata profile *.moved-aside -*.DS_Store +# AppCode +.idea +#Cocoapods +Pods diff --git a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj index 60f1d57..71914ce 100644 --- a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj +++ b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj @@ -6,159 +6,205 @@ objectVersion = 46; objects = { -/* Begin PBXAggregateTarget section */ - E4C8091B182C0A0D002BF73C /* UniversalLib */ = { - isa = PBXAggregateTarget; - buildConfigurationList = E4C8091C182C0A0D002BF73C /* Build configuration list for PBXAggregateTarget "UniversalLib" */; - buildPhases = ( - E4C8091F182C0AD6002BF73C /* ShellScript */, - ); - dependencies = ( - ); - name = UniversalLib; - productName = UniversalLib; - }; -/* End PBXAggregateTarget section */ - /* Begin PBXBuildFile section */ - E42E3F35182A68170033C908 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42E3F34182A68170033C908 /* Foundation.framework */; }; - E42E3F3C182A68170033C908 /* HYBHybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = E42E3F3B182A68170033C908 /* HYBHybridge.m */; }; - E42E3F43182A68170033C908 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42E3F42182A68170033C908 /* XCTest.framework */; }; - E42E3F44182A68170033C908 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42E3F34182A68170033C908 /* Foundation.framework */; }; - E42E3F49182A68170033C908 /* libHybridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E42E3F31182A68170033C908 /* libHybridge.a */; }; - E4C80885182A6B44002BF73C /* HYBHybridgeSubscriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = E4C80881182A6B44002BF73C /* HYBHybridgeSubscriptor.m */; }; - E4C80886182A6B44002BF73C /* HYBURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = E4C80884182A6B44002BF73C /* HYBURLProtocol.m */; }; - E4C80887182A6B7B002BF73C /* HYBHybridgeSubscriptor.h in Sources */ = {isa = PBXBuildFile; fileRef = E4C80880182A6B44002BF73C /* HYBHybridgeSubscriptor.h */; }; - E4C80888182A6B7B002BF73C /* HYBConstants.h in Sources */ = {isa = PBXBuildFile; fileRef = E4C80882182A6B44002BF73C /* HYBConstants.h */; }; - E4C80889182A6B7B002BF73C /* HYBURLProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E4C80883182A6B44002BF73C /* HYBURLProtocol.h */; }; - E4C8088A182A6B7B002BF73C /* HYBHybridge.h in Sources */ = {isa = PBXBuildFile; fileRef = E42E3F39182A68170033C908 /* HYBHybridge.h */; }; - E4C8088D182A6F21002BF73C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C8088C182A6F21002BF73C /* UIKit.framework */; }; - E4C80916182A9348002BF73C /* HYBHybridge.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = E42E3F39182A68170033C908 /* HYBHybridge.h */; }; + 992DEDA518ED963A005CD768 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 992DEDA418ED963A005CD768 /* Foundation.framework */; }; + 992DEDAA18ED963A005CD768 /* Hybridge.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 992DEDA918ED963A005CD768 /* Hybridge.h */; }; + 992DEDB318ED963A005CD768 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 992DEDB218ED963A005CD768 /* XCTest.framework */; }; + 992DEDB418ED963A005CD768 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 992DEDA418ED963A005CD768 /* Foundation.framework */; }; + 992DEDB618ED963A005CD768 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 992DEDB518ED963A005CD768 /* UIKit.framework */; }; + 992DEDB918ED963A005CD768 /* libHybridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 992DEDA118ED963A005CD768 /* libHybridge.a */; }; + 992DEDBF18ED963A005CD768 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 992DEDBD18ED963A005CD768 /* InfoPlist.strings */; }; + 992DEDC118ED963A005CD768 /* HybridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 992DEDC018ED963A005CD768 /* HybridgeTests.m */; }; + 992DEDCC18ED97FB005CD768 /* Hybridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 992DEDA918ED963A005CD768 /* Hybridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 992DEDCF18ED9BA7005CD768 /* HYBBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 992DEDCD18ED9BA7005CD768 /* HYBBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 992DEDD018ED9BA7005CD768 /* HYBBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 992DEDCE18ED9BA7005CD768 /* HYBBridge.m */; }; + 992DEDD318ED9C5C005CD768 /* HYBEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 992DEDD118ED9C5C005CD768 /* HYBEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 992DEDD418ED9C5C005CD768 /* HYBEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 992DEDD218ED9C5C005CD768 /* HYBEvent.m */; }; + 992DEDD718ED9CF0005CD768 /* HYBURLProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 992DEDD518ED9CF0005CD768 /* HYBURLProtocol.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 992DEDD818ED9CF0005CD768 /* HYBURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 992DEDD618ED9CF0005CD768 /* HYBURLProtocol.m */; }; + 9947021218EDB672007A6D8E /* HYBWebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9947021018EDB672007A6D8E /* HYBWebViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9947021318EDB672007A6D8E /* HYBWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9947021118EDB672007A6D8E /* HYBWebViewController.m */; }; + 9960C8AC18EE914600FEC7DB /* UIWebView+Hybridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9960C8AA18EE914600FEC7DB /* UIWebView+Hybridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9960C8AD18EE914600FEC7DB /* UIWebView+Hybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */; }; + 9960C8B018EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9960C8B118EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - E42E3F47182A68170033C908 /* PBXContainerItemProxy */ = { + 992DEDB718ED963A005CD768 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = E42E3F29182A68160033C908 /* Project object */; + containerPortal = 992DED9918ED963A005CD768 /* Project object */; proxyType = 1; - remoteGlobalIDString = E42E3F30182A68170033C908; + remoteGlobalIDString = 992DEDA018ED963A005CD768; remoteInfo = Hybridge; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - E42E3F2F182A68170033C908 /* CopyFiles */ = { + 992DED9F18ED963A005CD768 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; - buildActionMask = 12; + buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; dstSubfolderSpec = 16; files = ( - E4C80916182A9348002BF73C /* HYBHybridge.h in CopyFiles */, + 992DEDAA18ED963A005CD768 /* Hybridge.h in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - E42E3F31182A68170033C908 /* libHybridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHybridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E42E3F34182A68170033C908 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - E42E3F38182A68170033C908 /* Hybridge-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Hybridge-Prefix.pch"; sourceTree = ""; }; - E42E3F39182A68170033C908 /* HYBHybridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HYBHybridge.h; sourceTree = ""; }; - E42E3F3B182A68170033C908 /* HYBHybridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HYBHybridge.m; sourceTree = ""; }; - E42E3F41182A68170033C908 /* HybridgeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HybridgeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - E42E3F42182A68170033C908 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - E4C80880182A6B44002BF73C /* HYBHybridgeSubscriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBHybridgeSubscriptor.h; sourceTree = ""; }; - E4C80881182A6B44002BF73C /* HYBHybridgeSubscriptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBHybridgeSubscriptor.m; sourceTree = ""; }; - E4C80882182A6B44002BF73C /* HYBConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBConstants.h; sourceTree = ""; }; - E4C80883182A6B44002BF73C /* HYBURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBURLProtocol.h; sourceTree = ""; }; - E4C80884182A6B44002BF73C /* HYBURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBURLProtocol.m; sourceTree = ""; }; - E4C8088C182A6F21002BF73C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 992DEDA118ED963A005CD768 /* libHybridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHybridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 992DEDA418ED963A005CD768 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 992DEDA818ED963A005CD768 /* Hybridge-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Hybridge-Prefix.pch"; sourceTree = ""; }; + 992DEDA918ED963A005CD768 /* Hybridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Hybridge.h; sourceTree = ""; }; + 992DEDB118ED963A005CD768 /* HybridgeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HybridgeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 992DEDB218ED963A005CD768 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 992DEDB518ED963A005CD768 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 992DEDBC18ED963A005CD768 /* HybridgeTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HybridgeTests-Info.plist"; sourceTree = ""; }; + 992DEDBE18ED963A005CD768 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 992DEDC018ED963A005CD768 /* HybridgeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HybridgeTests.m; sourceTree = ""; }; + 992DEDCD18ED9BA7005CD768 /* HYBBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBBridge.h; sourceTree = ""; }; + 992DEDCE18ED9BA7005CD768 /* HYBBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBBridge.m; sourceTree = ""; }; + 992DEDD118ED9C5C005CD768 /* HYBEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBEvent.h; sourceTree = ""; }; + 992DEDD218ED9C5C005CD768 /* HYBEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBEvent.m; sourceTree = ""; }; + 992DEDD518ED9CF0005CD768 /* HYBURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBURLProtocol.h; sourceTree = ""; }; + 992DEDD618ED9CF0005CD768 /* HYBURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBURLProtocol.m; sourceTree = ""; }; + 9947021018EDB672007A6D8E /* HYBWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBWebViewController.h; sourceTree = ""; }; + 9947021118EDB672007A6D8E /* HYBWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBWebViewController.m; sourceTree = ""; }; + 9960C8AA18EE914600FEC7DB /* UIWebView+Hybridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWebView+Hybridge.h"; sourceTree = ""; }; + 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+Hybridge.m"; sourceTree = ""; }; + 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSHTTPURLResponse+Hybridge.h"; sourceTree = ""; }; + 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSHTTPURLResponse+Hybridge.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - E42E3F2E182A68170033C908 /* Frameworks */ = { + 992DED9E18ED963A005CD768 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E4C8088D182A6F21002BF73C /* UIKit.framework in Frameworks */, - E42E3F35182A68170033C908 /* Foundation.framework in Frameworks */, + 992DEDA518ED963A005CD768 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E42E3F3E182A68170033C908 /* Frameworks */ = { + 992DEDAE18ED963A005CD768 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E42E3F43182A68170033C908 /* XCTest.framework in Frameworks */, - E42E3F49182A68170033C908 /* libHybridge.a in Frameworks */, - E42E3F44182A68170033C908 /* Foundation.framework in Frameworks */, + 992DEDB318ED963A005CD768 /* XCTest.framework in Frameworks */, + 992DEDB918ED963A005CD768 /* libHybridge.a in Frameworks */, + 992DEDB618ED963A005CD768 /* UIKit.framework in Frameworks */, + 992DEDB418ED963A005CD768 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - E42E3F28182A68160033C908 = { + 992DED9818ED963A005CD768 = { isa = PBXGroup; children = ( - E42E3F36182A68170033C908 /* Hybridge */, - E42E3F33182A68170033C908 /* Frameworks */, - E42E3F32182A68170033C908 /* Products */, + 992DEDA618ED963A005CD768 /* Hybridge */, + 992DEDBA18ED963A005CD768 /* HybridgeTests */, + 992DEDA318ED963A005CD768 /* Frameworks */, + 992DEDA218ED963A005CD768 /* Products */, ); sourceTree = ""; }; - E42E3F32182A68170033C908 /* Products */ = { + 992DEDA218ED963A005CD768 /* Products */ = { isa = PBXGroup; children = ( - E42E3F31182A68170033C908 /* libHybridge.a */, - E42E3F41182A68170033C908 /* HybridgeTests.xctest */, + 992DEDA118ED963A005CD768 /* libHybridge.a */, + 992DEDB118ED963A005CD768 /* HybridgeTests.xctest */, ); name = Products; sourceTree = ""; }; - E42E3F33182A68170033C908 /* Frameworks */ = { + 992DEDA318ED963A005CD768 /* Frameworks */ = { isa = PBXGroup; children = ( - E4C8088C182A6F21002BF73C /* UIKit.framework */, - E42E3F34182A68170033C908 /* Foundation.framework */, - E42E3F42182A68170033C908 /* XCTest.framework */, + 992DEDA418ED963A005CD768 /* Foundation.framework */, + 992DEDB218ED963A005CD768 /* XCTest.framework */, + 992DEDB518ED963A005CD768 /* UIKit.framework */, ); name = Frameworks; sourceTree = ""; }; - E42E3F36182A68170033C908 /* Hybridge */ = { + 992DEDA618ED963A005CD768 /* Hybridge */ = { isa = PBXGroup; children = ( - E4C80880182A6B44002BF73C /* HYBHybridgeSubscriptor.h */, - E4C80881182A6B44002BF73C /* HYBHybridgeSubscriptor.m */, - E4C80882182A6B44002BF73C /* HYBConstants.h */, - E4C80883182A6B44002BF73C /* HYBURLProtocol.h */, - E4C80884182A6B44002BF73C /* HYBURLProtocol.m */, - E42E3F39182A68170033C908 /* HYBHybridge.h */, - E42E3F3B182A68170033C908 /* HYBHybridge.m */, - E42E3F37182A68170033C908 /* Supporting Files */, + 992DEDA918ED963A005CD768 /* Hybridge.h */, + 992DEDCD18ED9BA7005CD768 /* HYBBridge.h */, + 992DEDCE18ED9BA7005CD768 /* HYBBridge.m */, + 992DEDD118ED9C5C005CD768 /* HYBEvent.h */, + 992DEDD218ED9C5C005CD768 /* HYBEvent.m */, + 992DEDD518ED9CF0005CD768 /* HYBURLProtocol.h */, + 992DEDD618ED9CF0005CD768 /* HYBURLProtocol.m */, + 9947021018EDB672007A6D8E /* HYBWebViewController.h */, + 9947021118EDB672007A6D8E /* HYBWebViewController.m */, + 9960C8AA18EE914600FEC7DB /* UIWebView+Hybridge.h */, + 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */, + 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */, + 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */, + 992DEDA718ED963A005CD768 /* Supporting Files */, ); path = Hybridge; sourceTree = ""; }; - E42E3F37182A68170033C908 /* Supporting Files */ = { + 992DEDA718ED963A005CD768 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 992DEDA818ED963A005CD768 /* Hybridge-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 992DEDBA18ED963A005CD768 /* HybridgeTests */ = { + isa = PBXGroup; + children = ( + 992DEDC018ED963A005CD768 /* HybridgeTests.m */, + 992DEDBB18ED963A005CD768 /* Supporting Files */, + ); + path = HybridgeTests; + sourceTree = ""; + }; + 992DEDBB18ED963A005CD768 /* Supporting Files */ = { isa = PBXGroup; children = ( - E42E3F38182A68170033C908 /* Hybridge-Prefix.pch */, + 992DEDBC18ED963A005CD768 /* HybridgeTests-Info.plist */, + 992DEDBD18ED963A005CD768 /* InfoPlist.strings */, ); name = "Supporting Files"; sourceTree = ""; }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + 992DEDCB18ED97DC005CD768 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9960C8AC18EE914600FEC7DB /* UIWebView+Hybridge.h in Headers */, + 992DEDCC18ED97FB005CD768 /* Hybridge.h in Headers */, + 9947021218EDB672007A6D8E /* HYBWebViewController.h in Headers */, + 992DEDD318ED9C5C005CD768 /* HYBEvent.h in Headers */, + 9960C8B018EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h in Headers */, + 992DEDD718ED9CF0005CD768 /* HYBURLProtocol.h in Headers */, + 992DEDCF18ED9BA7005CD768 /* HYBBridge.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ - E42E3F30182A68170033C908 /* Hybridge */ = { + 992DEDA018ED963A005CD768 /* Hybridge */ = { isa = PBXNativeTarget; - buildConfigurationList = E42E3F54182A68180033C908 /* Build configuration list for PBXNativeTarget "Hybridge" */; + buildConfigurationList = 992DEDC418ED963A005CD768 /* Build configuration list for PBXNativeTarget "Hybridge" */; buildPhases = ( - E42E3F2D182A68170033C908 /* Sources */, - E42E3F2E182A68170033C908 /* Frameworks */, - E42E3F2F182A68170033C908 /* CopyFiles */, + 992DED9D18ED963A005CD768 /* Sources */, + 992DED9E18ED963A005CD768 /* Frameworks */, + 992DED9F18ED963A005CD768 /* CopyFiles */, + 992DEDCB18ED97DC005CD768 /* Headers */, ); buildRules = ( ); @@ -166,119 +212,114 @@ ); name = Hybridge; productName = Hybridge; - productReference = E42E3F31182A68170033C908 /* libHybridge.a */; + productReference = 992DEDA118ED963A005CD768 /* libHybridge.a */; productType = "com.apple.product-type.library.static"; }; - E42E3F40182A68170033C908 /* HybridgeTests */ = { + 992DEDB018ED963A005CD768 /* HybridgeTests */ = { isa = PBXNativeTarget; - buildConfigurationList = E42E3F57182A68180033C908 /* Build configuration list for PBXNativeTarget "HybridgeTests" */; + buildConfigurationList = 992DEDC718ED963A005CD768 /* Build configuration list for PBXNativeTarget "HybridgeTests" */; buildPhases = ( - E42E3F3D182A68170033C908 /* Sources */, - E42E3F3E182A68170033C908 /* Frameworks */, - E42E3F3F182A68170033C908 /* Resources */, + 992DEDAD18ED963A005CD768 /* Sources */, + 992DEDAE18ED963A005CD768 /* Frameworks */, + 992DEDAF18ED963A005CD768 /* Resources */, ); buildRules = ( ); dependencies = ( - E42E3F48182A68170033C908 /* PBXTargetDependency */, + 992DEDB818ED963A005CD768 /* PBXTargetDependency */, ); name = HybridgeTests; productName = HybridgeTests; - productReference = E42E3F41182A68170033C908 /* HybridgeTests.xctest */; + productReference = 992DEDB118ED963A005CD768 /* HybridgeTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - E42E3F29182A68160033C908 /* Project object */ = { + 992DED9918ED963A005CD768 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; - ORGANIZATIONNAME = tid.es; + CLASSPREFIX = HYB; + LastUpgradeCheck = 0510; + ORGANIZATIONNAME = "Telefonica I+D"; }; - buildConfigurationList = E42E3F2C182A68160033C908 /* Build configuration list for PBXProject "Hybridge" */; + buildConfigurationList = 992DED9C18ED963A005CD768 /* Build configuration list for PBXProject "Hybridge" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = E42E3F28182A68160033C908; - productRefGroup = E42E3F32182A68170033C908 /* Products */; + mainGroup = 992DED9818ED963A005CD768; + productRefGroup = 992DEDA218ED963A005CD768 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - E42E3F30182A68170033C908 /* Hybridge */, - E42E3F40182A68170033C908 /* HybridgeTests */, - E4C8091B182C0A0D002BF73C /* UniversalLib */, + 992DEDA018ED963A005CD768 /* Hybridge */, + 992DEDB018ED963A005CD768 /* HybridgeTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - E42E3F3F182A68170033C908 /* Resources */ = { + 992DEDAF18ED963A005CD768 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 992DEDBF18ED963A005CD768 /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - E4C8091F182C0AD6002BF73C /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# define output folder environment variable\nUNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal\n\n# Step 1. Build Device and Simulator versions\nxcodebuild -target Hybridge ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\"\nxcodebuild -target Hybridge -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\"\n\n# make sure the output directory exists\nmkdir -p \"${UNIVERSAL_OUTPUTFOLDER}\"\n\n# Step 2. Create universal binary file using lipo\nlipo -create -output \"${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a\" \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a\" \"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a\"\n\n# Last touch. copy the header files. Just for convenience\ncp -R \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/include\" \"${UNIVERSAL_OUTPUTFOLDER}/\""; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ - E42E3F2D182A68170033C908 /* Sources */ = { + 992DED9D18ED963A005CD768 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E4C80887182A6B7B002BF73C /* HYBHybridgeSubscriptor.h in Sources */, - E4C80888182A6B7B002BF73C /* HYBConstants.h in Sources */, - E4C80889182A6B7B002BF73C /* HYBURLProtocol.h in Sources */, - E4C8088A182A6B7B002BF73C /* HYBHybridge.h in Sources */, - E4C80886182A6B44002BF73C /* HYBURLProtocol.m in Sources */, - E42E3F3C182A68170033C908 /* HYBHybridge.m in Sources */, - E4C80885182A6B44002BF73C /* HYBHybridgeSubscriptor.m in Sources */, + 992DEDD418ED9C5C005CD768 /* HYBEvent.m in Sources */, + 9960C8B118EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m in Sources */, + 9947021318EDB672007A6D8E /* HYBWebViewController.m in Sources */, + 992DEDD018ED9BA7005CD768 /* HYBBridge.m in Sources */, + 9960C8AD18EE914600FEC7DB /* UIWebView+Hybridge.m in Sources */, + 992DEDD818ED9CF0005CD768 /* HYBURLProtocol.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E42E3F3D182A68170033C908 /* Sources */ = { + 992DEDAD18ED963A005CD768 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 992DEDC118ED963A005CD768 /* HybridgeTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - E42E3F48182A68170033C908 /* PBXTargetDependency */ = { + 992DEDB818ED963A005CD768 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = E42E3F30182A68170033C908 /* Hybridge */; - targetProxy = E42E3F47182A68170033C908 /* PBXContainerItemProxy */; + target = 992DEDA018ED963A005CD768 /* Hybridge */; + targetProxy = 992DEDB718ED963A005CD768 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + 992DEDBD18ED963A005CD768 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 992DEDBE18ED963A005CD768 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ - E42E3F52182A68180033C908 /* Debug */ = { + 992DEDC218ED963A005CD768 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -303,20 +344,19 @@ GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; }; - E42E3F53182A68180033C908 /* Release */ = { + 992DEDC318ED963A005CD768 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -335,43 +375,44 @@ GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; name = Release; }; - E42E3F55182A68180033C908 /* Debug */ = { + 992DEDC518ED963A005CD768 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { DSTROOT = /tmp/Hybridge.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Hybridge/Hybridge-Prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; name = Debug; }; - E42E3F56182A68180033C908 /* Release */ = { + 992DEDC618ED963A005CD768 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { DSTROOT = /tmp/Hybridge.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Hybridge/Hybridge-Prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; name = Release; }; - E42E3F58182A68180033C908 /* Debug */ = { + 992DEDC818ED963A005CD768 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", @@ -389,10 +430,9 @@ }; name = Debug; }; - E42E3F59182A68180033C908 /* Release */ = { + 992DEDC918ED963A005CD768 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", @@ -406,60 +446,37 @@ }; name = Release; }; - E4C8091D182C0A0D002BF73C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - E4C8091E182C0A0D002BF73C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - E42E3F2C182A68160033C908 /* Build configuration list for PBXProject "Hybridge" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E42E3F52182A68180033C908 /* Debug */, - E42E3F53182A68180033C908 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E42E3F54182A68180033C908 /* Build configuration list for PBXNativeTarget "Hybridge" */ = { + 992DED9C18ED963A005CD768 /* Build configuration list for PBXProject "Hybridge" */ = { isa = XCConfigurationList; buildConfigurations = ( - E42E3F55182A68180033C908 /* Debug */, - E42E3F56182A68180033C908 /* Release */, + 992DEDC218ED963A005CD768 /* Debug */, + 992DEDC318ED963A005CD768 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E42E3F57182A68180033C908 /* Build configuration list for PBXNativeTarget "HybridgeTests" */ = { + 992DEDC418ED963A005CD768 /* Build configuration list for PBXNativeTarget "Hybridge" */ = { isa = XCConfigurationList; buildConfigurations = ( - E42E3F58182A68180033C908 /* Debug */, - E42E3F59182A68180033C908 /* Release */, + 992DEDC518ED963A005CD768 /* Debug */, + 992DEDC618ED963A005CD768 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E4C8091C182C0A0D002BF73C /* Build configuration list for PBXAggregateTarget "UniversalLib" */ = { + 992DEDC718ED963A005CD768 /* Build configuration list for PBXNativeTarget "HybridgeTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - E4C8091D182C0A0D002BF73C /* Debug */, - E4C8091E182C0A0D002BF73C /* Release */, + 992DEDC818ED963A005CD768 /* Debug */, + 992DEDC918ED963A005CD768 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = E42E3F29182A68160033C908 /* Project object */; + rootObject = 992DED9918ED963A005CD768 /* Project object */; } diff --git a/ios/Hybridge/Hybridge/HYBBridge.h b/ios/Hybridge/Hybridge/HYBBridge.h new file mode 100644 index 0000000..e949b7f --- /dev/null +++ b/ios/Hybridge/Hybridge/HYBBridge.h @@ -0,0 +1,96 @@ +// +// HYBBridge.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + +@protocol HYBBridgeDelegate; + +/** + A communication bridge between the Javascript running in a `UIWebView` and the application. + */ +@interface HYBBridge : NSObject + +/** + The bridge delegate will receive actions from the visible `UIWebView`. + */ +@property (weak, nonatomic) NSObject *delegate; + +/** + Returns the native bridge version. + */ ++ (NSInteger)version; + +/** + Sets the active bridge. + + @param bridge The bridge that will receive actions for the visible `UIWebView`. + */ ++ (void)setActiveBridge:(HYBBridge *)bridge; + +/** + Returns active the bridge. + */ ++ (instancetype)activeBridge; + +/** + Configures a `UIWebView` to be able to communicate with this bridge. + This method should be called after the web view has finished loading the HTML contents. + + @param webView The `UIWebView` to configure. + */ +- (void)prepareWebView:(UIWebView *)webView; + +/** + This method is called by the URL loading system when a Hybridge request is made. + + When this method is called, the bridge will ask its delegate to handle the action. + + If the delegate object implements a `- (void)handleWithData:(NSDictionary *)data` method, + the bridge will call this method. The bridge assumes that action names are in snake_case, that is, + if it receives the action 'go_to_detail' it will look for a method named + `-handleGoToDetailWithData:`. + + If a method is not found, the bridge will try `-bridge:didReceiveAction:data:`. If the delegate + does not implement neither of these methods, the bridge will return an HTTP 404 status code to the + caller. + + @param action The action name. + @param data An `NSDictionary` containing data attached to the action. + + @return `nil` if the action was handled correctly, otherwise an `NSHTTPURLResponse` initialized with a 404 status code. + */ +- (NSHTTPURLResponse *)sendAction:(NSString *)action data:(NSDictionary *)data; + +@end + +/** + Defines the bridge's delegate methods. + */ +@protocol HYBBridgeDelegate + +@required + +/** + Returns the array of actions that the receiver can process. + */ +- (NSArray *)bridgeActions:(HYBBridge *)bridge; + +@optional + +/** + Called when the bridge receives an action. + + @param bridge The bridge that receives the action. + @param action The action name. + @param data An `NSDictionary` containing data attached to the action. + + @return `nil` if the action was handled correctly, otherwise a `NSHTTPURLResponse` initialized with the appropiate status code. + */ +- (NSHTTPURLResponse *)bridge:(HYBBridge *)bridge didReceiveAction:(NSString *)action data:(NSDictionary *)data; + +@end diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m new file mode 100644 index 0000000..ceb724d --- /dev/null +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -0,0 +1,82 @@ +// +// HYBBridge.m +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import "HYBBridge.h" +#import "NSHTTPURLResponse+Hybridge.h" + +static SEL HYBSelectorWithAction(NSString *action) { + static dispatch_once_t onceToken; + static NSMutableDictionary *selectorNames; + + dispatch_once(&onceToken, ^{ + selectorNames = [NSMutableDictionary dictionary]; + }); + + NSString *selectorName = selectorNames[action]; + + if (!selectorName) { + // Convert the action name to CamelCase + NSArray *components = [action componentsSeparatedByString:@"_"]; + NSMutableArray *mutableComponents = [NSMutableArray arrayWithCapacity:[components count]]; + [components enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + [mutableComponents addObject:[obj capitalizedString]]; + }]; + action = [mutableComponents componentsJoinedByString:@""]; + + // Cache the selector name + selectorName = [NSString stringWithFormat:@"handle%@WithData:", action]; + selectorNames[action] = selectorName; + } + + return NSSelectorFromString(selectorName); +} + +@implementation HYBBridge + ++ (NSInteger)version { + return 1; +} + ++ (void)setActiveBridge:(HYBBridge *)bridge { + // TODO: implement +} + ++ (instancetype)activeBridge { + // TODO: implement + return nil; +} + +- (void)prepareWebView:(UIWebView *)webView { + // TODO: implement +} + +- (NSHTTPURLResponse *)sendAction:(NSString *)action data:(NSDictionary *)data { + NSParameterAssert(action); + + SEL selector = HYBSelectorWithAction(action); + + if ([self.delegate respondsToSelector:selector]) { + NSMethodSignature *methodSignature = [self.delegate methodSignatureForSelector:selector]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; + invocation.target = self.delegate; + invocation.selector = selector; + + [invocation invoke]; + + __unsafe_unretained id result = nil; + [invocation getReturnValue:&result]; + + return result; + } else if ([self.delegate respondsToSelector:@selector(bridge:didReceiveAction:data:)]) { + return [self.delegate bridge:self didReceiveAction:action data:data]; + } + + return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:404]; +} + +@end diff --git a/ios/Hybridge/Hybridge/HYBConstants.h b/ios/Hybridge/Hybridge/HYBConstants.h deleted file mode 100644 index eb49f95..0000000 --- a/ios/Hybridge/Hybridge/HYBConstants.h +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#ifndef HybridgeBridge_iOS_Constants_h -#define HybridgeBridge_iOS_Constants_h - -// Version -#define kHybridgeVersion 1; - -// Event types -#define kEventNamePause @"pause"; -#define kEventNameResume @"resume"; -#define KEventNameMessage @"message"; -#define kEventNameReady @"ready"; - -#endif diff --git a/ios/Hybridge/Hybridge/HYBEvent.h b/ios/Hybridge/Hybridge/HYBEvent.h new file mode 100644 index 0000000..2631252 --- /dev/null +++ b/ios/Hybridge/Hybridge/HYBEvent.h @@ -0,0 +1,16 @@ +// +// HYBEvent.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + +// Standard Hybridge events + +extern NSString * const HYBEventPause; +extern NSString * const HYBEventResume; +extern NSString * const HYBEventMessage; +extern NSString * const HYBEventReady; diff --git a/ios/Hybridge/Hybridge/HYBEvent.m b/ios/Hybridge/Hybridge/HYBEvent.m new file mode 100644 index 0000000..7e58af2 --- /dev/null +++ b/ios/Hybridge/Hybridge/HYBEvent.m @@ -0,0 +1,14 @@ +// +// HYBEvent.m +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import "HYBEvent.h" + +NSString * const HYBEventPause = @"pause"; +NSString * const HYBEventResume = @"resume"; +NSString * const HYBEventMessage = @"message"; +NSString * const HYBEventReady = @"ready"; diff --git a/ios/Hybridge/Hybridge/HYBHybridge.h b/ios/Hybridge/Hybridge/HYBHybridge.h deleted file mode 100644 index 57cd0cd..0000000 --- a/ios/Hybridge/Hybridge/HYBHybridge.h +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import -#import - -@interface HYBHybridge : NSObject - -/** - * Current Native Hybridge version - */ -extern int const kVersion; - -/** - * String constants referencing defined Hybridge native events - */ -extern NSString * const kHybridgeEventPause; -extern NSString * const kHybridgeEventResume; -extern NSString * const kHybridgeEventMessage; -extern NSString * const kHybridgeEventReady; - -/** - * Defined block to be used as handler of each action. - * - * @param NSURLProtocol* Contains request information - * @param NSString* JSON string sent from the Javascript call - * @param NSHTTPURLResponse* HTTP response - */ -typedef void (^HybridgeHandlerBlock_t)(NSURLProtocol*, NSString*, NSHTTPURLResponse*); - -/** - * Singleton constructor - * - * @return single Hibridge instance - */ -+ (HYBHybridge *)sharedInstance; - -/** - * Returns the actual list of available native actions - * - * @return list of actions - */ -- (NSDictionary *)getActions; - -/** - * Execute Javascript code in WebView - * - * @param js Javastring code String - * @param webview target WebView - * - * @return String returned by Javascript code. - */ -- (NSString *)runJsInWebview:(NSString *)js web:(UIWebView*) webview; - -/** - * Trigger Hybridge event in Webview - * - * @param eventName Event type - * @param jsonString JSON data to attach to the event - * @param webview target WebView - */ -- (void)fireEventInWebView:(NSString *)eventName data:(NSString *)jsonString web:(UIWebView*) webview; - -/** - * Add block handler to current list of supported native actions - * - * @param action action name - * @param handlerBlock handler block - */ -- (void)subscribeAction:(NSString *)action withHandler:(HybridgeHandlerBlock_t)handlerBlock; - -/** - * Initialices Javascript HybridgeGlobal object in WebView - * - * @param webview target WebView - */ -- (void)initJavascript:(UIWebView*) webview; - -@end diff --git a/ios/Hybridge/Hybridge/HYBHybridge.m b/ios/Hybridge/Hybridge/HYBHybridge.m deleted file mode 100644 index 76ae8cf..0000000 --- a/ios/Hybridge/Hybridge/HYBHybridge.m +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import "HYBHybridge.h" -#import "HYBConstants.h" -#import "HYBHybridgeSubscriptor.h" -#import "HYBURLProtocol.h" - -@interface HYBHybridge () - -{ - HYBHybridgeSubscriptor *_subscriptor; - NSMutableArray *_actions; - NSArray *_events; -} - -@end - -@implementation HYBHybridge - -static HYBHybridge *sharedInstance = nil; - -int const kVersion = kHybridgeVersion; -NSString * const kHybridgeEventPause = kEventNamePause; -NSString * const kHybridgeEventResume = kEventNameResume; -NSString * const kHybridgeEventMessage = KEventNameMessage; -NSString * const kHybridgeEventReady = kEventNameReady; - -+ (HYBHybridge *)sharedInstance { - if (sharedInstance == nil) { - sharedInstance = [[super allocWithZone:NULL] init]; - } - return sharedInstance; -} - -- (id)init -{ - self = [super init]; - - if (self) { - [NSURLProtocol registerClass:[HYBURLProtocol class]]; - _subscriptor = [HYBHybridgeSubscriptor sharedInstance]; - _actions = [[NSMutableArray alloc] init]; - _events = @[kHybridgeEventPause, - kHybridgeEventResume, - kHybridgeEventMessage, - kHybridgeEventReady]; - } - - return self; -} - -- (void)subscribeAction:(NSString *)action withHandler:(HybridgeHandlerBlock_t)handlerBlock -{ - - @try { - [_subscriptor subscribeAction:action withHandler:handlerBlock]; - [_actions addObject:action]; - } - @catch (NSException * e) { - } -} - -- (NSString *)runJsInWebview:(NSString*)js web:(UIWebView*) webview -{ - NSString *jsResponse = [webview stringByEvaluatingJavaScriptFromString:js]; - return jsResponse; -} - -- (void)fireEventInWebView:(NSString *)eventName data:(NSString *)jsonString web:(UIWebView*) webview -{ - NSMutableString* ms = [[NSMutableString alloc] initWithString:@"HybridgeGlobal.fireEvent(\""]; - [ms appendString:eventName]; - [ms appendString:@"\","]; - [ms appendString:(jsonString?jsonString:@"{}")]; - [ms appendString:@")"]; - NSString *js = ms; - dispatch_async(dispatch_get_main_queue(), ^{ - [self runJsInWebview:js web:webview]; - }); -} - -- (NSArray *)getActions -{ - return [NSArray arrayWithArray:_actions]; -} - -- (void)initJavascript:(UIWebView*) webview -{ - NSError *error = nil; - NSData *dataActions = [NSJSONSerialization dataWithJSONObject:_actions options:0 error:&error]; - NSData *dataEvents = [NSJSONSerialization dataWithJSONObject:_events options:0 error:&error]; - - NSMutableString* js = - [[NSMutableString alloc] - initWithString:@"window.HybridgeGlobal || setTimeout(function () { window.HybridgeGlobal = {isReady:true,version:"]; - [js appendString:[NSString stringWithFormat:@"%d", kVersion]]; - [js appendString:@", actions:"]; - [js appendString:(dataActions ? - [[NSString alloc] - initWithBytes:[dataActions bytes] - length:[dataActions length] - encoding:NSUTF8StringEncoding] : @"[]")]; - [js appendString:@", events:"]; - [js appendString:(dataEvents ? - [[NSString alloc] - initWithBytes:[dataEvents bytes] - length:[dataEvents length] - encoding:NSUTF8StringEncoding] : @"[]")]; - [js appendString:@"}; window.$ && $('#hybridgeTrigger').toggleClass('switch');"]; - [js appendString:@"}, 0)"]; - - [self runJsInWebview:js web:webview]; -} - -@end diff --git a/ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.h b/ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.h deleted file mode 100644 index 1edd7db..0000000 --- a/ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.h +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import -#import "HYBHybridge.h" - -/** This singleton class manages a list of subscriptions for received requests in the bridge. - Each single subscription has an action name associated to and a handler to be called - */ -@interface HYBHybridgeSubscriptor : NSObject - -/** Singleton constructor */ -+ (HYBHybridgeSubscriptor *)sharedInstance; - -/** Subscribes to action with the given handler block - @param action name of the action to suscribe - @param handlerBlock handler to be called when a request arrives with the given action */ -- (void)subscribeAction:(NSString *)action withHandler:(HybridgeHandlerBlock_t)handlerBlock; - -/** Unsubscribes to action - @param action name of the action to unsubscribe */ -- (void)unsubscribeAction:(NSString *)action; - -/** Checks if the action is currently subscribed - @param action name of the action to check - @return YES if the action is already subscribed, NO otherwise*/ -- (BOOL)isSubscribedForAction:(NSString *)action; - -/** Returns the handler associated to the given handler - @param action name of the action to return its handler - @return handler associated to the given action, or nil if there is no subscriptios */ -- (HybridgeHandlerBlock_t)handlerForAction:(NSString *)action; - -@end diff --git a/ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.m b/ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.m deleted file mode 100644 index 61202eb..0000000 --- a/ios/Hybridge/Hybridge/HYBHybridgeSubscriptor.m +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import "HYBHybridgeSubscriptor.h" -#import "HYBHybridge.h" - -@interface HYBHybridgeSubscriptor() - -@property (strong, nonatomic) NSMutableDictionary *subscriptions; - -@end - -@implementation HYBHybridgeSubscriptor - -static HYBHybridgeSubscriptor *sharedInstance = nil; - -+ (HYBHybridgeSubscriptor *)sharedInstance { - if (sharedInstance == nil) { - sharedInstance = [[super allocWithZone:NULL] init]; - } - - return sharedInstance; -} - -- (id)init -{ - self = [super init]; - - if (self) { - // Initialization here - } - - return self; -} - -- (NSMutableDictionary *)subscriptions { - - if (!_subscriptions) { - _subscriptions = [[NSMutableDictionary alloc] init]; - } - - return _subscriptions; -} - -- (void)subscribeAction:(NSString *)action withHandler:(HybridgeHandlerBlock_t)handlerBlock { - - @try { - [self.subscriptions setObject:handlerBlock forKey:action]; - } - @catch (NSException * e) { - } -} - -- (void)unsubscribeAction:(NSString *)action { - - @try { - [self.subscriptions removeObjectForKey:action]; - } - @catch (NSException * e) { - } -} - -- (BOOL)isSubscribedForAction:(NSString *)action { - - return ([self.subscriptions objectForKey:action] != nil); -} - -- (HybridgeHandlerBlock_t)handlerForAction:(NSString *)action { - - return [self.subscriptions objectForKey:action]; -} - -@end diff --git a/ios/Hybridge/Hybridge/HYBURLProtocol.h b/ios/Hybridge/Hybridge/HYBURLProtocol.h index e7a3cfb..c3e3bbf 100644 --- a/ios/Hybridge/Hybridge/HYBURLProtocol.h +++ b/ios/Hybridge/Hybridge/HYBURLProtocol.h @@ -1,9 +1,16 @@ +// +// HYBURLProtocol.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + /** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) + An `NSURLProtocol` subclass that handles Hybridge requests. */ - @interface HYBURLProtocol : NSURLProtocol @end diff --git a/ios/Hybridge/Hybridge/HYBURLProtocol.m b/ios/Hybridge/Hybridge/HYBURLProtocol.m index f75156b..6b88cf0 100644 --- a/ios/Hybridge/Hybridge/HYBURLProtocol.m +++ b/ios/Hybridge/Hybridge/HYBURLProtocol.m @@ -1,73 +1,31 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ +// +// HYBURLProtocol.m +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// #import "HYBURLProtocol.h" -#import "HYBHybridgeSubscriptor.h" -#import "HYBHybridge.h" +#import "HYBBridge.h" -@implementation HYBURLProtocol +#import "NSHTTPURLResponse+Hybridge.h" -NSString *bridgePrefix = @"hybridge"; +static NSString * const kHTTPOptionsMethod = @"OPTIONS"; -+ (BOOL)canInitWithRequest:(NSURLRequest *)_request -{ - if ([[_request HTTPMethod] caseInsensitiveCompare:@"OPTIONS"] == NSOrderedSame || - [_request.URL.host caseInsensitiveCompare:bridgePrefix] == NSOrderedSame) - { - return YES; - } - return NO; -} +@implementation HYBURLProtocol -+ (NSURLRequest*)canonicalRequestForRequest:(NSURLRequest *)_request -{ - return _request; ++ (BOOL)canInitWithRequest:(NSURLRequest *)request { + NSString *host = [[[request URL] host] lowercaseString]; + return [host isEqualToString:HYBHostName]; } -- (void)startLoading -{ - - if([[self.request HTTPMethod] caseInsensitiveCompare:@"OPTIONS"] == NSOrderedSame) - { - id client = [self client]; - [client URLProtocol:self didReceiveResponse:[self createResponse] cacheStoragePolicy:NSURLCacheStorageNotAllowed]; - [client URLProtocolDidFinishLoading:self]; - return; - } - - /** Decode REST URL ( http://hybridge/action/id ) */ - NSString *_action = nil; - if ([[self.request.URL pathComponents] count] > 1) { - _action = [[self.request.URL pathComponents] objectAtIndex:1]; - } - - /** Get header data (JSON) */ - NSDictionary *headers = [self.request allHTTPHeaderFields]; - NSString *_data = [headers objectForKey:@"data"]; - - // Look for a handler subscribed for this action - HybridgeHandlerBlock_t handler = [[HYBHybridgeSubscriptor sharedInstance] handlerForAction:_action]; - - if (handler != nil) { - handler(self, _data, [self createResponse]); - } ++ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { + return request; } -- (void)stopLoading -{ +- (void)startLoading { + // TODO: implement } -- (NSHTTPURLResponse*)createResponse -{ - NSMutableDictionary *json = [[NSMutableDictionary alloc] init]; - [json setValue:@"application/json; charset=utf-8" forKey:@"Content-Type"]; - [json setValue:@"*" forKey:@"Access-Control-Allow-Origin"]; - [json setValue:@"Content-Type, data" forKey:@"Access-Control-Allow-Headers"]; - - NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:self.request.URL statusCode:200 HTTPVersion:@"1.1" headerFields:json]; - return response; -} @end diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.h b/ios/Hybridge/Hybridge/HYBWebViewController.h new file mode 100644 index 0000000..f465028 --- /dev/null +++ b/ios/Hybridge/Hybridge/HYBWebViewController.h @@ -0,0 +1,23 @@ +// +// HYBWebViewController.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + +@class HYBBridge; + +/** + A view controller that manages a web view and the bridge to communicate with it. + */ +@interface HYBWebViewController : UIViewController + +@property (strong, nonatomic, readonly) UIWebView *webView; +@property (strong, nonatomic, readonly) HYBBridge *bridge; + +- (id)initWithURL:(NSURL *)url; + +@end diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m new file mode 100644 index 0000000..100203b --- /dev/null +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -0,0 +1,38 @@ +// +// HYBWebViewController.m +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import "HYBWebViewController.h" +#import "HYBBridge.h" + +@interface HYBWebViewController () + +@end + +@implementation HYBWebViewController + +- (id)initWithURL:(NSURL *)url { + self = [super initWithNibName:nil bundle:nil]; + + if (self) { + // Custom initialization + } + + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/ios/Hybridge/Hybridge/Hybridge-Prefix.pch b/ios/Hybridge/Hybridge/Hybridge-Prefix.pch index c5743de..eb2007e 100644 --- a/ios/Hybridge/Hybridge/Hybridge-Prefix.pch +++ b/ios/Hybridge/Hybridge/Hybridge-Prefix.pch @@ -1,8 +1,8 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// #ifdef __OBJC__ #import diff --git a/ios/Hybridge/Hybridge/Hybridge.h b/ios/Hybridge/Hybridge/Hybridge.h new file mode 100644 index 0000000..2b7740e --- /dev/null +++ b/ios/Hybridge/Hybridge/Hybridge.h @@ -0,0 +1,20 @@ +// +// Hybridge.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + +#ifndef _HYBRIDGE_H +#define _HYBRIDGE_H + +#import "HYBEvent.h" +#import "HYBBridge.h" +#import "UIWebView+Hybridge.h" +#import "NSHTTPURLResponse+Hybridge.h" +#import "HYBWebViewController.h" + +#endif /* _HYBRIDGE_H */ diff --git a/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.h b/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.h new file mode 100644 index 0000000..47a3e0b --- /dev/null +++ b/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.h @@ -0,0 +1,35 @@ +// +// NSHTTPURLResponse+Hybridge.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + +extern NSString * const HYBHostName; + +@interface NSHTTPURLResponse (Hybridge) + +/** + Creates and returns a Hybridge response for a given url. + + @param url The URL from which the response was generated. + @param statusCode The HTTP status code to return. + + @return An initialized `NSHTTPURLResponse` or `nil` if an error occurred. + */ ++ (instancetype)hyb_responseWithURL:(NSURL *)url statusCode:(NSInteger)statusCode; + +/** + Creates and returns a Hybridge response for a given action. + + @param action The action from which the response was generated. + @param statusCode The HTTP status code to return. + + @return An initialized `NSHTTPURLResponse` or `nil` if an error occurred. + */ ++ (instancetype)hyb_responseWithAction:(NSString *)action statusCode:(NSInteger)statusCode; + +@end diff --git a/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m b/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m new file mode 100644 index 0000000..5989005 --- /dev/null +++ b/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m @@ -0,0 +1,34 @@ +// +// NSHTTPURLResponse+Hybridge.m +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import "NSHTTPURLResponse+Hybridge.h" + +NSString * const HYBHostName = @"hybridge"; + +@implementation NSHTTPURLResponse (Hybridge) + ++ (instancetype)hyb_responseWithURL:(NSURL *)url statusCode:(NSInteger)statusCode { + NSParameterAssert(url); + + NSDictionary *headers = @{ + @"Content-Type": @"application/json; charset=utf-8", + @"Access-Control-Allow-Origin": @"*", + @"Access-Control-Allow-Headers": @"Content-Type, data" + }; + + return [[self alloc] initWithURL:url statusCode:statusCode HTTPVersion:@"1.1" headerFields:headers]; +} + ++ (instancetype)hyb_responseWithAction:(NSString *)action statusCode:(NSInteger)statusCode { + NSParameterAssert(action); + + NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:HYBHostName path:action]; + return [self hyb_responseWithURL:url statusCode:statusCode]; +} + +@end diff --git a/ios/Hybridge/Hybridge/UIWebView+Hybridge.h b/ios/Hybridge/Hybridge/UIWebView+Hybridge.h new file mode 100644 index 0000000..6b3fd31 --- /dev/null +++ b/ios/Hybridge/Hybridge/UIWebView+Hybridge.h @@ -0,0 +1,22 @@ +// +// UIWebView+Hybridge.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + +@interface UIWebView (Hybridge) + +/** + Fires a Hybridge event in the receiver. + This method returns immediately without waiting for the event to be processed. + + @param event The event to fire. + @param data A dictionary containing data to pass along with the event. + */ +- (void)hyb_fireEvent:(NSString *)event data:(NSDictionary *)data; + +@end diff --git a/ios/Hybridge/Hybridge/UIWebView+Hybridge.m b/ios/Hybridge/Hybridge/UIWebView+Hybridge.m new file mode 100644 index 0000000..b3816b7 --- /dev/null +++ b/ios/Hybridge/Hybridge/UIWebView+Hybridge.m @@ -0,0 +1,17 @@ +// +// UIWebView+Hybridge.m +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import "UIWebView+Hybridge.h" + +@implementation UIWebView (Hybridge) + +- (void)hyb_fireEvent:(NSString *)event data:(NSDictionary *)data { + // TODO: implement +} + +@end diff --git a/ios/Hybridge/HybridgeTests/HybridgeTests-Info.plist b/ios/Hybridge/HybridgeTests/HybridgeTests-Info.plist new file mode 100644 index 0000000..715c3df --- /dev/null +++ b/ios/Hybridge/HybridgeTests/HybridgeTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + es.tid.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/ios/Hybridge/HybridgeTests/HybridgeTests.m b/ios/Hybridge/HybridgeTests/HybridgeTests.m new file mode 100644 index 0000000..84e69d5 --- /dev/null +++ b/ios/Hybridge/HybridgeTests/HybridgeTests.m @@ -0,0 +1,34 @@ +// +// HybridgeTests.m +// HybridgeTests +// +// Created by guille on 03/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import + +@interface HybridgeTests : XCTestCase + +@end + +@implementation HybridgeTests + +- (void)setUp +{ + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown +{ + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample +{ + XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); +} + +@end diff --git a/ios/Hybridge/HybridgeTests/en.lproj/InfoPlist.strings b/ios/Hybridge/HybridgeTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/ios/Hybridge/HybridgeTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/ios/Hybridge/tdigital-hybridge.podspec b/ios/Hybridge/tdigital-hybridge.podspec deleted file mode 100644 index 4f3889a..0000000 --- a/ios/Hybridge/tdigital-hybridge.podspec +++ /dev/null @@ -1,23 +0,0 @@ -Pod::Spec.new do |s| - s.name = "tdigital-hybridge" - s.version = '1.0.0' - s.summary = "Library for access to native environment from a webview scope." - - s.license = "Copyright (c) 2013 Telefónica Digital - Enjoy @mobile. All rights reserved." - s.homepage = "https://pdihub.hi.inet/mca/tdigital-hybridge.git" - s.author = { "dgs30" => "dgs30@tid.es" } - - s.source = { :git => 'https://pdihub.hi.inet/mca/tdigital-hybridge.git', :branch => 'develop'} - - s.platform = :ios - s.ios.deployment_target = '6.0' - - s.source_files = 'ios/Hybridge/Hybridge/*.{h,m}' - - s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '"$(SRCROOT)/Pods/tdigital-hybridge"', - 'GCC_PREPROCESSOR_DEFINITIONS' => '$(CONFIGURATION)=1' } - - s.requires_arc = true - - s.framework = "Foundation", "UIKit" -end \ No newline at end of file From 19bb9a409d8159cfdeba1c1d4d9a7b983b5c9bc8 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 12:42:20 +0200 Subject: [PATCH 13/64] Add OCMock framework to test target --- .../Hybridge.xcodeproj/project.pbxproj | 66 +++++++++++++++++- ios/Hybridge/HybridgeTests/HybridgeTests.m | 34 --------- .../NSNotificationCenter+OCMAdditions.h | 15 ++++ ios/Hybridge/OCMock/OCMock/OCMArg.h | 42 +++++++++++ ios/Hybridge/OCMock/OCMock/OCMConstraint.h | 64 +++++++++++++++++ ios/Hybridge/OCMock/OCMock/OCMock.h | 10 +++ ios/Hybridge/OCMock/OCMock/OCMockObject.h | 46 ++++++++++++ ios/Hybridge/OCMock/OCMock/OCMockRecorder.h | 38 ++++++++++ ios/Hybridge/OCMock/libOCMock.a | Bin 0 -> 1738764 bytes 9 files changed, 280 insertions(+), 35 deletions(-) delete mode 100644 ios/Hybridge/HybridgeTests/HybridgeTests.m create mode 100644 ios/Hybridge/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h create mode 100644 ios/Hybridge/OCMock/OCMock/OCMArg.h create mode 100644 ios/Hybridge/OCMock/OCMock/OCMConstraint.h create mode 100644 ios/Hybridge/OCMock/OCMock/OCMock.h create mode 100644 ios/Hybridge/OCMock/OCMock/OCMockObject.h create mode 100644 ios/Hybridge/OCMock/OCMock/OCMockRecorder.h create mode 100644 ios/Hybridge/OCMock/libOCMock.a diff --git a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj index 71914ce..f04f96f 100644 --- a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj +++ b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj @@ -28,6 +28,7 @@ 9960C8AD18EE914600FEC7DB /* UIWebView+Hybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */; }; 9960C8B018EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9960C8B118EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */; }; + 9960C8C518EEC19200FEC7DB /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9960C8BD18EEC19200FEC7DB /* libOCMock.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -76,6 +77,13 @@ 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+Hybridge.m"; sourceTree = ""; }; 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSHTTPURLResponse+Hybridge.h"; sourceTree = ""; }; 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSHTTPURLResponse+Hybridge.m"; sourceTree = ""; }; + 9960C8BD18EEC19200FEC7DB /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; + 9960C8BF18EEC19200FEC7DB /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; + 9960C8C018EEC19200FEC7DB /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; + 9960C8C118EEC19200FEC7DB /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; + 9960C8C218EEC19200FEC7DB /* OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = ""; }; + 9960C8C318EEC19200FEC7DB /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = ""; }; + 9960C8C418EEC19200FEC7DB /* OCMockRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockRecorder.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,6 +103,7 @@ 992DEDB918ED963A005CD768 /* libHybridge.a in Frameworks */, 992DEDB618ED963A005CD768 /* UIKit.framework in Frameworks */, 992DEDB418ED963A005CD768 /* Foundation.framework in Frameworks */, + 9960C8C518EEC19200FEC7DB /* libOCMock.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -162,8 +171,9 @@ 992DEDBA18ED963A005CD768 /* HybridgeTests */ = { isa = PBXGroup; children = ( - 992DEDC018ED963A005CD768 /* HybridgeTests.m */, + 9960C8BC18EEC19200FEC7DB /* OCMock */, 992DEDBB18ED963A005CD768 /* Supporting Files */, + 992DEDC018ED963A005CD768 /* HybridgeTests.m */, ); path = HybridgeTests; sourceTree = ""; @@ -177,6 +187,28 @@ name = "Supporting Files"; sourceTree = ""; }; + 9960C8BC18EEC19200FEC7DB /* OCMock */ = { + isa = PBXGroup; + children = ( + 9960C8BD18EEC19200FEC7DB /* libOCMock.a */, + 9960C8BE18EEC19200FEC7DB /* OCMock */, + ); + path = OCMock; + sourceTree = ""; + }; + 9960C8BE18EEC19200FEC7DB /* OCMock */ = { + isa = PBXGroup; + children = ( + 9960C8BF18EEC19200FEC7DB /* NSNotificationCenter+OCMAdditions.h */, + 9960C8C018EEC19200FEC7DB /* OCMArg.h */, + 9960C8C118EEC19200FEC7DB /* OCMConstraint.h */, + 9960C8C218EEC19200FEC7DB /* OCMock.h */, + 9960C8C318EEC19200FEC7DB /* OCMockObject.h */, + 9960C8C418EEC19200FEC7DB /* OCMockRecorder.h */, + ); + path = OCMock; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -424,7 +456,23 @@ "DEBUG=1", "$(inherited)", ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/OCMock\"", + ); INFOPLIST_FILE = "HybridgeTests/HybridgeTests-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/HybridgeTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "\"$(SRCROOT)/OCMock/libOCMock.a\"", + ); PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = xctest; }; @@ -440,7 +488,23 @@ ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Hybridge/Hybridge-Prefix.pch"; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/OCMock\"", + ); INFOPLIST_FILE = "HybridgeTests/HybridgeTests-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/HybridgeTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "\"$(SRCROOT)/OCMock/libOCMock.a\"", + ); PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = xctest; }; diff --git a/ios/Hybridge/HybridgeTests/HybridgeTests.m b/ios/Hybridge/HybridgeTests/HybridgeTests.m deleted file mode 100644 index 84e69d5..0000000 --- a/ios/Hybridge/HybridgeTests/HybridgeTests.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// HybridgeTests.m -// HybridgeTests -// -// Created by guille on 03/04/14. -// Copyright (c) 2014 Telefonica I+D. All rights reserved. -// - -#import - -@interface HybridgeTests : XCTestCase - -@end - -@implementation HybridgeTests - -- (void)setUp -{ - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. -} - -- (void)tearDown -{ - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void)testExample -{ - XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); -} - -@end diff --git a/ios/Hybridge/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h b/ios/Hybridge/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h new file mode 100644 index 0000000..ab4832b --- /dev/null +++ b/ios/Hybridge/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2009 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@class OCMockObserver; + + +@interface NSNotificationCenter(OCMAdditions) + +- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; + +@end diff --git a/ios/Hybridge/OCMock/OCMock/OCMArg.h b/ios/Hybridge/OCMock/OCMock/OCMArg.h new file mode 100644 index 0000000..670dd3b --- /dev/null +++ b/ios/Hybridge/OCMock/OCMock/OCMArg.h @@ -0,0 +1,42 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2009-2013 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMArg : NSObject + +// constraining arguments + ++ (id)any; ++ (SEL)anySelector; ++ (void *)anyPointer; ++ (id __autoreleasing *)anyObjectRef; ++ (id)isNil; ++ (id)isNotNil; ++ (id)isNotEqual:(id)value; ++ (id)checkWithSelector:(SEL)selector onObject:(id)anObject; +#if NS_BLOCKS_AVAILABLE ++ (id)checkWithBlock:(BOOL (^)(id obj))block; +#endif + +// manipulating arguments + ++ (id *)setTo:(id)value; ++ (void *)setToValue:(NSValue *)value; + +// internal use only + ++ (id)resolveSpecialValues:(NSValue *)value; + +@end + +#define OCMOCK_ANY [OCMArg any] + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define OCMOCK_VALUE(variable) \ + ({ __typeof__(variable) __v = (variable); [NSValue value:&__v withObjCType:@encode(__typeof__(__v))]; }) +#else + #define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))] +#endif diff --git a/ios/Hybridge/OCMock/OCMock/OCMConstraint.h b/ios/Hybridge/OCMock/OCMock/OCMConstraint.h new file mode 100644 index 0000000..3ae1264 --- /dev/null +++ b/ios/Hybridge/OCMock/OCMock/OCMConstraint.h @@ -0,0 +1,64 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + + +@interface OCMConstraint : NSObject + ++ (id)constraint; +- (BOOL)evaluate:(id)value; + +// if you are looking for any, isNil, etc, they have moved to OCMArg + +// try to use [OCMArg checkWith...] instead of the constraintWith... methods below + ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; + + +@end + +@interface OCMAnyConstraint : OCMConstraint +@end + +@interface OCMIsNilConstraint : OCMConstraint +@end + +@interface OCMIsNotNilConstraint : OCMConstraint +@end + +@interface OCMIsNotEqualConstraint : OCMConstraint +{ + @public + id testValue; +} + +@end + +@interface OCMInvocationConstraint : OCMConstraint +{ + @public + NSInvocation *invocation; +} + +@end + +#if NS_BLOCKS_AVAILABLE + +@interface OCMBlockConstraint : OCMConstraint +{ + BOOL (^block)(id); +} + +- (id)initWithConstraintBlock:(BOOL (^)(id))block; + +@end + +#endif + + +#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] +#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/ios/Hybridge/OCMock/OCMock/OCMock.h b/ios/Hybridge/OCMock/OCMock/OCMock.h new file mode 100644 index 0000000..e18de58 --- /dev/null +++ b/ios/Hybridge/OCMock/OCMock/OCMock.h @@ -0,0 +1,10 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import +#import +#import +#import +#import diff --git a/ios/Hybridge/OCMock/OCMock/OCMockObject.h b/ios/Hybridge/OCMock/OCMock/OCMockObject.h new file mode 100644 index 0000000..e796705 --- /dev/null +++ b/ios/Hybridge/OCMock/OCMock/OCMockObject.h @@ -0,0 +1,46 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockObject : NSProxy +{ + BOOL isNice; + BOOL expectationOrderMatters; + NSMutableArray *recorders; + NSMutableArray *expectations; + NSMutableArray *rejections; + NSMutableArray *exceptions; +} + ++ (id)mockForClass:(Class)aClass; ++ (id)mockForProtocol:(Protocol *)aProtocol; ++ (id)partialMockForObject:(NSObject *)anObject; + ++ (id)niceMockForClass:(Class)aClass; ++ (id)niceMockForProtocol:(Protocol *)aProtocol; + ++ (id)observerMock; + +- (id)init; + +- (void)setExpectationOrderMatters:(BOOL)flag; + +- (id)stub; +- (id)expect; +- (id)reject; + +- (void)verify; + +- (void)stopMocking; + +// internal use only + +- (id)getNewRecorder; +- (BOOL)handleInvocation:(NSInvocation *)anInvocation; +- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; +- (BOOL)handleSelector:(SEL)sel; + +@end diff --git a/ios/Hybridge/OCMock/OCMock/OCMockRecorder.h b/ios/Hybridge/OCMock/OCMock/OCMockRecorder.h new file mode 100644 index 0000000..0dcd3f2 --- /dev/null +++ b/ios/Hybridge/OCMock/OCMock/OCMockRecorder.h @@ -0,0 +1,38 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2004-2013 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockRecorder : NSProxy +{ + id signatureResolver; + BOOL recordedAsClassMethod; + BOOL ignoreNonObjectArgs; + NSInvocation *recordedInvocation; + NSMutableArray *invocationHandlers; +} + +- (id)initWithSignatureResolver:(id)anObject; + +- (BOOL)matchesSelector:(SEL)sel; +- (BOOL)matchesInvocation:(NSInvocation *)anInvocation; +- (void)releaseInvocation; + +- (id)andReturn:(id)anObject; +- (id)andReturnValue:(NSValue *)aValue; +- (id)andThrow:(NSException *)anException; +- (id)andPost:(NSNotification *)aNotification; +- (id)andCall:(SEL)selector onObject:(id)anObject; +#if NS_BLOCKS_AVAILABLE +- (id)andDo:(void (^)(NSInvocation *))block; +#endif +- (id)andForwardToRealObject; + +- (id)classMethod; +- (id)ignoringNonObjectArgs; + +- (NSArray *)invocationHandlers; + +@end diff --git a/ios/Hybridge/OCMock/libOCMock.a b/ios/Hybridge/OCMock/libOCMock.a new file mode 100644 index 0000000000000000000000000000000000000000..a8ecb3aabe01f5a6d75ecf4df6104600c439d792 GIT binary patch literal 1738764 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%0Ac&O&-M^z-=0 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≈@8j}s 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%0DY;(@BonV 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

o%;ad-C`C1j9 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ΠSgUOv48rpNaYX5NIfmmwHNU8fALYVFRF@ve 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 br9VQ=9W+dS - -#import "HybridgeAppDelegate.h" - -int main(int argc, char * argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([HybridgeAppDelegate class])); - } -} diff --git a/boilerplate/ios/HybridgeSample/.gitignore b/boilerplate/ios/HybridgeSample/.gitignore new file mode 100644 index 0000000..0e7bb72 --- /dev/null +++ b/boilerplate/ios/HybridgeSample/.gitignore @@ -0,0 +1,22 @@ +# System +.DS_Store +# Subversion +.svn +# Xcode +build/* +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +*.xcworkspace +xcuserdata +profile +*.moved-aside +# AppCode +.idea +#Cocoapods +Pods diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj b/boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7e3610d --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj @@ -0,0 +1,512 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 99801D1D18F2910F0027FC7A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99801D1C18F2910F0027FC7A /* Foundation.framework */; }; + 99801D1F18F2910F0027FC7A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99801D1E18F2910F0027FC7A /* CoreGraphics.framework */; }; + 99801D2118F2910F0027FC7A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99801D2018F2910F0027FC7A /* UIKit.framework */; }; + 99801D2718F2910F0027FC7A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 99801D2518F2910F0027FC7A /* InfoPlist.strings */; }; + 99801D2918F2910F0027FC7A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 99801D2818F2910F0027FC7A /* main.m */; }; + 99801D2D18F2910F0027FC7A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 99801D2C18F2910F0027FC7A /* AppDelegate.m */; }; + 99801D3818F291100027FC7A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 99801D3718F291100027FC7A /* Images.xcassets */; }; + 99801D3F18F291100027FC7A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99801D3E18F291100027FC7A /* XCTest.framework */; }; + 99801D4018F291100027FC7A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99801D1C18F2910F0027FC7A /* Foundation.framework */; }; + 99801D4118F291100027FC7A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99801D2018F2910F0027FC7A /* UIKit.framework */; }; + 99801D4918F291100027FC7A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 99801D4718F291100027FC7A /* InfoPlist.strings */; }; + 99801D4B18F291100027FC7A /* HybridgeSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 99801D4A18F291100027FC7A /* HybridgeSampleTests.m */; }; + 99801D5618F295670027FC7A /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99801D5518F295670027FC7A /* WebViewController.m */; }; + 99801D5918F296C30027FC7A /* flip.css in Resources */ = {isa = PBXBuildFile; fileRef = 99801D5718F296C30027FC7A /* flip.css */; }; + 99801D5A18F296C30027FC7A /* hybridge.html in Resources */ = {isa = PBXBuildFile; fileRef = 99801D5818F296C30027FC7A /* hybridge.html */; }; + B785C3222F884EA28C6EA1BA /* libPods-HybridgeSample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3120090FCC9B40F4BA0C73DE /* libPods-HybridgeSample.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 99801D4218F291100027FC7A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 99801D1118F2910F0027FC7A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 99801D1818F2910F0027FC7A; + remoteInfo = HybridgeSample; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3120090FCC9B40F4BA0C73DE /* libPods-HybridgeSample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HybridgeSample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 99801D1918F2910F0027FC7A /* HybridgeSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HybridgeSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 99801D1C18F2910F0027FC7A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 99801D1E18F2910F0027FC7A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 99801D2018F2910F0027FC7A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 99801D2418F2910F0027FC7A /* HybridgeSample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HybridgeSample-Info.plist"; sourceTree = ""; }; + 99801D2618F2910F0027FC7A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 99801D2818F2910F0027FC7A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 99801D2A18F2910F0027FC7A /* HybridgeSample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "HybridgeSample-Prefix.pch"; sourceTree = ""; }; + 99801D2B18F2910F0027FC7A /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 99801D2C18F2910F0027FC7A /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 99801D3718F291100027FC7A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 99801D3D18F291100027FC7A /* HybridgeSampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HybridgeSampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 99801D3E18F291100027FC7A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 99801D4618F291100027FC7A /* HybridgeSampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HybridgeSampleTests-Info.plist"; sourceTree = ""; }; + 99801D4818F291100027FC7A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 99801D4A18F291100027FC7A /* HybridgeSampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HybridgeSampleTests.m; sourceTree = ""; }; + 99801D5418F295670027FC7A /* WebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewController.h; sourceTree = ""; }; + 99801D5518F295670027FC7A /* WebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewController.m; sourceTree = ""; }; + 99801D5718F296C30027FC7A /* flip.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = flip.css; sourceTree = ""; }; + 99801D5818F296C30027FC7A /* hybridge.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = hybridge.html; sourceTree = ""; }; + C434E462390044FABE0DB5F7 /* Pods-HybridgeSample.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HybridgeSample.xcconfig"; path = "Pods/Pods-HybridgeSample.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 99801D1618F2910F0027FC7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 99801D1F18F2910F0027FC7A /* CoreGraphics.framework in Frameworks */, + 99801D2118F2910F0027FC7A /* UIKit.framework in Frameworks */, + 99801D1D18F2910F0027FC7A /* Foundation.framework in Frameworks */, + B785C3222F884EA28C6EA1BA /* libPods-HybridgeSample.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 99801D3A18F291100027FC7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 99801D3F18F291100027FC7A /* XCTest.framework in Frameworks */, + 99801D4118F291100027FC7A /* UIKit.framework in Frameworks */, + 99801D4018F291100027FC7A /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 99801D1018F2910F0027FC7A = { + isa = PBXGroup; + children = ( + 99801D2218F2910F0027FC7A /* HybridgeSample */, + 99801D4418F291100027FC7A /* HybridgeSampleTests */, + 99801D1B18F2910F0027FC7A /* Frameworks */, + 99801D1A18F2910F0027FC7A /* Products */, + C434E462390044FABE0DB5F7 /* Pods-HybridgeSample.xcconfig */, + ); + sourceTree = ""; + }; + 99801D1A18F2910F0027FC7A /* Products */ = { + isa = PBXGroup; + children = ( + 99801D1918F2910F0027FC7A /* HybridgeSample.app */, + 99801D3D18F291100027FC7A /* HybridgeSampleTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 99801D1B18F2910F0027FC7A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 99801D1C18F2910F0027FC7A /* Foundation.framework */, + 99801D1E18F2910F0027FC7A /* CoreGraphics.framework */, + 99801D2018F2910F0027FC7A /* UIKit.framework */, + 99801D3E18F291100027FC7A /* XCTest.framework */, + 3120090FCC9B40F4BA0C73DE /* libPods-HybridgeSample.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 99801D2218F2910F0027FC7A /* HybridgeSample */ = { + isa = PBXGroup; + children = ( + 99801D2B18F2910F0027FC7A /* AppDelegate.h */, + 99801D2C18F2910F0027FC7A /* AppDelegate.m */, + 99801D5418F295670027FC7A /* WebViewController.h */, + 99801D5518F295670027FC7A /* WebViewController.m */, + 99801D5718F296C30027FC7A /* flip.css */, + 99801D5818F296C30027FC7A /* hybridge.html */, + 99801D3718F291100027FC7A /* Images.xcassets */, + 99801D2318F2910F0027FC7A /* Supporting Files */, + ); + path = HybridgeSample; + sourceTree = ""; + }; + 99801D2318F2910F0027FC7A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 99801D2418F2910F0027FC7A /* HybridgeSample-Info.plist */, + 99801D2518F2910F0027FC7A /* InfoPlist.strings */, + 99801D2818F2910F0027FC7A /* main.m */, + 99801D2A18F2910F0027FC7A /* HybridgeSample-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 99801D4418F291100027FC7A /* HybridgeSampleTests */ = { + isa = PBXGroup; + children = ( + 99801D4A18F291100027FC7A /* HybridgeSampleTests.m */, + 99801D4518F291100027FC7A /* Supporting Files */, + ); + path = HybridgeSampleTests; + sourceTree = ""; + }; + 99801D4518F291100027FC7A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 99801D4618F291100027FC7A /* HybridgeSampleTests-Info.plist */, + 99801D4718F291100027FC7A /* InfoPlist.strings */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 99801D1818F2910F0027FC7A /* HybridgeSample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 99801D4E18F291100027FC7A /* Build configuration list for PBXNativeTarget "HybridgeSample" */; + buildPhases = ( + ECD114C2A7DE442998F017F8 /* Check Pods Manifest.lock */, + 99801D1518F2910F0027FC7A /* Sources */, + 99801D1618F2910F0027FC7A /* Frameworks */, + 99801D1718F2910F0027FC7A /* Resources */, + C49777CD2ED34275891E9FEA /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HybridgeSample; + productName = HybridgeSample; + productReference = 99801D1918F2910F0027FC7A /* HybridgeSample.app */; + productType = "com.apple.product-type.application"; + }; + 99801D3C18F291100027FC7A /* HybridgeSampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 99801D5118F291100027FC7A /* Build configuration list for PBXNativeTarget "HybridgeSampleTests" */; + buildPhases = ( + 99801D3918F291100027FC7A /* Sources */, + 99801D3A18F291100027FC7A /* Frameworks */, + 99801D3B18F291100027FC7A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 99801D4318F291100027FC7A /* PBXTargetDependency */, + ); + name = HybridgeSampleTests; + productName = HybridgeSampleTests; + productReference = 99801D3D18F291100027FC7A /* HybridgeSampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 99801D1118F2910F0027FC7A /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0510; + ORGANIZATIONNAME = "Telefonica I+D"; + TargetAttributes = { + 99801D3C18F291100027FC7A = { + TestTargetID = 99801D1818F2910F0027FC7A; + }; + }; + }; + buildConfigurationList = 99801D1418F2910F0027FC7A /* Build configuration list for PBXProject "HybridgeSample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 99801D1018F2910F0027FC7A; + productRefGroup = 99801D1A18F2910F0027FC7A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 99801D1818F2910F0027FC7A /* HybridgeSample */, + 99801D3C18F291100027FC7A /* HybridgeSampleTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 99801D1718F2910F0027FC7A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99801D3818F291100027FC7A /* Images.xcassets in Resources */, + 99801D2718F2910F0027FC7A /* InfoPlist.strings in Resources */, + 99801D5A18F296C30027FC7A /* hybridge.html in Resources */, + 99801D5918F296C30027FC7A /* flip.css in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 99801D3B18F291100027FC7A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99801D4918F291100027FC7A /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + C49777CD2ED34275891E9FEA /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Pods-HybridgeSample-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + ECD114C2A7DE442998F017F8 /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 99801D1518F2910F0027FC7A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99801D2D18F2910F0027FC7A /* AppDelegate.m in Sources */, + 99801D5618F295670027FC7A /* WebViewController.m in Sources */, + 99801D2918F2910F0027FC7A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 99801D3918F291100027FC7A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99801D4B18F291100027FC7A /* HybridgeSampleTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 99801D4318F291100027FC7A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 99801D1818F2910F0027FC7A /* HybridgeSample */; + targetProxy = 99801D4218F291100027FC7A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 99801D2518F2910F0027FC7A /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 99801D2618F2910F0027FC7A /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 99801D4718F291100027FC7A /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 99801D4818F291100027FC7A /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 99801D4C18F291100027FC7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 99801D4D18F291100027FC7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 99801D4F18F291100027FC7A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C434E462390044FABE0DB5F7 /* Pods-HybridgeSample.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "HybridgeSample/HybridgeSample-Prefix.pch"; + INFOPLIST_FILE = "HybridgeSample/HybridgeSample-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 99801D5018F291100027FC7A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C434E462390044FABE0DB5F7 /* Pods-HybridgeSample.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "HybridgeSample/HybridgeSample-Prefix.pch"; + INFOPLIST_FILE = "HybridgeSample/HybridgeSample-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 99801D5218F291100027FC7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HybridgeSample.app/HybridgeSample"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "HybridgeSample/HybridgeSample-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = "HybridgeSampleTests/HybridgeSampleTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + 99801D5318F291100027FC7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HybridgeSample.app/HybridgeSample"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "HybridgeSample/HybridgeSample-Prefix.pch"; + INFOPLIST_FILE = "HybridgeSampleTests/HybridgeSampleTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 99801D1418F2910F0027FC7A /* Build configuration list for PBXProject "HybridgeSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 99801D4C18F291100027FC7A /* Debug */, + 99801D4D18F291100027FC7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 99801D4E18F291100027FC7A /* Build configuration list for PBXNativeTarget "HybridgeSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 99801D4F18F291100027FC7A /* Debug */, + 99801D5018F291100027FC7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 99801D5118F291100027FC7A /* Build configuration list for PBXNativeTarget "HybridgeSampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 99801D5218F291100027FC7A /* Debug */, + 99801D5318F291100027FC7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 99801D1118F2910F0027FC7A /* Project object */; +} diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.h b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.h new file mode 100644 index 0000000..7953c35 --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.h @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// HybridgeSample +// +// Created by guille on 07/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.m b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m similarity index 59% rename from boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.m rename to boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m index 1ce2b38..66d40aa 100644 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.m +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m @@ -1,49 +1,57 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import "HybridgeAppDelegate.h" +// +// AppDelegate.m +// HybridgeSample +// +// Created by guille on 07/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import "AppDelegate.h" #import "WebViewController.h" -@implementation HybridgeAppDelegate +@interface AppDelegate () + +@property (strong, nonatomic) UINavigationController *navigationController; + +@end + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + NSURL *url = [[NSBundle mainBundle] URLForResource:@"hybridge" withExtension:@"html"]; + WebViewController *webViewController = [[WebViewController alloc] initWithURL:url]; + + self.navigationController = [[UINavigationController alloc] initWithRootViewController:webViewController]; + self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; + self.window.rootViewController = self.navigationController; + + return YES; +} -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - // Override point for customization after application launch. - self.window.backgroundColor = [UIColor whiteColor]; +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self.window makeKeyAndVisible]; - self.viewController = [[WebViewController alloc] init]; - self.window.rootViewController = self.viewController; return YES; } -- (void)applicationWillResignActive:(UIApplication *)application -{ +- (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } -- (void)applicationWillEnterForeground:(UIApplication *)application -{ +- (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } -- (void)applicationDidBecomeActive:(UIApplication *)application -{ +- (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } -- (void)applicationWillTerminate:(UIApplication *)application -{ +- (void)applicationWillTerminate:(UIApplication *)application { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Info.plist b/boilerplate/ios/HybridgeSample/HybridgeSample/HybridgeSample-Info.plist similarity index 75% rename from boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Info.plist rename to boilerplate/ios/HybridgeSample/HybridgeSample/HybridgeSample-Info.plist index eb3f0b5..6654099 100644 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Info.plist +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/HybridgeSample-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - tid.es.${PRODUCT_NAME:rfc1034identifier} + es.tid.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -28,18 +28,21 @@ armv7 + UIStatusBarTintParameters + + UINavigationBar + + Style + UIBarStyleDefault + Translucent + + + UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch b/boilerplate/ios/HybridgeSample/HybridgeSample/HybridgeSample-Prefix.pch similarity index 75% rename from boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch rename to boilerplate/ios/HybridgeSample/HybridgeSample/HybridgeSample-Prefix.pch index 743435c..82a2bb4 100644 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/HybridgeSample-Prefix.pch @@ -6,8 +6,8 @@ #import -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iOS SDK 3.0 and later." +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." #endif #ifdef __OBJC__ diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/AppIcon.appiconset/Contents.json b/boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a396706 --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/LaunchImage.launchimage/Contents.json b/boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 0000000..c79ebd3 --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "subtype" : "retina4", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.h b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.h new file mode 100644 index 0000000..7d8308e --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.h @@ -0,0 +1,13 @@ +// +// WebViewController.h +// HybridgeSample +// +// Created by guille on 07/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import + +@interface WebViewController : HYBWebViewController + +@end diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m new file mode 100644 index 0000000..ff32444 --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m @@ -0,0 +1,44 @@ +// +// WebViewController.m +// HybridgeSample +// +// Created by guille on 07/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import "WebViewController.h" + +@interface WebViewController () + +@end + +@implementation WebViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.title = @"Hybridge"; + self.bridge.delegate = self; +} + +#pragma mark - HYBBridgeDelegate + +- (NSArray *)bridgeActions:(HYBBridge *)bridge { + // TODO: implement + return @[@"init", @"greetings"]; +} + +- (void)handleInitWithData:(NSDictionary *)data { + NSLog(@"init"); + + if ([data[@"initialized"] boolValue]) { + [self.webView hyb_fireEvent:HYBEventReady data:nil]; + } +} + +- (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { + NSLog(@"action: %@ data: %@", action, data); + return nil; +} + +@end diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/en.lproj/InfoPlist.strings b/boilerplate/ios/HybridgeSample/HybridgeSample/en.lproj/InfoPlist.strings similarity index 100% rename from boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/en.lproj/InfoPlist.strings rename to boilerplate/ios/HybridgeSample/HybridgeSample/en.lproj/InfoPlist.strings diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/flip.css b/boilerplate/ios/HybridgeSample/HybridgeSample/flip.css new file mode 100644 index 0000000..0e9f881 --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/flip.css @@ -0,0 +1,105 @@ +html,body { + padding:0; + margin:0; + background:#fafafa; + text-align:center; +} + +body { + padding-top:4em; +} + +h1, h2, h3 { + margin-bottom:3rem; + font-family:sans-serif; + color:#666; +} + +button { + position:relative; + border:0; + margin:0; + padding:0; + cursor:pointer; + width: 12rem; + height: 3rem; + font-size:1rem; + font-weight:bold; + color:rgba(0,0,0,0); + background:transparent; + border-radius:.25rem; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-touch-callout: none; +} + +button, +button:after, +button:before { + /*padding:.6875rem 2rem;*/ + padding:1rem 2rem; + -webkit-transition:-webkit-transform 0.75s,background-color .125s; + -moz-transition:-moz-transform 0.75s,background-color .125s; + -ms-transition:-ms-transform 0.75s,background-color .125s; + transition:transform 0.75s,background-color .125s; + -webkit-transform-style:preserve-3d; + -moz-transform-style:preserve-3d; + -ms-transform-style:preserve-3d; + transform-style:preserve-3d; +} + +button:after, +button:before { + position:absolute; + top:0; + bottom:0; + left:0; + right:0; + border-radius:.25rem; + -webkit-backface-visibility:hidden; + -moz-backface-visibility:hidden; + -ms-backface-visibility:hidden; + backface-visibility:hidden; + +} + +button:before { + z-index:2; + color:#fff; + background-color:#3e87ec; + content:attr(data-label); +} + +button:after { + z-index:1; + background-color:#999; + background-repeat:no-repeat; + background-position:center center; + background-image:url(data:image/gif;base64,R0lGODlhEAAQAPIAAJmZmf///7CwsOPj4////9fX18rKysPDwyH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQACgABACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkEAAoAAgAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkEAAoAAwAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkEAAoABAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQACgAFACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQACgAGACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAAKAAcALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==); + -webkit-transform:rotateX(180deg); + -moz-transform:rotateX(180deg); + -ms-transform:rotateX(180deg); + transform:rotateX(180deg); + content:''; +} + +button:active:before { + background-color:#3571c8; +} + +button.loading { + -webkit-transform:rotateX(180deg); + -moz-transform:rotateX(180deg); + -ms-transform:rotateX(180deg); + transform:rotateX(180deg); +} + +footer { + font-family:sans-serif; + text-align: center; + position: fixed; + bottom: 0; +} + +#status { + color: red; +} diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html b/boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html new file mode 100644 index 0000000..81ba34f --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html @@ -0,0 +1,97 @@ + + + Hybridge Boilerplate + + + + + + +

Featuring... The HyBridge!!!

+ + + +

+ + + +

+ 2

+ + + + diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/main.m b/boilerplate/ios/HybridgeSample/HybridgeSample/main.m new file mode 100644 index 0000000..5c3130f --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/main.m @@ -0,0 +1,18 @@ +// +// main.m +// HybridgeSample +// +// Created by guille on 07/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests-Info.plist b/boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests-Info.plist new file mode 100644 index 0000000..715c3df --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + es.tid.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests.m b/boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests.m new file mode 100644 index 0000000..5d66ecc --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests.m @@ -0,0 +1,34 @@ +// +// HybridgeSampleTests.m +// HybridgeSampleTests +// +// Created by guille on 07/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import + +@interface HybridgeSampleTests : XCTestCase + +@end + +@implementation HybridgeSampleTests + +- (void)setUp +{ + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown +{ + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample +{ + XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); +} + +@end diff --git a/boilerplate/ios/HybridgeSample/HybridgeSampleTests/en.lproj/InfoPlist.strings b/boilerplate/ios/HybridgeSample/HybridgeSampleTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/boilerplate/ios/HybridgeSample/HybridgeSampleTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/boilerplate/ios/HybridgeSample/Podfile b/boilerplate/ios/HybridgeSample/Podfile new file mode 100644 index 0000000..e6cea73 --- /dev/null +++ b/boilerplate/ios/HybridgeSample/Podfile @@ -0,0 +1,11 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, "6.0" + +target "HybridgeSample" do + pod 'Hybridge', :path => '../../../' +end + +target "HybridgeSampleTests" do + +end + diff --git a/boilerplate/ios/HybridgeSample/Podfile.lock b/boilerplate/ios/HybridgeSample/Podfile.lock new file mode 100644 index 0000000..b15936a --- /dev/null +++ b/boilerplate/ios/HybridgeSample/Podfile.lock @@ -0,0 +1,14 @@ +PODS: + - Hybridge (1.1.0) + +DEPENDENCIES: + - Hybridge (from `../../../`) + +EXTERNAL SOURCES: + Hybridge: + :path: ../../../ + +SPEC CHECKSUMS: + Hybridge: 5ace862416316c8eaee9df4c1c5b8c6f21b938e8 + +COCOAPODS: 0.31.1 From 58dc79cfe75f589d01c526494388aa117073db30 Mon Sep 17 00:00:00 2001 From: David Cantelar Date: Tue, 8 Apr 2014 09:44:57 +0200 Subject: [PATCH 23/64] FIX hybridge ios initialization --- .../HybridgeSample.xcodeproj/project.pbxproj | 8 -- .../HybridgeSample/AppDelegate.m | 3 +- .../HybridgeSample/WebViewController.m | 4 +- .../HybridgeSample/HybridgeSample/flip.css | 105 ------------------ .../HybridgeSample/hybridge.html | 97 ---------------- ios/Hybridge/Hybridge/HYBBridge.m | 5 +- 6 files changed, 7 insertions(+), 215 deletions(-) delete mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/flip.css delete mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj b/boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj index 7e3610d..59b32af 100644 --- a/boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj +++ b/boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj @@ -20,8 +20,6 @@ 99801D4918F291100027FC7A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 99801D4718F291100027FC7A /* InfoPlist.strings */; }; 99801D4B18F291100027FC7A /* HybridgeSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 99801D4A18F291100027FC7A /* HybridgeSampleTests.m */; }; 99801D5618F295670027FC7A /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99801D5518F295670027FC7A /* WebViewController.m */; }; - 99801D5918F296C30027FC7A /* flip.css in Resources */ = {isa = PBXBuildFile; fileRef = 99801D5718F296C30027FC7A /* flip.css */; }; - 99801D5A18F296C30027FC7A /* hybridge.html in Resources */ = {isa = PBXBuildFile; fileRef = 99801D5818F296C30027FC7A /* hybridge.html */; }; B785C3222F884EA28C6EA1BA /* libPods-HybridgeSample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3120090FCC9B40F4BA0C73DE /* libPods-HybridgeSample.a */; }; /* End PBXBuildFile section */ @@ -55,8 +53,6 @@ 99801D4A18F291100027FC7A /* HybridgeSampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HybridgeSampleTests.m; sourceTree = ""; }; 99801D5418F295670027FC7A /* WebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewController.h; sourceTree = ""; }; 99801D5518F295670027FC7A /* WebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewController.m; sourceTree = ""; }; - 99801D5718F296C30027FC7A /* flip.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = flip.css; sourceTree = ""; }; - 99801D5818F296C30027FC7A /* hybridge.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = hybridge.html; sourceTree = ""; }; C434E462390044FABE0DB5F7 /* Pods-HybridgeSample.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HybridgeSample.xcconfig"; path = "Pods/Pods-HybridgeSample.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -124,8 +120,6 @@ 99801D2C18F2910F0027FC7A /* AppDelegate.m */, 99801D5418F295670027FC7A /* WebViewController.h */, 99801D5518F295670027FC7A /* WebViewController.m */, - 99801D5718F296C30027FC7A /* flip.css */, - 99801D5818F296C30027FC7A /* hybridge.html */, 99801D3718F291100027FC7A /* Images.xcassets */, 99801D2318F2910F0027FC7A /* Supporting Files */, ); @@ -241,8 +235,6 @@ files = ( 99801D3818F291100027FC7A /* Images.xcassets in Resources */, 99801D2718F2910F0027FC7A /* InfoPlist.strings in Resources */, - 99801D5A18F296C30027FC7A /* hybridge.html in Resources */, - 99801D5918F296C30027FC7A /* flip.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m index 66d40aa..899ebfd 100644 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m @@ -18,7 +18,8 @@ @interface AppDelegate () @implementation AppDelegate - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - NSURL *url = [[NSBundle mainBundle] URLForResource:@"hybridge" withExtension:@"html"]; + // CHANGE ME BEFORE MERGE: set the final appropriate URL for this resource + NSURL *url = [NSURL URLWithString:@"http://telefonicaid.github.io/tdigital-hybridge/hybridge.html"]; WebViewController *webViewController = [[WebViewController alloc] initWithURL:url]; self.navigationController = [[UINavigationController alloc] initWithRootViewController:webViewController]; diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m index ff32444..90a90a9 100644 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m @@ -25,7 +25,7 @@ - (void)viewDidLoad { - (NSArray *)bridgeActions:(HYBBridge *)bridge { // TODO: implement - return @[@"init", @"greetings"]; + return @[@"init", @"someAction", @"someOtherAction"]; } - (void)handleInitWithData:(NSDictionary *)data { @@ -38,6 +38,8 @@ - (void)handleInitWithData:(NSDictionary *)data { - (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { NSLog(@"action: %@ data: %@", action, data); + // For the sake of the sample, we send "message" events with the action data + [self.webView hyb_fireEvent:HYBEventMessage data:data]; return nil; } diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/flip.css b/boilerplate/ios/HybridgeSample/HybridgeSample/flip.css deleted file mode 100644 index 0e9f881..0000000 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/flip.css +++ /dev/null @@ -1,105 +0,0 @@ -html,body { - padding:0; - margin:0; - background:#fafafa; - text-align:center; -} - -body { - padding-top:4em; -} - -h1, h2, h3 { - margin-bottom:3rem; - font-family:sans-serif; - color:#666; -} - -button { - position:relative; - border:0; - margin:0; - padding:0; - cursor:pointer; - width: 12rem; - height: 3rem; - font-size:1rem; - font-weight:bold; - color:rgba(0,0,0,0); - background:transparent; - border-radius:.25rem; - -webkit-tap-highlight-color: rgba(0,0,0,0); - -webkit-touch-callout: none; -} - -button, -button:after, -button:before { - /*padding:.6875rem 2rem;*/ - padding:1rem 2rem; - -webkit-transition:-webkit-transform 0.75s,background-color .125s; - -moz-transition:-moz-transform 0.75s,background-color .125s; - -ms-transition:-ms-transform 0.75s,background-color .125s; - transition:transform 0.75s,background-color .125s; - -webkit-transform-style:preserve-3d; - -moz-transform-style:preserve-3d; - -ms-transform-style:preserve-3d; - transform-style:preserve-3d; -} - -button:after, -button:before { - position:absolute; - top:0; - bottom:0; - left:0; - right:0; - border-radius:.25rem; - -webkit-backface-visibility:hidden; - -moz-backface-visibility:hidden; - -ms-backface-visibility:hidden; - backface-visibility:hidden; - -} - -button:before { - z-index:2; - color:#fff; - background-color:#3e87ec; - content:attr(data-label); -} - -button:after { - z-index:1; - background-color:#999; - background-repeat:no-repeat; - background-position:center center; - background-image:url(data:image/gif;base64,R0lGODlhEAAQAPIAAJmZmf///7CwsOPj4////9fX18rKysPDwyH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQACgABACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkEAAoAAgAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkEAAoAAwAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkEAAoABAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQACgAFACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQACgAGACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAAKAAcALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==); - -webkit-transform:rotateX(180deg); - -moz-transform:rotateX(180deg); - -ms-transform:rotateX(180deg); - transform:rotateX(180deg); - content:''; -} - -button:active:before { - background-color:#3571c8; -} - -button.loading { - -webkit-transform:rotateX(180deg); - -moz-transform:rotateX(180deg); - -ms-transform:rotateX(180deg); - transform:rotateX(180deg); -} - -footer { - font-family:sans-serif; - text-align: center; - position: fixed; - bottom: 0; -} - -#status { - color: red; -} diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html b/boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html deleted file mode 100644 index 81ba34f..0000000 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html +++ /dev/null @@ -1,97 +0,0 @@ - - - Hybridge Boilerplate - - - - - - -

Featuring... The HyBridge!!!

- - - -

- - - -

- 2

- - - - diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m index 0dc5613..5cfb219 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.m +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -109,7 +109,6 @@ - (id)initWithQueue:(dispatch_queue_t)queue { - (NSString *)prepareWebView:(UIWebView *)webView { NSParameterAssert(webView); - static NSString * const kFormat = @"window.HybridgeGlobal || setTimeout(function() {" @" window.HybridgeGlobal = {" @" isReady:true," @@ -117,8 +116,8 @@ - (NSString *)prepareWebView:(UIWebView *)webView { @" actions:%@," @" events:%@" @" };" - @" window.$ && $('#hybridgeTrigger').toggleClass('switch');" - @"}, 0)"; + @" (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" + @"}, 0);"; NSArray *actions = [self.delegate bridgeActions:self]; NSString *actionsString = [NSString hyb_JSONStringWithObject:actions ? : @[]]; From 55958bf16bc97aa8a9e58e80df2f3f9ef4c7f3f6 Mon Sep 17 00:00:00 2001 From: David Cantelar Date: Tue, 8 Apr 2014 09:49:57 +0200 Subject: [PATCH 24/64] FIX events initialization ADD public actions ADD initialization mock on debug --- js/hybridge.js | 83 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 26 deletions(-) diff --git a/js/hybridge.js b/js/hybridge.js index b411685..0508b2c 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -27,8 +27,12 @@ define([ 'use strict'; - var version = 1, xhr, method, logger, environment, debug, mockResponses, initialized = false, - _events = [], _errors, initModuleDef = $.Deferred(), initGlobalDef = $.Deferred(); + var READY_EVENT = 'ready'; + var INIT_ACTION = 'init'; + + var version = 1, initialized = false, + xhr, method, logger, environment, debug, mockResponses, _events = {}, _actions = [], _errors, + initModuleDef = $.Deferred(), initGlobalDef = $.Deferred(); /** * Sets init configuration (native environment, logger) @@ -44,6 +48,7 @@ define([ */ if (debug) { _getLogger().info('Fixing bridge for debug mode'); + _mockHybridgeGlobal(); } /** * Sets up the bridge in iOS environment @@ -59,10 +64,6 @@ define([ _getLogger().info('Fixing bridge for Android, prompt method used'); method = _sendPrompt; } - /** - * Adds ready event - */ - _events.push('ready'); return initModuleDef.resolve(conf).promise(); } @@ -73,7 +74,7 @@ define([ */ function _initNative (deferredModule, deferredGlobal) { _send({ - 'action' : 'init', + 'action' : INIT_ACTION, 'initialized' : deferredGlobal.initialized, 'version' : version }); @@ -138,7 +139,7 @@ define([ * @return {Boolean} */ function _isEventImplemented (event) { - return !!((event && event.type === 'ready') || + return !!((event && event.type === READY_EVENT) || (window.HybridgeGlobal && window.HybridgeGlobal.events && event && event.type && $.inArray(event.type, window.HybridgeGlobal.events) !== -1)); } @@ -153,7 +154,10 @@ define([ var error, warning, details, mock; // Is mode debug on if (debug) { - if (mockResponses && mockResponses[data.action]) { + // Fire the ready event as a response for the init action + if (data.action == INIT_ACTION) { + _fireEvent(READY_EVENT, {}); + } else if (mockResponses && mockResponses[data.action]) { mock = $.extend({}, data, mockResponses[data.action]); try { return $.Deferred().resolve( @@ -191,10 +195,10 @@ define([ // Native bridge is disabled, try fallback function else if (fallbackFn) { error = _errors.NO_NATIVE_ENABLED; - return $.Deferred() - .then(null, fallbackFn) - .reject({'error' : error}) - .promise(); + var def = $.Deferred(); + def.then(null, fallbackFn); + def.reject({'error' : error}); + return def.promise(); } else { error = _errors.NO_FALLBACK; @@ -231,6 +235,7 @@ define([ /** * Provides XHR bridge method for iOS environment + * Warning: Fixed to work with JQuery 1.10.2 * @param {Object} data * @return {Promise} */ @@ -294,7 +299,7 @@ define([ document.addEventListener(event.type, callback, false); } else if (debug) { - _getLogger().log('Hybridge: ' + _errors.DEBUG_MODE); + _getLogger().warning('Hybridge: ' + _errors.DEBUG_MODE); } else { _getLogger().error('Hybridge: ' + _errors.EVENT_NOT_IMPLEMENTED, event); @@ -311,13 +316,28 @@ define([ document.removeEventListener(event.type, callback, false); } else if (debug) { - _getLogger().log('Hybridge: ' + _errors.DEBUG_MODE); + _getLogger().warning('Hybridge: ' + _errors.DEBUG_MODE); } else { _getLogger().error('Hybridge: ' + _errors.EVENT_NOT_IMPLEMENTED, event); } }; + /** + * Creates a mock for the HybridgeGlobal object, as created by the native app. + */ + var _mockHybridgeGlobal = function () { + window.HybridgeGlobal || setTimeout(function() { + window.HybridgeGlobal = { + isReady: true, + version: 1, + actions: [INIT_ACTION, 'message'], + events: [READY_EVENT, 'message'] + }; + (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch'; + }, 0); + }; + /** * Enables transitionend hack in to trigger callbacks directly from native */ @@ -346,12 +366,19 @@ define([ * _events: Hybridge events triggered from native for client handling */ var _attachToGlobal = function () { - var event; - if (window.HybridgeGlobal.events) { - for (var i = 0; i < window.HybridgeGlobal.events.length; i++) { - event = window.HybridgeGlobal.events[i]; - if (_events.indexOf(event) !== -1) { - _events.push(event); + var event, globalEvents, globalActions; + if (window.HybridgeGlobal && (globalEvents = window.HybridgeGlobal.events)) { + for (var i = 0; i < globalEvents.length; i++) { + event = globalEvents[i]; + if (!_events[event]) { + _events[event] = _createEvent(event); + } + } + } + if (window.HybridgeGlobal && (globalActions = window.HybridgeGlobal.actions)) { + for (var i in globalActions) { + if (globalActions.hasOwnProperty(i)) { + _actions.push(globalActions[i]); } } } @@ -365,11 +392,9 @@ define([ * Global method used from native to trigger events (scope HybridgeGlobal) */ var _fireEvent = function (type, data) { - var event; - if (_events.indexOf(type) !== -1) { - event = _createEvent(type); - event.data = data; - return document.dispatchEvent(event); + if (_events[type]) { + _events[type].data = data; + return document.dispatchEvent(_events[type]); } else { _getLogger().error('Hybridge event not defined: ' + type); @@ -429,6 +454,7 @@ define([ isActionImplemented: _isActionImplemented, send: _send, events: _events, + actions: _actions, errors: _errors }; @@ -444,6 +470,11 @@ define([ _setCSSTrigger(_attachToGlobal); } + /** + * Inits ready event + */ + _events.ready = _createEvent(READY_EVENT); + /** * Initialize both native and javascript */ From f60b51062277b500611fdbf76b6294ae13c6b644 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Tue, 8 Apr 2014 10:46:50 +0200 Subject: [PATCH 25/64] Handle 'init' action automatically --- .../HybridgeSample/AppDelegate.m | 1 - .../HybridgeSample/WebViewController.m | 32 +++++++++++++------ ios/Hybridge/Hybridge/HYBBridge.m | 30 +++++++++++++---- ios/Hybridge/HybridgeTests/HYBBridgeTests.m | 10 +++--- 4 files changed, 51 insertions(+), 22 deletions(-) diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m index 899ebfd..7f2cb2a 100644 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.m @@ -18,7 +18,6 @@ @interface AppDelegate () @implementation AppDelegate - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // CHANGE ME BEFORE MERGE: set the final appropriate URL for this resource NSURL *url = [NSURL URLWithString:@"http://telefonicaid.github.io/tdigital-hybridge/hybridge.html"]; WebViewController *webViewController = [[WebViewController alloc] initWithURL:url]; diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m index 90a90a9..40e676a 100644 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m @@ -24,23 +24,35 @@ - (void)viewDidLoad { #pragma mark - HYBBridgeDelegate - (NSArray *)bridgeActions:(HYBBridge *)bridge { - // TODO: implement - return @[@"init", @"someAction", @"someOtherAction"]; + return @[@"some_action", @"some_other_action"]; } -- (void)handleInitWithData:(NSDictionary *)data { - NSLog(@"init"); +/* + If you name your actions using snake_case (i.e. 'your_action'), the bridge will look for a + a method with the signature `- (void)handleWithData:(NSDictionary *)data` to handle + that action. + */ + +- (void)handleSomeActionWithData:(NSDictionary *)data { + NSLog(@"%s", __PRETTY_FUNCTION__); - if ([data[@"initialized"] boolValue]) { - [self.webView hyb_fireEvent:HYBEventReady data:nil]; - } + // Send a message event back to the web view + [self.webView hyb_fireEvent:HYBEventMessage data:@{@"method": NSStringFromSelector(_cmd)}]; } +- (void)handleSomeOtherActionWithData:(NSDictionary *)data { + NSLog(@"%s", __PRETTY_FUNCTION__); + + // Send a message event back to the web view + [self.webView hyb_fireEvent:HYBEventMessage data:@{@"method": NSStringFromSelector(_cmd)}]; +} + +/* If you wish to handle actions in a more generic way, you can implement: + - (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { - NSLog(@"action: %@ data: %@", action, data); - // For the sake of the sample, we send "message" events with the action data - [self.webView hyb_fireEvent:HYBEventMessage data:data]; + // Handle actions here return nil; } + */ @end diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m index 5cfb219..2e5096a 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.m +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -12,6 +12,7 @@ #import "NSString+Hybridge.h" #import "NSHTTPURLResponse+Hybridge.h" +#import "UIWebView+Hybridge.h" static SEL HYBSelectorWithAction(NSString *action) { static dispatch_once_t onceToken; @@ -64,6 +65,7 @@ static SEL HYBSelectorWithAction(NSString *action) { @interface HYBBridge () @property (strong, nonatomic) dispatch_queue_t queue; +@property (weak, nonatomic) UIWebView *webView; @end @@ -109,6 +111,9 @@ - (id)initWithQueue:(dispatch_queue_t)queue { - (NSString *)prepareWebView:(UIWebView *)webView { NSParameterAssert(webView); + + self.webView = webView; + static NSString * const kFormat = @"window.HybridgeGlobal || setTimeout(function() {" @" window.HybridgeGlobal = {" @" isReady:true," @@ -119,8 +124,8 @@ - (NSString *)prepareWebView:(UIWebView *)webView { @" (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" @"}, 0);"; - NSArray *actions = [self.delegate bridgeActions:self]; - NSString *actionsString = [NSString hyb_JSONStringWithObject:actions ? : @[]]; + NSArray *actions = [@[@"init"] arrayByAddingObjectsFromArray:[self.delegate bridgeActions:self]]; + NSString *actionsString = [NSString hyb_JSONStringWithObject:actions]; NSArray *events = @[HYBEventPause, HYBEventResume, HYBEventMessage, HYBEventReady]; NSString *eventsString = [NSString hyb_JSONStringWithObject:events]; @@ -133,11 +138,24 @@ - (void)dispatchAction:(NSString *)action data:(NSDictionary *)data completion:( NSParameterAssert(action); NSParameterAssert(completion); - NSObject *delegate = self.delegate; - dispatch_async(self.queue, ^{ - NSHTTPURLResponse *response = HYBSendAction(action, data, delegate); + // Automatically respond to 'init' actions. Dispatch other actions to the delegate. + + if ([action isEqualToString:@"init"] && self.webView) { + UIWebView *webView = self.webView; + + dispatch_async(dispatch_get_main_queue(), ^{ + [webView hyb_fireEvent:HYBEventReady data:nil]; + }); + + NSHTTPURLResponse *response = [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; completion(response); - }); + } else { + NSObject *delegate = self.delegate; + dispatch_async(self.queue, ^{ + NSHTTPURLResponse *response = HYBSendAction(action, data, delegate); + completion(response); + }); + } } @end diff --git a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m index 398c957..f64cbf5 100644 --- a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m +++ b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m @@ -48,19 +48,19 @@ - (void)testPrepareWebView { @" window.HybridgeGlobal = {" @" isReady:true," @" version:1," - @" actions:[\"test\",\"something\"]," + @" actions:[\"init\",\"test\",\"something\"]," @" events:[\"pause\",\"resume\",\"message\",\"ready\"]" @" };" - @" window.$ && $('#hybridgeTrigger').toggleClass('switch');" - @"}, 0)"; + @" (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" + @"}, 0);"; - [[[webView expect] andReturn:@"ok"] stringByEvaluatingJavaScriptFromString:javascript]; + [[[webView expect] andReturn:@"true"] stringByEvaluatingJavaScriptFromString:javascript]; HYBBridge *bridge = [HYBBridge new]; bridge.delegate = self; NSString *result = [bridge prepareWebView:webView]; - XCTAssertEqualObjects(@"ok", result, @"should return the value returned by the web view"); + XCTAssertEqualObjects(@"true", result, @"should return the value returned by the web view"); } - (void)testActionDispatch { From 45f44a59a7016e4f1b671c712e2d125e5cd0527d Mon Sep 17 00:00:00 2001 From: David Cantelar Date: Fri, 11 Apr 2014 15:23:57 +0200 Subject: [PATCH 26/64] FIX logger log function to be console compliant --- boilerplate/www/hybridge.html | 2 +- js/hybridge.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boilerplate/www/hybridge.html b/boilerplate/www/hybridge.html index e67191b..510b0a1 100644 --- a/boilerplate/www/hybridge.html +++ b/boilerplate/www/hybridge.html @@ -59,7 +59,7 @@ error: function (text) { webConsole.append('

ERROR: ' + text + '

'); }, - warning: function (text) { + log: function (text) { webConsole.append('

WARN: ' + text + '

'); } }; diff --git a/js/hybridge.js b/js/hybridge.js index 4a8753a..495d842 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -299,7 +299,7 @@ define([ document.addEventListener(event.type, callback, false); } else if (debug) { - _getLogger().warning('Hybridge: ' + _errors.DEBUG_MODE); + _getLogger().log('Hybridge: ' + _errors.DEBUG_MODE); } else { _getLogger().error('Hybridge: ' + _errors.EVENT_NOT_IMPLEMENTED, event); @@ -316,7 +316,7 @@ define([ document.removeEventListener(event.type, callback, false); } else if (debug) { - _getLogger().warning('Hybridge: ' + _errors.DEBUG_MODE); + _getLogger().log('Hybridge: ' + _errors.DEBUG_MODE); } else { _getLogger().error('Hybridge: ' + _errors.EVENT_NOT_IMPLEMENTED, event); From b85718228c1f51c24607231e4c8293fe87918cbb Mon Sep 17 00:00:00 2001 From: David Cantelar Date: Mon, 14 Apr 2014 10:34:51 +0200 Subject: [PATCH 27/64] FIX missing comma --- js/hybridge.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/hybridge.js b/js/hybridge.js index 495d842..1fc5fa6 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -473,7 +473,7 @@ define([ send: _send, events: _events, actions: _actions, - errors: _errors + errors: _errors, ready: _ready }; From cefa76f9f14a320a14c16449a1719bc98b7ade9b Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 16 May 2014 15:05:37 +0200 Subject: [PATCH 28/64] Actions handlers can return a JSON dictionary back to the web view --- ios/Hybridge/Hybridge/HYBBridge.h | 14 ++++--- ios/Hybridge/Hybridge/HYBBridge.m | 43 ++++++++++++++++----- ios/Hybridge/Hybridge/HYBURLProtocol.m | 7 +++- ios/Hybridge/HybridgeTests/HYBBridgeTests.m | 21 ++++++++-- 4 files changed, 66 insertions(+), 19 deletions(-) diff --git a/ios/Hybridge/Hybridge/HYBBridge.h b/ios/Hybridge/Hybridge/HYBBridge.h index d857af2..8f094d1 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.h +++ b/ios/Hybridge/Hybridge/HYBBridge.h @@ -60,9 +60,9 @@ When this method is called, the bridge will ask its delegate to handle the action. - If the delegate object implements a `- (void)handleWithData:(NSDictionary *)data` method, - the bridge will call this method. The bridge assumes that action names are in snake_case, that is, - if it receives the action 'go_to_detail' it will look for a method named + If the delegate object implements a `- (NSDictionary *)handleWithData:(NSDictionary *)data` + method, the bridge will call this method. The bridge assumes that action names are in snake_case, + that is, if it receives the action 'go_to_detail' it will look for a method named `-handleGoToDetailWithData:`. If a method is not found, the bridge will try `-bridge:didReceiveAction:data:`. If the delegate @@ -73,7 +73,9 @@ @param data An `NSDictionary` containing data attached to the action. @param completion A block that will be executed after the action has been dispatched. */ -- (void)dispatchAction:(NSString *)action data:(NSDictionary *)data completion:(void (^)(NSHTTPURLResponse *))completion; +- (void)dispatchAction:(NSString *)action + data:(NSDictionary *)data + completion:(void (^)(NSHTTPURLResponse *, NSData *))completion; @end @@ -97,8 +99,8 @@ @param action The action name. @param data An `NSDictionary` containing data attached to the action. - @return `nil` if the action was handled correctly, otherwise a `NSHTTPURLResponse` initialized with the appropiate status code. + @return A JSON dictionary. */ -- (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data; +- (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data; @end diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m index 2e5096a..65816c6 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.m +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -41,10 +41,16 @@ static SEL HYBSelectorWithAction(NSString *action) { return NSSelectorFromString(selectorName); } -static NSHTTPURLResponse *HYBSendAction(NSString *action, NSDictionary *data, NSObject *delegate) { +static NSDictionary *HYBSendAction(NSString *action, + NSDictionary *data, + NSObject *delegate, + NSHTTPURLResponse *__autoreleasing *response) +{ SEL selector = HYBSelectorWithAction(action); if ([delegate respondsToSelector:selector]) { + *response = [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; + NSMethodSignature *methodSignature = [delegate methodSignatureForSelector:selector]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; invocation.target = delegate; @@ -53,13 +59,16 @@ static SEL HYBSelectorWithAction(NSString *action) { [invocation invoke]; - return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; + __unsafe_unretained id result = nil; + [invocation getReturnValue:&result]; + return result; } else if ([delegate respondsToSelector:@selector(bridgeDidReceiveAction:data:)]) { - NSHTTPURLResponse *response = [delegate bridgeDidReceiveAction:action data:data]; - return response ? : [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; + *response = [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; + return [delegate bridgeDidReceiveAction:action data:data]; } - return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:404]; + *response = [NSHTTPURLResponse hyb_responseWithAction:action statusCode:404]; + return nil; } @interface HYBBridge () @@ -134,7 +143,10 @@ - (NSString *)prepareWebView:(UIWebView *)webView { return [webView stringByEvaluatingJavaScriptFromString:javascript]; } -- (void)dispatchAction:(NSString *)action data:(NSDictionary *)data completion:(void (^)(NSHTTPURLResponse *))completion { +- (void)dispatchAction:(NSString *)action + data:(NSDictionary *)data + completion:(void (^)(NSHTTPURLResponse *, NSData *))completion +{ NSParameterAssert(action); NSParameterAssert(completion); @@ -148,12 +160,25 @@ - (void)dispatchAction:(NSString *)action data:(NSDictionary *)data completion:( }); NSHTTPURLResponse *response = [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; - completion(response); + completion(response, nil); } else { NSObject *delegate = self.delegate; dispatch_async(self.queue, ^{ - NSHTTPURLResponse *response = HYBSendAction(action, data, delegate); - completion(response); + NSHTTPURLResponse *response = nil; + NSDictionary *result = HYBSendAction(action, data, delegate, &response); + NSData *resultData = nil; + + if (result) { + NSError *error = nil; + resultData = [NSJSONSerialization dataWithJSONObject:result + options:0 + error:&error]; + if (error) { + NSLog(@"%s JSON serialization error: %@", __PRETTY_FUNCTION__, error); + } + } + + completion(response, resultData); }); } } diff --git a/ios/Hybridge/Hybridge/HYBURLProtocol.m b/ios/Hybridge/Hybridge/HYBURLProtocol.m index cc9f636..05648f3 100644 --- a/ios/Hybridge/Hybridge/HYBURLProtocol.m +++ b/ios/Hybridge/Hybridge/HYBURLProtocol.m @@ -38,8 +38,13 @@ - (void)startLoading { NSData *data = [headers[@"data"] dataUsingEncoding:NSUTF8StringEncoding]; id JSONObject = data ? [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL] : nil; - [[HYBBridge activeBridge] dispatchAction:action data:JSONObject completion:^(NSHTTPURLResponse *response) { + [[HYBBridge activeBridge] dispatchAction:action data:JSONObject completion:^(NSHTTPURLResponse *response, NSData *data) { [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; + + if (data) { + [self.client URLProtocol:self didLoadData:data]; + } + [self.client URLProtocolDidFinishLoading:self]; }]; } else { diff --git a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m index f64cbf5..5c31fa6 100644 --- a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m +++ b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m @@ -74,15 +74,21 @@ - (void)testActionDispatch { [request addValue:@"{\"foo\":\"bar\"}" forHTTPHeaderField:@"data"]; NSHTTPURLResponse * __block response = nil; + NSData * __block resultData = nil; + [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *r, NSData *data, NSError *error) { response = (NSHTTPURLResponse *)r; + resultData = data; }]; HYBAssertEventually(response, @"should complete with a response"); XCTAssertTrue(self.didReceiveActionCalled, @"should call the delegate"); XCTAssertEqual((NSInteger)200, [response statusCode], @"should return 200 OK"); + + NSDictionary *result = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:NULL]; + XCTAssertEqualObjects((@{@"result": @1}), result, @"should return the dictionary returned by the delegate"); } - (void)testActionDispatchWithMethodHandler { @@ -96,15 +102,21 @@ - (void)testActionDispatchWithMethodHandler { [request addValue:@"{\"bar\":\"foo\"}" forHTTPHeaderField:@"data"]; NSHTTPURLResponse * __block response = nil; + NSData * __block resultData = nil; + [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *r, NSData *data, NSError *error) { response = (NSHTTPURLResponse *)r; + resultData = data; }]; HYBAssertEventually(response, @"should complete with a response"); XCTAssertTrue(self.handlerCalled, @"should call the handler method"); XCTAssertEqual((NSInteger)200, [response statusCode], @"should return 200 OK"); + + NSDictionary *result = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:NULL]; + XCTAssertEqualObjects((@{@"result": @2}), result, @"should return the dictionary returned by the delegate"); } - (void)testUnhandledAction { @@ -129,7 +141,7 @@ - (NSArray *)bridgeActions:(HYBBridge *)bridge { return @[@"test", @"something"]; } -- (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { +- (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { XCTAssertTrue([NSThread isMainThread], @"should be called in the main thread"); XCTAssertEqualObjects(@"test", action, @"should receive a 'test' action"); @@ -137,16 +149,19 @@ - (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDiction XCTAssertEqualObjects(expectedData, data, @"should receive the correct data"); self.didReceiveActionCalled = YES; - return nil; + + return @{@"result": @1}; } -- (void)handleSomethingWithData:(NSDictionary *)data { +- (NSDictionary *)handleSomethingWithData:(NSDictionary *)data { XCTAssertTrue([NSThread isMainThread], @"should be called in the main thread"); NSDictionary *expectedData = @{@"bar": @"foo"}; XCTAssertEqualObjects(expectedData, data, @"should receive the correct data"); self.handlerCalled = YES; + + return @{@"result": @2}; } @end From ad158b5088e159a91b506a13a116486842e5e1aa Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Mon, 19 May 2014 16:21:35 +0200 Subject: [PATCH 29/64] Forward web view loading events --- ios/Hybridge/Hybridge/HYBWebViewController.h | 12 ++++++++++++ ios/Hybridge/Hybridge/HYBWebViewController.m | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.h b/ios/Hybridge/Hybridge/HYBWebViewController.h index 8d07ebe..9ef4e39 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.h +++ b/ios/Hybridge/Hybridge/HYBWebViewController.h @@ -8,6 +8,7 @@ #import +@protocol HYBWebViewControllerDelegate; @class HYBBridge; /** @@ -15,9 +16,20 @@ */ @interface HYBWebViewController : UIViewController +@property (weak, nonatomic) id delegate; @property (strong, nonatomic, readonly) UIWebView *webView; @property (strong, nonatomic, readonly) HYBBridge *bridge; - (id)initWithURL:(NSURL *)url; @end + +@protocol HYBWebViewControllerDelegate + +@optional + +- (void)webControllerDidStartLoad:(HYBWebViewController *)controller; +- (void)webControllerDidFinishLoad:(HYBWebViewController *)controller; +- (void)webController:(HYBWebViewController *)controller didFailLoadWithError:(NSError *)error; + +@end diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m index d1b3e63..cbdd2f4 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.m +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -77,8 +77,24 @@ - (void)viewWillDisappear:(BOOL)animated { #pragma mark - UIWebViewDelegate +- (void)webViewDidStartLoad:(UIWebView *)webView { + if ([self.delegate respondsToSelector:@selector(webControllerDidStartLoad:)]) { + [self.delegate webControllerDidStartLoad:self]; + } +} + - (void)webViewDidFinishLoad:(UIWebView *)webView { [self.bridge prepareWebView:webView]; + + if ([self.delegate respondsToSelector:@selector(webControllerDidFinishLoad:)]) { + [self.delegate webControllerDidFinishLoad:self]; + } +} + +- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { + if ([self.delegate respondsToSelector:@selector(webController:didFailLoadWithError:)]) { + [self.delegate webController:self didFailLoadWithError:error]; + } } @end From f71a0b4da9f83bdd5685111a226c98a8cac760f8 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Tue, 20 May 2014 11:43:23 +0200 Subject: [PATCH 30/64] Forward web view loading events (2) --- ios/Hybridge/Hybridge/HYBWebViewController.h | 12 +++-------- ios/Hybridge/Hybridge/HYBWebViewController.m | 22 +++++++++++--------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.h b/ios/Hybridge/Hybridge/HYBWebViewController.h index 9ef4e39..101b0de 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.h +++ b/ios/Hybridge/Hybridge/HYBWebViewController.h @@ -8,7 +8,6 @@ #import -@protocol HYBWebViewControllerDelegate; @class HYBBridge; /** @@ -16,20 +15,15 @@ */ @interface HYBWebViewController : UIViewController -@property (weak, nonatomic) id delegate; @property (strong, nonatomic, readonly) UIWebView *webView; @property (strong, nonatomic, readonly) HYBBridge *bridge; - (id)initWithURL:(NSURL *)url; -@end - -@protocol HYBWebViewControllerDelegate +- (void)webViewDidStartLoad; -@optional +- (void)webViewDidFinishLoad; -- (void)webControllerDidStartLoad:(HYBWebViewController *)controller; -- (void)webControllerDidFinishLoad:(HYBWebViewController *)controller; -- (void)webController:(HYBWebViewController *)controller didFailLoadWithError:(NSError *)error; +- (void)webViewDidFailLoadWithError:(NSError *)error; @end diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m index cbdd2f4..4079e9d 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.m +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -75,26 +75,28 @@ - (void)viewWillDisappear:(BOOL)animated { } } +- (void)webViewDidStartLoad { +} + +- (void)webViewDidFinishLoad { +} + +- (void)webViewDidFailLoadWithError:(NSError *)error { +} + #pragma mark - UIWebViewDelegate - (void)webViewDidStartLoad:(UIWebView *)webView { - if ([self.delegate respondsToSelector:@selector(webControllerDidStartLoad:)]) { - [self.delegate webControllerDidStartLoad:self]; - } + [self webViewDidStartLoad]; } - (void)webViewDidFinishLoad:(UIWebView *)webView { [self.bridge prepareWebView:webView]; - - if ([self.delegate respondsToSelector:@selector(webControllerDidFinishLoad:)]) { - [self.delegate webControllerDidFinishLoad:self]; - } + [self webViewDidFinishLoad]; } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { - if ([self.delegate respondsToSelector:@selector(webController:didFailLoadWithError:)]) { - [self.delegate webController:self didFailLoadWithError:error]; - } + [self webViewDidFailLoadWithError:error]; } @end From 3a10a7e29ee2dd8cab78920d3bf01ad5325f5409 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Tue, 20 May 2014 12:08:28 +0200 Subject: [PATCH 31/64] Update HYBWebViewController to conform to HYBBridgeDelegate protocol --- ios/Hybridge/Hybridge/HYBWebViewController.h | 4 ++-- ios/Hybridge/Hybridge/HYBWebViewController.m | 6 ++++++ ios/Hybridge/HybridgeTests/HYBBridgeTests.m | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.h b/ios/Hybridge/Hybridge/HYBWebViewController.h index 101b0de..e1ea292 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.h +++ b/ios/Hybridge/Hybridge/HYBWebViewController.h @@ -8,12 +8,12 @@ #import -@class HYBBridge; +#import "HYBBridge.h" /** A view controller that manages a web view and the bridge to communicate with it. */ -@interface HYBWebViewController : UIViewController +@interface HYBWebViewController : UIViewController @property (strong, nonatomic, readonly) UIWebView *webView; @property (strong, nonatomic, readonly) HYBBridge *bridge; diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m index 4079e9d..5c74235 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.m +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -99,4 +99,10 @@ - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { [self webViewDidFailLoadWithError:error]; } +#pragma mark - HYBBridgeDelegate + +- (NSArray *)bridgeActions:(HYBBridge *)bridge { + return nil; +} + @end diff --git a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m index 5c31fa6..096fa5a 100644 --- a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m +++ b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m @@ -48,7 +48,7 @@ - (void)testPrepareWebView { @" window.HybridgeGlobal = {" @" isReady:true," @" version:1," - @" actions:[\"init\",\"test\",\"something\"]," + @" actions:[\"init\",\"test\",\"do_something\"]," @" events:[\"pause\",\"resume\",\"message\",\"ready\"]" @" };" @" (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" @@ -97,7 +97,7 @@ - (void)testActionDispatchWithMethodHandler { [HYBBridge setActiveBridge:bridge]; - NSURL *url = [NSURL URLWithString:@"http://hybridge/something"]; + NSURL *url = [NSURL URLWithString:@"http://hybridge/do_something"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request addValue:@"{\"bar\":\"foo\"}" forHTTPHeaderField:@"data"]; @@ -138,7 +138,7 @@ - (void)testUnhandledAction { #pragma mark - HYBBridgeDelegate - (NSArray *)bridgeActions:(HYBBridge *)bridge { - return @[@"test", @"something"]; + return @[@"test", @"do_something"]; } - (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { @@ -153,7 +153,7 @@ - (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary * return @{@"result": @1}; } -- (NSDictionary *)handleSomethingWithData:(NSDictionary *)data { +- (NSDictionary *)handleDoSomethingWithData:(NSDictionary *)data { XCTAssertTrue([NSThread isMainThread], @"should be called in the main thread"); NSDictionary *expectedData = @{@"bar": @"foo"}; From 60525e256d922c0531611913a800c8f3ce0160a7 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Tue, 20 May 2014 12:16:08 +0200 Subject: [PATCH 32/64] Make HYBWebViewController a delegate of the bridge --- ios/Hybridge/Hybridge/HYBWebViewController.m | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m index 5c74235..6f997f2 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.m +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -35,6 +35,7 @@ - (id)initWithURL:(NSURL *)url { if (self) { _bridge = [[HYBBridge alloc] init]; + _bridge.delegate = self; _URL = url; } From beed72235cbd3a8e4afaf3fd870ec784279dd5d0 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Thu, 22 May 2014 08:00:35 +0200 Subject: [PATCH 33/64] Fix HYBWebViewController initialization --- ios/Hybridge/Hybridge/HYBWebViewController.m | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m index 6f997f2..59d5d8f 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.m +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -30,12 +30,21 @@ - (void)dealloc { self.webView.delegate = nil; } -- (id)initWithURL:(NSURL *)url { - self = [super initWithNibName:nil bundle:nil]; +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { _bridge = [[HYBBridge alloc] init]; _bridge.delegate = self; + } + + return self; +} + +- (id)initWithURL:(NSURL *)url { + self = [self initWithNibName:nil bundle:nil]; + + if (self) { _URL = url; } From 301c1d31c03c2ee7c8e8502fa565a8e75770b2cf Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Mon, 26 May 2014 12:10:41 +0200 Subject: [PATCH 34/64] Fix for 'init' action not being called --- ios/Hybridge/Hybridge/HYBBridge.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m index 65816c6..f1e1f44 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.m +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -131,7 +131,7 @@ - (NSString *)prepareWebView:(UIWebView *)webView { @" events:%@" @" };" @" (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" - @"}, 0);"; + @"}, 100);"; NSArray *actions = [@[@"init"] arrayByAddingObjectsFromArray:[self.delegate bridgeActions:self]]; NSString *actionsString = [NSString hyb_JSONStringWithObject:actions]; From 2aba4dda8c3e7da19dd9eaf584acb054f7191759 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Mon, 16 Jun 2014 13:25:08 +0200 Subject: [PATCH 35/64] REMOVE Singleton --- .../com/pdi/hybridge/HybridgeBroadcaster.java | 138 ++++++++---------- .../pdi/hybridge/HybridgeWebChromeClient.java | 62 ++++---- .../pdi/hybridge/HybridgeWebViewClient.java | 46 ++++-- 3 files changed, 127 insertions(+), 119 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index 85482cd..cded2dd 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -6,110 +6,109 @@ package com.pdi.hybridge; -import java.util.HashMap; -import java.util.Observable; -import java.util.Observer; - -import org.json.JSONArray; -import org.json.JSONObject; - -import android.annotation.SuppressLint; -import android.os.AsyncTask; import android.util.Log; +import android.util.SparseArray; import android.webkit.WebView; import android.webkit.WebView.HitTestResult; import com.pdi.hybridge.HybridgeConst.Event; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.Observable; +import java.util.Observer; + public class HybridgeBroadcaster extends Observable { - private static HybridgeBroadcaster instance; + private static SparseArray mClients = + new SparseArray(); + + private boolean mIsInitialized = false; - private boolean isInitialized = false; + private WebView mClient; private final String TAG = "HybridgeBroadcaster"; - private StringBuffer jsBuffer; - - private HashMap> currents; + private StringBuffer mJsBuffer; - @SuppressLint("UseSparseArrays") - public HybridgeBroadcaster() { - currents = new HashMap>(); - jsBuffer = new StringBuffer(""); + private SparseArray mCurrents; + + public HybridgeBroadcaster(WebView client) { + mClient = client; + mCurrents = new SparseArray(); + mJsBuffer = new StringBuffer(""); } - public static HybridgeBroadcaster getInstance() { + public static HybridgeBroadcaster getInstance(WebView client) { + final int hash = client.hashCode(); + HybridgeBroadcaster instance = mClients.get(hash); if (instance == null) { - instance = new HybridgeBroadcaster(); + instance = new HybridgeBroadcaster(client); + mClients.put(hash, instance); } return instance; } public void initJs(WebView view, JSONArray actions, JSONArray events) { - runJsInWebView(view, "window.HybridgeGlobal || setTimeout(function () {" + - "window.HybridgeGlobal = {" + - " isReady : true" + - ", version : " + HybridgeConst.VERSION + - ", actions : " + actions.toString() + - ", events : " + events.toString() + - "};" + - "window.$ && $('#hybridgeTrigger').toggleClass('switch');" + - "},0)" - ); - isInitialized = true; + runJsInWebView(view, "window.HybridgeGlobal || setTimeout(function () {" + + "window.HybridgeGlobal = {" + " isReady : true" + ", version : " + + HybridgeConst.VERSION + ", actions : " + actions.toString() + ", events : " + + events.toString() + "};" + + "window.$ && $('#hybridgeTrigger').toggleClass('switch');" + "},0)"); + mIsInitialized = true; } public void firePause(WebView view) { - HybridgeConst.Event event = HybridgeConst.Event.PAUSE; + final HybridgeConst.Event event = HybridgeConst.Event.PAUSE; notifyObservers(event); fireJavascriptEvent(view, event, null); } public void fireResume(WebView view) { - HybridgeConst.Event event = HybridgeConst.Event.RESUME; + final HybridgeConst.Event event = HybridgeConst.Event.RESUME; notifyObservers(event); fireJavascriptEvent(view, event, null); } - public void fireMessage (WebView view, JSONObject data) { - HybridgeConst.Event event = HybridgeConst.Event.MESSAGE; + public void fireMessage(WebView view, JSONObject data) { + final HybridgeConst.Event event = HybridgeConst.Event.MESSAGE; notifyObservers(event); fireJavascriptEvent(view, event, data); } public void fireReady(WebView view, JSONObject data) { - HybridgeConst.Event event = HybridgeConst.Event.READY; + final HybridgeConst.Event event = HybridgeConst.Event.READY; notifyObservers(event); fireJavascriptEvent(view, event, data); } public void fireJavascriptEvent(final WebView view, final Event event, final JSONObject data) { - if (isInitialized) { - view.post( - new Runnable() { - @Override - public void run() { - WebView.HitTestResult hitTestResult = ((WebView)view).getHitTestResult(); - String prejs = ""; - String json = data != null ? data.toString() : "{}"; - StringBuffer js = new StringBuffer("HybridgeGlobal.fireEvent(\""); - js.append(event.getJsName()).append("\",").append(json).append(");"); - - if (hitTestResult == null || hitTestResult.getType() != HitTestResult.EDIT_TEXT_TYPE) { - if(jsBuffer.length() != 0) { - prejs = jsBuffer.append(js.toString()).toString(); - runJsInWebView(view, prejs); - jsBuffer = new StringBuffer(""); - } else { - runJsInWebView(view, js.toString()); - } + if (mIsInitialized) { + view.post(new Runnable() { + @Override + public void run() { + final WebView.HitTestResult hitTestResult = view.getHitTestResult(); + String prejs = ""; + final String json = data != null ? data.toString() : "{}"; + final StringBuffer js = new StringBuffer("HybridgeGlobal.fireEvent(\""); + js.append(event.getJsName()).append("\",").append(json).append(");"); + + if (hitTestResult == null + || hitTestResult.getType() != HitTestResult.EDIT_TEXT_TYPE) { + if (mJsBuffer.length() != 0) { + prejs = mJsBuffer.append(js.toString()).toString(); + runJsInWebView(view, prejs); + mJsBuffer = new StringBuffer(""); } else { - Log.d(TAG, "Defer javascript message, user is entering text"); - jsBuffer.append(js.toString()); + runJsInWebView(view, js.toString()); } + } else { + Log.d(TAG, "Defer javascript message, user is entering text"); + mJsBuffer.append(js.toString()); } - }); + } + }); } } @@ -123,30 +122,19 @@ public void updateState(JSONObject data) { Log.d(TAG, data.toString()); } - @SuppressWarnings("unchecked") @Override public void addObserver(Observer observer) { super.addObserver(observer); - Class clazz = observer.getClass().getSuperclass(); - if (clazz != null && clazz == android.os.AsyncTask.class) { - int hashCode = observer.hashCode(); - AsyncTask current = currents.get(hashCode); - if (current != null) { - if (current.cancel(true)) { - currents.remove(hashCode); - } - } - currents.put(hashCode, (AsyncTask) observer); - } + /* + * final int hashCode = observer.hashCode(); final WebView current = + * mCurrents.get(hashCode); if (current == null) { mCurrents.put(hashCode, (WebView) + * observer); } + */ } @Override public void deleteObserver(Observer observer) { super.deleteObserver(observer); - Class clazz = observer.getClass().getSuperclass(); - if (clazz != null && clazz == android.os.AsyncTask.class) { - int hashCode = observer.hashCode(); - currents.remove(hashCode); - } + // mCurrents.remove(observer.hashCode()); } } diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java index 32bcc4e..f1e99dd 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java @@ -6,12 +6,6 @@ package com.pdi.hybridge; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; - -import org.json.JSONException; -import org.json.JSONObject; - import android.annotation.SuppressLint; import android.app.Activity; import android.os.AsyncTask; @@ -20,32 +14,40 @@ import android.webkit.WebChromeClient; import android.webkit.WebView; +import org.json.JSONException; +import org.json.JSONObject; + +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; + public class HybridgeWebChromeClient extends WebChromeClient { protected String mTag = "HybridgeWebChromeClient"; @SuppressWarnings("rawtypes") - protected HashMap actions; + protected HashMap mActions; @SuppressWarnings("rawtypes") @SuppressLint("DefaultLocale") - public HybridgeWebChromeClient(JsAction[] actions) { - this.actions = new HashMap(actions.length); - for (JsAction action : actions) { - this.actions.put(action.toString().toLowerCase(), action.getTask()); + public HybridgeWebChromeClient(JsAction[] actions) { + mActions = new HashMap(actions.length); + for (final JsAction action : actions) { + mActions.put(action.toString().toLowerCase(), action.getTask()); } } @Override - public final boolean onJsPrompt(WebView view, String url, String msg, String defValue, JsPromptResult result) { - String action = msg; + public final boolean onJsPrompt(WebView view, String url, String msg, String defValue, + JsPromptResult result) { + final String action = msg; JSONObject json = null; Log.v(mTag, "Hybridge action: " + action); try { json = new JSONObject(defValue); Log.v(mTag, "JSON parsed (Action " + action + ") : " + json.toString()); - executeJSONTask(action, json, result, (Activity) view.getContext()); - } catch (JSONException e) { + executeJSONTask(action, json, result, HybridgeBroadcaster.getInstance(view), + (Activity) view.getContext()); + } catch (final JSONException e) { result.cancel(); Log.e(mTag, e.getMessage()); } @@ -53,29 +55,33 @@ public final boolean onJsPrompt(WebView view, String url, String msg, String def } @SuppressLint("DefaultLocale") - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void executeJSONTask(String action, JSONObject json, JsPromptResult result, Activity activity) { - Class clazz = this.actions.get(action); + @SuppressWarnings({ + "unchecked", "rawtypes" + }) + private void executeJSONTask(String action, JSONObject json, JsPromptResult result, + HybridgeBroadcaster hybridge, Activity activity) { + final Class clazz = mActions.get(action); if (clazz != null) { AsyncTask task = null; try { - task = (AsyncTask) - clazz.getDeclaredConstructor - ( new Class[] { android.app.Activity.class } ) - .newInstance(activity); - } catch (InstantiationException e) { + task = + (AsyncTask) clazz.getDeclaredConstructor( + new Class[] { + android.app.Activity.class + }).newInstance(activity); + } catch (final InstantiationException e) { e.printStackTrace(); - } catch (IllegalAccessException e) { + } catch (final IllegalAccessException e) { e.printStackTrace(); - } catch (IllegalArgumentException e) { + } catch (final IllegalArgumentException e) { e.printStackTrace(); - } catch (InvocationTargetException e) { + } catch (final InvocationTargetException e) { e.printStackTrace(); - } catch (NoSuchMethodException e) { + } catch (final NoSuchMethodException e) { e.printStackTrace(); } Log.v(mTag, "Execute action " + action); - task.execute(json, result); + task.execute(json, result, hybridge); } else { result.confirm(json.toString()); Log.d(mTag, "Hybridge action not implemented: " + action); diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java index c8d4afe..bd2d13b 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java @@ -6,34 +6,35 @@ package com.pdi.hybridge; -import org.json.JSONArray; - import android.annotation.SuppressLint; +import android.graphics.Bitmap; import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; import com.pdi.hybridge.HybridgeConst.Event; +import org.json.JSONArray; + public class HybridgeWebViewClient extends WebViewClient { - protected JSONArray actions; - protected JSONArray events; - protected HybridgeBroadcaster broadcast; + protected JSONArray mActions; + protected JSONArray mEvents; + protected HybridgeBroadcaster mBroadcast; + protected WebView mWebview; @SuppressLint("DefaultLocale") - public HybridgeWebViewClient(JsAction[] actions) { - this.actions = new JSONArray(); - for (JsAction action : actions) { - this.actions.put(action.toString().toLowerCase()); + public HybridgeWebViewClient(JsAction[] actions) { + mActions = new JSONArray(); + for (final JsAction action : actions) { + this.mActions.put(action.toString().toLowerCase()); } - this.events = new JSONArray(); - Event[] events = HybridgeConst.Event.values(); - for (Event event : events) { - this.events.put(event.getJsName()); + mEvents = new JSONArray(); + final Event[] events = HybridgeConst.Event.values(); + for (final Event event : events) { + this.mEvents.put(event.getJsName()); } - this.broadcast = HybridgeBroadcaster.getInstance(); } @Override @@ -41,9 +42,22 @@ public WebResourceResponse shouldInterceptRequest(WebView view, String url) { return super.shouldInterceptRequest(view, url); } - @Override + @Override public void onPageFinished(WebView view, String url) { - this.broadcast.initJs(view, actions, events); + mBroadcast.initJs(view, mActions, mEvents); + } + + /* + * (non-Javadoc) + * + * @see android.webkit.WebViewClient#onPageStarted(android.webkit.WebView, java.lang.String, + * android.graphics.Bitmap) + */ + @Override + public void onPageStarted(WebView view, String url, Bitmap favicon) { + super.onPageStarted(view, url, favicon); + mWebview = view; + mBroadcast = HybridgeBroadcaster.getInstance(view); } } From efbec3811e823a3d8dd9d216238ac6ca816e2722 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Mon, 16 Jun 2014 17:11:48 +0200 Subject: [PATCH 36/64] EDIT some improvements --- .../com/pdi/hybridge/HybridgeBroadcaster.java | 37 ++++++------------- .../pdi/hybridge/HybridgeWebViewClient.java | 24 +----------- 2 files changed, 12 insertions(+), 49 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index cded2dd..760c30d 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -17,39 +17,40 @@ import org.json.JSONObject; import java.util.Observable; -import java.util.Observer; public class HybridgeBroadcaster extends Observable { - private static SparseArray mClients = + /** + * Keeps track of the current HybridgeBroadcaster instances in the app based in each WebView + * hash + */ + private static SparseArray sClients = new SparseArray(); private boolean mIsInitialized = false; - private WebView mClient; - private final String TAG = "HybridgeBroadcaster"; private StringBuffer mJsBuffer; - private SparseArray mCurrents; - public HybridgeBroadcaster(WebView client) { - mClient = client; - mCurrents = new SparseArray(); mJsBuffer = new StringBuffer(""); } public static HybridgeBroadcaster getInstance(WebView client) { final int hash = client.hashCode(); - HybridgeBroadcaster instance = mClients.get(hash); + HybridgeBroadcaster instance = sClients.get(hash); if (instance == null) { instance = new HybridgeBroadcaster(client); - mClients.put(hash, instance); + sClients.put(hash, instance); } return instance; } + public static void destroy(WebView client) { + sClients.remove(client.hashCode()); + } + public void initJs(WebView view, JSONArray actions, JSONArray events) { runJsInWebView(view, "window.HybridgeGlobal || setTimeout(function () {" + "window.HybridgeGlobal = {" + " isReady : true" + ", version : " @@ -121,20 +122,4 @@ public void updateState(JSONObject data) { this.notifyObservers(data); Log.d(TAG, data.toString()); } - - @Override - public void addObserver(Observer observer) { - super.addObserver(observer); - /* - * final int hashCode = observer.hashCode(); final WebView current = - * mCurrents.get(hashCode); if (current == null) { mCurrents.put(hashCode, (WebView) - * observer); } - */ - } - - @Override - public void deleteObserver(Observer observer) { - super.deleteObserver(observer); - // mCurrents.remove(observer.hashCode()); - } } diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java index bd2d13b..6358fa0 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java @@ -7,8 +7,6 @@ package com.pdi.hybridge; import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; @@ -20,8 +18,6 @@ public class HybridgeWebViewClient extends WebViewClient { protected JSONArray mActions; protected JSONArray mEvents; - protected HybridgeBroadcaster mBroadcast; - protected WebView mWebview; @SuppressLint("DefaultLocale") public HybridgeWebViewClient(JsAction[] actions) { @@ -37,27 +33,9 @@ public HybridgeWebViewClient(JsAction[] actions) { } } - @Override - public WebResourceResponse shouldInterceptRequest(WebView view, String url) { - return super.shouldInterceptRequest(view, url); - } - @Override public void onPageFinished(WebView view, String url) { - mBroadcast.initJs(view, mActions, mEvents); - } - - /* - * (non-Javadoc) - * - * @see android.webkit.WebViewClient#onPageStarted(android.webkit.WebView, java.lang.String, - * android.graphics.Bitmap) - */ - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { - super.onPageStarted(view, url, favicon); - mWebview = view; - mBroadcast = HybridgeBroadcaster.getInstance(view); + HybridgeBroadcaster.getInstance(view).initJs(view, mActions, mEvents); } } From 638e839c422096a56093062dc31feac64b4f0583 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Tue, 17 Jun 2014 08:25:22 +0200 Subject: [PATCH 37/64] EDIT PR comments --- .../Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index 760c30d..cdc6f77 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -33,7 +33,7 @@ public class HybridgeBroadcaster extends Observable { private StringBuffer mJsBuffer; - public HybridgeBroadcaster(WebView client) { + public HybridgeBroadcaster() { mJsBuffer = new StringBuffer(""); } @@ -41,7 +41,7 @@ public static HybridgeBroadcaster getInstance(WebView client) { final int hash = client.hashCode(); HybridgeBroadcaster instance = sClients.get(hash); if (instance == null) { - instance = new HybridgeBroadcaster(client); + instance = new HybridgeBroadcaster(); sClients.put(hash, instance); } return instance; @@ -56,7 +56,8 @@ public void initJs(WebView view, JSONArray actions, JSONArray events) { + "window.HybridgeGlobal = {" + " isReady : true" + ", version : " + HybridgeConst.VERSION + ", actions : " + actions.toString() + ", events : " + events.toString() + "};" - + "window.$ && $('#hybridgeTrigger').toggleClass('switch');" + "},0)"); + + "(window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" + + "},0)"); mIsInitialized = true; } From c33899871b9bb2df9a146c457fa520c52e750512 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Tue, 17 Jun 2014 09:16:39 +0200 Subject: [PATCH 38/64] EDIT PR comments 2 --- .../com/pdi/hybridge/HybridgeBroadcaster.java | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index cdc6f77..eb27000 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -24,8 +24,11 @@ public class HybridgeBroadcaster extends Observable { * Keeps track of the current HybridgeBroadcaster instances in the app based in each WebView * hash */ - private static SparseArray sClients = - new SparseArray(); + private static SparseArray sClients; + static { + // static initialization + sClients = new SparseArray(); + } private boolean mIsInitialized = false; @@ -37,20 +40,6 @@ public HybridgeBroadcaster() { mJsBuffer = new StringBuffer(""); } - public static HybridgeBroadcaster getInstance(WebView client) { - final int hash = client.hashCode(); - HybridgeBroadcaster instance = sClients.get(hash); - if (instance == null) { - instance = new HybridgeBroadcaster(); - sClients.put(hash, instance); - } - return instance; - } - - public static void destroy(WebView client) { - sClients.remove(client.hashCode()); - } - public void initJs(WebView view, JSONArray actions, JSONArray events) { runJsInWebView(view, "window.HybridgeGlobal || setTimeout(function () {" + "window.HybridgeGlobal = {" + " isReady : true" + ", version : " @@ -123,4 +112,22 @@ public void updateState(JSONObject data) { this.notifyObservers(data); Log.d(TAG, data.toString()); } + + /* + * Static Factory Methods + */ + + public static HybridgeBroadcaster getInstance(WebView client) { + final int hash = client.hashCode(); + HybridgeBroadcaster instance = sClients.get(hash); + if (instance == null) { + instance = new HybridgeBroadcaster(); + sClients.put(hash, instance); + } + return instance; + } + + public static void destroy(WebView client) { + sClients.remove(client.hashCode()); + } } From 16f458635ef019a934592e436dd469ed73476bb6 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Tue, 17 Jun 2014 09:41:37 +0200 Subject: [PATCH 39/64] EDIT PR comments 3 --- .../com/pdi/hybridge/HybridgeBroadcaster.java | 49 ++++++++++--------- .../pdi/hybridge/HybridgeWebChromeClient.java | 3 +- .../pdi/hybridge/HybridgeWebViewClient.java | 3 +- 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index eb27000..70fee37 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -20,23 +20,13 @@ public class HybridgeBroadcaster extends Observable { - /** - * Keeps track of the current HybridgeBroadcaster instances in the app based in each WebView - * hash - */ - private static SparseArray sClients; - static { - // static initialization - sClients = new SparseArray(); - } - private boolean mIsInitialized = false; private final String TAG = "HybridgeBroadcaster"; private StringBuffer mJsBuffer; - public HybridgeBroadcaster() { + private HybridgeBroadcaster() { mJsBuffer = new StringBuffer(""); } @@ -113,21 +103,34 @@ public void updateState(JSONObject data) { Log.d(TAG, data.toString()); } - /* - * Static Factory Methods + /** + * Factory class for HybridgeBroadcaster instantiation + * + * @author TID */ + public static class HybridgeBroadcasterFactory { + + /** + * Keeps track of the current HybridgeBroadcaster instances in the app based in each WebView + * hash + */ + private static SparseArray sClients; + static { + sClients = new SparseArray(); + } - public static HybridgeBroadcaster getInstance(WebView client) { - final int hash = client.hashCode(); - HybridgeBroadcaster instance = sClients.get(hash); - if (instance == null) { - instance = new HybridgeBroadcaster(); - sClients.put(hash, instance); + public static HybridgeBroadcaster getInstance(WebView client) { + final int hash = client.hashCode(); + HybridgeBroadcaster instance = sClients.get(hash); + if (instance == null) { + instance = new HybridgeBroadcaster(); + sClients.put(hash, instance); + } + return instance; } - return instance; - } - public static void destroy(WebView client) { - sClients.remove(client.hashCode()); + public static void destroy(WebView client) { + sClients.remove(client.hashCode()); + } } } diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java index f1e99dd..6deaa66 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java @@ -45,7 +45,8 @@ public final boolean onJsPrompt(WebView view, String url, String msg, String def try { json = new JSONObject(defValue); Log.v(mTag, "JSON parsed (Action " + action + ") : " + json.toString()); - executeJSONTask(action, json, result, HybridgeBroadcaster.getInstance(view), + executeJSONTask(action, json, result, + HybridgeBroadcaster.HybridgeBroadcasterFactory.getInstance(view), (Activity) view.getContext()); } catch (final JSONException e) { result.cancel(); diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java index 6358fa0..d932d33 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java @@ -35,7 +35,8 @@ public HybridgeWebViewClient(JsAction[] actions) { @Override public void onPageFinished(WebView view, String url) { - HybridgeBroadcaster.getInstance(view).initJs(view, mActions, mEvents); + HybridgeBroadcaster.HybridgeBroadcasterFactory.getInstance(view).initJs(view, mActions, + mEvents); } } From d9448453d729487325741dcde847ea60ef658772 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Tue, 17 Jun 2014 10:05:02 +0200 Subject: [PATCH 40/64] EDIT use WeakReference --- .../src/com/pdi/hybridge/HybridgeBroadcaster.java | 11 ++++++----- .../src/com/pdi/hybridge/HybridgeWebChromeClient.java | 3 ++- .../src/com/pdi/hybridge/HybridgeWebViewClient.java | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index 70fee37..11a3b40 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -16,6 +16,7 @@ import org.json.JSONArray; import org.json.JSONObject; +import java.lang.ref.WeakReference; import java.util.Observable; public class HybridgeBroadcaster extends Observable { @@ -114,16 +115,16 @@ public static class HybridgeBroadcasterFactory { * Keeps track of the current HybridgeBroadcaster instances in the app based in each WebView * hash */ - private static SparseArray sClients; + private static SparseArray> sClients; static { - sClients = new SparseArray(); + sClients = new SparseArray>(); } - public static HybridgeBroadcaster getInstance(WebView client) { + public static WeakReference getInstance(WebView client) { final int hash = client.hashCode(); - HybridgeBroadcaster instance = sClients.get(hash); + WeakReference instance = sClients.get(hash); if (instance == null) { - instance = new HybridgeBroadcaster(); + instance = new WeakReference(new HybridgeBroadcaster()); sClients.put(hash, instance); } return instance; diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java index 6deaa66..2ad68b6 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java @@ -17,6 +17,7 @@ import org.json.JSONException; import org.json.JSONObject; +import java.lang.ref.WeakReference; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; @@ -60,7 +61,7 @@ public final boolean onJsPrompt(WebView view, String url, String msg, String def "unchecked", "rawtypes" }) private void executeJSONTask(String action, JSONObject json, JsPromptResult result, - HybridgeBroadcaster hybridge, Activity activity) { + WeakReference hybridge, Activity activity) { final Class clazz = mActions.get(action); if (clazz != null) { AsyncTask task = null; diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java index d932d33..0bcc9a0 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java @@ -35,8 +35,8 @@ public HybridgeWebViewClient(JsAction[] actions) { @Override public void onPageFinished(WebView view, String url) { - HybridgeBroadcaster.HybridgeBroadcasterFactory.getInstance(view).initJs(view, mActions, - mEvents); + HybridgeBroadcaster.HybridgeBroadcasterFactory.getInstance(view).get() + .initJs(view, mActions, mEvents); } } From 4c0f05f9c92033661373ab634d43f2aabc4ba3ba Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Tue, 17 Jun 2014 11:29:07 +0200 Subject: [PATCH 41/64] EDIT PR comments 4 --- .../com/pdi/hybridge/HybridgeBroadcaster.java | 44 +++++++++---------- .../pdi/hybridge/HybridgeWebChromeClient.java | 6 +-- .../pdi/hybridge/HybridgeWebViewClient.java | 3 +- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index 11a3b40..75e940d 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -104,34 +104,30 @@ public void updateState(JSONObject data) { Log.d(TAG, data.toString()); } + /* + * Factory methods for HybridgeBroadcaster instantiation + */ + /** - * Factory class for HybridgeBroadcaster instantiation - * - * @author TID + * Keeps track of the current HybridgeBroadcaster instances in the app based in each WebView + * hash */ - public static class HybridgeBroadcasterFactory { - - /** - * Keeps track of the current HybridgeBroadcaster instances in the app based in each WebView - * hash - */ - private static SparseArray> sClients; - static { - sClients = new SparseArray>(); - } + private static SparseArray> sClients; + static { + sClients = new SparseArray>(); + } - public static WeakReference getInstance(WebView client) { - final int hash = client.hashCode(); - WeakReference instance = sClients.get(hash); - if (instance == null) { - instance = new WeakReference(new HybridgeBroadcaster()); - sClients.put(hash, instance); - } - return instance; + public static HybridgeBroadcaster getInstance(WebView client) { + final int hash = client.hashCode(); + WeakReference instance = sClients.get(hash); + if (instance == null || instance.get() == null) { + instance = new WeakReference(new HybridgeBroadcaster()); + sClients.put(hash, instance); } + return instance.get(); + } - public static void destroy(WebView client) { - sClients.remove(client.hashCode()); - } + public static void destroy(WebView client) { + sClients.remove(client.hashCode()); } } diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java index 2ad68b6..f1e99dd 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java @@ -17,7 +17,6 @@ import org.json.JSONException; import org.json.JSONObject; -import java.lang.ref.WeakReference; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; @@ -46,8 +45,7 @@ public final boolean onJsPrompt(WebView view, String url, String msg, String def try { json = new JSONObject(defValue); Log.v(mTag, "JSON parsed (Action " + action + ") : " + json.toString()); - executeJSONTask(action, json, result, - HybridgeBroadcaster.HybridgeBroadcasterFactory.getInstance(view), + executeJSONTask(action, json, result, HybridgeBroadcaster.getInstance(view), (Activity) view.getContext()); } catch (final JSONException e) { result.cancel(); @@ -61,7 +59,7 @@ public final boolean onJsPrompt(WebView view, String url, String msg, String def "unchecked", "rawtypes" }) private void executeJSONTask(String action, JSONObject json, JsPromptResult result, - WeakReference hybridge, Activity activity) { + HybridgeBroadcaster hybridge, Activity activity) { final Class clazz = mActions.get(action); if (clazz != null) { AsyncTask task = null; diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java index 0bcc9a0..6358fa0 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java @@ -35,8 +35,7 @@ public HybridgeWebViewClient(JsAction[] actions) { @Override public void onPageFinished(WebView view, String url) { - HybridgeBroadcaster.HybridgeBroadcasterFactory.getInstance(view).get() - .initJs(view, mActions, mEvents); + HybridgeBroadcaster.getInstance(view).initJs(view, mActions, mEvents); } } From 2c44379be6ea036aa68313e49881075987e1851d Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Wed, 18 Jun 2014 11:05:20 +0200 Subject: [PATCH 42/64] EDIT fix comments --- .../src/com/pdi/hybridge/HybridgeWebChromeClient.java | 2 +- .../src/com/pdi/hybridge/HybridgeWebViewClient.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java index f1e99dd..c6850c6 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebChromeClient.java @@ -61,7 +61,7 @@ public final boolean onJsPrompt(WebView view, String url, String msg, String def private void executeJSONTask(String action, JSONObject json, JsPromptResult result, HybridgeBroadcaster hybridge, Activity activity) { final Class clazz = mActions.get(action); - if (clazz != null) { + if (clazz != null && hybridge != null) { AsyncTask task = null; try { task = diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java index 6358fa0..786a375 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeWebViewClient.java @@ -35,7 +35,10 @@ public HybridgeWebViewClient(JsAction[] actions) { @Override public void onPageFinished(WebView view, String url) { - HybridgeBroadcaster.getInstance(view).initJs(view, mActions, mEvents); + super.onPageFinished(view, url); + final HybridgeBroadcaster hybridge = HybridgeBroadcaster.getInstance(view); + if (hybridge != null) { + hybridge.initJs(view, mActions, mEvents); + } } - } From 97b86f41ac455d64fde53617c61fca4526431bc2 Mon Sep 17 00:00:00 2001 From: Vitor Rodrigues Date: Mon, 23 Jun 2014 10:11:00 -0300 Subject: [PATCH 43/64] FIX timeout issue by increasing JS timeout time --- ios/Hybridge/Hybridge/HYBBridge.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m index f1e1f44..ad2458a 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.m +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -131,7 +131,7 @@ - (NSString *)prepareWebView:(UIWebView *)webView { @" events:%@" @" };" @" (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" - @"}, 100);"; + @"}, 500);"; NSArray *actions = [@[@"init"] arrayByAddingObjectsFromArray:[self.delegate bridgeActions:self]]; NSString *actionsString = [NSString hyb_JSONStringWithObject:actions]; From b890c8b00bfc05e3bc128094da67544a708320f7 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 27 Jun 2014 13:52:12 +0200 Subject: [PATCH 44/64] Fix unit tests --- ios/Hybridge/HybridgeTests/HYBBridgeTests.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m index 096fa5a..4226448 100644 --- a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m +++ b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m @@ -52,7 +52,7 @@ - (void)testPrepareWebView { @" events:[\"pause\",\"resume\",\"message\",\"ready\"]" @" };" @" (window.document.getElementById('hybridgeTrigger') || {}).className = 'switch';" - @"}, 0);"; + @"}, 500);"; [[[webView expect] andReturn:@"true"] stringByEvaluatingJavaScriptFromString:javascript]; From bc85e0892011482932510b0a7693395d8027755d Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 27 Jun 2014 14:00:05 +0200 Subject: [PATCH 45/64] Update sample code --- .../HybridgeSample/WebViewController.m | 12 +++++++++--- boilerplate/ios/HybridgeSample/Podfile.lock | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m index 40e676a..a66e3b4 100644 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m @@ -33,23 +33,29 @@ If you name your actions using snake_case (i.e. 'your_action'), the bridge will that action. */ -- (void)handleSomeActionWithData:(NSDictionary *)data { +- (NSDictionary *)handleSomeActionWithData:(NSDictionary *)data { NSLog(@"%s", __PRETTY_FUNCTION__); // Send a message event back to the web view [self.webView hyb_fireEvent:HYBEventMessage data:@{@"method": NSStringFromSelector(_cmd)}]; + + return @{ + @"foo": @"bar" + }; } -- (void)handleSomeOtherActionWithData:(NSDictionary *)data { +- (NSDictionary *)handleSomeOtherActionWithData:(NSDictionary *)data { NSLog(@"%s", __PRETTY_FUNCTION__); // Send a message event back to the web view [self.webView hyb_fireEvent:HYBEventMessage data:@{@"method": NSStringFromSelector(_cmd)}]; + + return nil; } /* If you wish to handle actions in a more generic way, you can implement: -- (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { +- (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { // Handle actions here return nil; } diff --git a/boilerplate/ios/HybridgeSample/Podfile.lock b/boilerplate/ios/HybridgeSample/Podfile.lock index b15936a..0c099ae 100644 --- a/boilerplate/ios/HybridgeSample/Podfile.lock +++ b/boilerplate/ios/HybridgeSample/Podfile.lock @@ -11,4 +11,4 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Hybridge: 5ace862416316c8eaee9df4c1c5b8c6f21b938e8 -COCOAPODS: 0.31.1 +COCOAPODS: 0.33.1 From 5c95796cb33a74375ce4fc10aef798471462c688 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 27 Jun 2014 14:01:21 +0200 Subject: [PATCH 46/64] Update sample documentation --- .../ios/HybridgeSample/HybridgeSample/WebViewController.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m index a66e3b4..fb6fba4 100644 --- a/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m +++ b/boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m @@ -29,8 +29,8 @@ - (NSArray *)bridgeActions:(HYBBridge *)bridge { /* If you name your actions using snake_case (i.e. 'your_action'), the bridge will look for a - a method with the signature `- (void)handleWithData:(NSDictionary *)data` to handle - that action. + a method with the signature `- (NSDictionary *)handleWithData:(NSDictionary *)data` + to handle that action. */ - (NSDictionary *)handleSomeActionWithData:(NSDictionary *)data { @@ -59,6 +59,6 @@ - (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary * // Handle actions here return nil; } - */ +*/ @end From c79593369baa5c238b1ddb7425dd121140385034 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 27 Jun 2014 15:20:43 +0200 Subject: [PATCH 47/64] Update readme --- README.md | 75 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index eeab4b1..a195518 100644 --- a/README.md +++ b/README.md @@ -161,29 +161,63 @@ public void update(Observable observable, Object data) { **[[⬆]](#index)** ###
iOS -* Compile the sources and copy the Hybridge static lib in your project `HYBHybridge.h` and `libHybridge.a`. -* Import `HYBHybridge.h` in your *UIWebView* controller. -* Bind the Hybridge singleton: +#### Installation +Add the following to your `Podfile` and run `$ pod install`. -```objective-c -_hybridge = [HYBHybridge sharedInstance] +``` ruby +pod 'Hybridge' ``` -* Implements your native `actions` in *blocks* with the handler `HybridgeHandlerBlock_t`: - -```objective-c -HybridgeHandlerBlock_t downloadHandler = ^(NSURLProtocol *url, NSString *data, NSHTTPURLResponse *response) { - NSDictionary *params = [_parser objectWithString:data]; - // Handle download with data from Javascript request - ... -}; + +If you don't have CocoaPods installed or integrated into your project, you can learn how to do so [here](http://cocoapods.org). + +#### Creating a Web View Controller +Hybridge provides `HYBWebViewController`, a convenience view controller that hosts both a web view and a bridge object to communicate with it. Users are encouraged to subclass `HYBWebViewController` and specify any supported bridge actions. + +```objc +#import + +@interface MyWebViewController : HYBWebViewController +@end ``` -* You'll parse the JSON `data` sent from Javascript as seen in the previous code snippet. -* Finally, subscribe each of your `actions` to the Hybridge by binding to the name you'll use to invoke it from Javascript. -```objective-c -[_hybridge subscribeAction:@"download" withHandler:downloadHandler]; +```objc +... +- (NSArray *)bridgeActions:(HYBBridge *)bridge { + return @[@"some_action", @"some_other_action"]; +} ``` +There are two different ways to handle bridge actions: + +1. Override `-bridgeDidReceiveAction:data:` + +- (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { + if ([action isEqualToString:@"some_action"]) { + // Handle 'some_action' + } else if ([action isEqualToString:@"some_other_action"]) { + // Handle 'some_other_action' + } + + // Return a JSON dictionary or `nil` + return nil; +} + +2. Implement a method with a special signature for each supported action. The bridge will look for methods with the signature `- (NSDictionary *)handleWithData:(NSDictionary *)data` + +```objc +- (NSDictionary *)handleSomeActionWithData:(NSDictionary *)data { + // Handle 'some_action' + return @{ @"foo": @"bar" }; +} + +- (NSDictionary *)handleSomeOtherActionWithData:(NSDictionary *)data { + // Handle 'some_other_action' + return nil; +} +``` + +Note the **CamelCase** in the method signature. If your action is named `some_action`, this becomes `SomeAction` in the method signature. + **[[⬆]](#index)** ### Boilerplate @@ -212,9 +246,10 @@ HybridgeBroadcaster.getInstance().fireJavascriptEvent(webView, Event.READY, json ``` ### iOS -Use *Hybridge* singleton to trigger events in Javascript: -```objective-c -[_hybridge fireEventInWebView:kHybridgeEventReady data:@"{foo : \"data\"}" web:self.webview] +Hybridge provides an `UIWebView` category that sports a convenience method to trigger events on the Javascript side. + +```objc +[self.webView hyb_fireEvent:HYBEventMessage data:@{ @"foo": @"bar" }]; ``` ### Javascript From 1aee14c5db2877fe96c222ed9db7762e2542ca36 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 27 Jun 2014 15:25:24 +0200 Subject: [PATCH 48/64] Update README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a195518..bfa49e5 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,7 @@ There are two different ways to handle bridge actions: 1. Override `-bridgeDidReceiveAction:data:` +```objc - (NSDictionary *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { if ([action isEqualToString:@"some_action"]) { // Handle 'some_action' @@ -201,6 +202,7 @@ There are two different ways to handle bridge actions: // Return a JSON dictionary or `nil` return nil; } +``` 2. Implement a method with a special signature for each supported action. The bridge will look for methods with the signature `- (NSDictionary *)handleWithData:(NSDictionary *)data` From fc75f76ac7e0cd034edfdd808360fe999d352878 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Wed, 2 Jul 2014 08:27:58 +0200 Subject: [PATCH 49/64] Check URL before trying to load a request --- ios/Hybridge/Hybridge/HYBWebViewController.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m index 59d5d8f..051e836 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.m +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -68,7 +68,9 @@ - (void)loadView { - (void)viewDidLoad { [super viewDidLoad]; - [self.webView loadRequest:[NSURLRequest requestWithURL:self.URL]]; + if (self.URL) { + [self.webView loadRequest:[NSURLRequest requestWithURL:self.URL]]; + } } - (void)viewWillAppear:(BOOL)animated { From 63eee6a420ad74db390d4d3b3979abc7d92d5697 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Tue, 15 Jul 2014 13:10:42 +0200 Subject: [PATCH 50/64] EDIT get proper intance --- README.md | 12 ++++++------ .../src/com/pdi/hybridge/HybridgeBroadcaster.java | 13 ++++++++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index eeab4b1..b41727e 100644 --- a/README.md +++ b/README.md @@ -139,21 +139,21 @@ webView.setWebViewClient(new HybridgeWebViewClient(JsActionImpl.values())); webView.setWebChromeClient(new HybridgeWebChromeClient(JsActionImpl.values())); ``` -* Implement `Observable` in your WebView and subscribe it in order to notificate Javascript the events received from `HybridgeBroadcaster`: +* Implement `Observable` in your WebView fragment and subscribe it in order to notificate Javascript the events received from `HybridgeBroadcaster`: ```java -HybridgeBroadcaster.getInstance().addObserver(this); +HybridgeBroadcaster.getInstance(mWebView).addObserver(this); ... @Override public void update(Observable observable, Object data) { JSONObject json = (JSONObject) data; if (json.has(HybridgeConst.EVENT_NAME)) { try { - HybridgeBroadcaster.getInstance().fireJavascriptEvent(mWebView, (Event) json.get(HybridgeConst.EVENT_NAME), json); + HybridgeBroadcaster.getInstance(mWebView).fireJavascriptEvent(mWebView, (Event) json.get(HybridgeConst.EVENT_NAME), json); } catch (JSONException e) { Log.e(mTag, "Problem with JSON object " + e.getMessage()); } } else { - HybridgeBroadcaster.getInstance().fireMessage(mWebView, json); + HybridgeBroadcaster.getInstance(mWebView).fireMessage(mWebView, json); } } ``` @@ -265,10 +265,10 @@ let's enumerate the available methods and properties from the Hybridge Javascrip Returns a [JQuery](http://jquery.com) [Promise](http://api.jquery.com/Types/#Promise) containing data returned from native or custom error. You can add a second function parameter `fallback` in case something goes wrong and you want to supply aditional user feedback as well as update your UI. * **ready(callback:Function)** - Function that executes the callback function once Hybridge has become enabled. If Hybridge was enabled at calling time, + Function that executes the callback function once Hybridge has become enabled. If Hybridge was enabled at calling time, the callback is executed inmediatly. The main difference with `addListener('ready', handler)` event subscription is that the event handler never becomes executed when the subscription happens and Hybridge was enabled - + ### Properties * **errors** Container object of customs errors returned by the Hybridge: diff --git a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java index 75e940d..38f1339 100644 --- a/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java +++ b/android/Hybridge/src/com/pdi/hybridge/HybridgeBroadcaster.java @@ -18,6 +18,7 @@ import java.lang.ref.WeakReference; import java.util.Observable; +import java.util.Observer; public class HybridgeBroadcaster extends Observable { @@ -104,6 +105,16 @@ public void updateState(JSONObject data) { Log.d(TAG, data.toString()); } + @Override + public void addObserver(Observer observer) { + super.addObserver(observer); + } + + @Override + public void deleteObserver(Observer observer) { + super.deleteObserver(observer); + } + /* * Factory methods for HybridgeBroadcaster instantiation */ @@ -117,7 +128,7 @@ public void updateState(JSONObject data) { sClients = new SparseArray>(); } - public static HybridgeBroadcaster getInstance(WebView client) { + public static synchronized HybridgeBroadcaster getInstance(WebView client) { final int hash = client.hashCode(); WeakReference instance = sClients.get(hash); if (instance == null || instance.get() == null) { From c2bed3aeba1c3cfac0700661703d00f0eb80e290 Mon Sep 17 00:00:00 2001 From: davidgarsan Date: Tue, 15 Jul 2014 13:13:30 +0200 Subject: [PATCH 51/64] EDIT update readme.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b41727e..3f3d416 100644 --- a/README.md +++ b/README.md @@ -206,9 +206,9 @@ You can communicate to Javascript from Android/iOS by triggering any of the defi * **message**: Send arbitrary data when required. ### Android -Use *HybridgeBroadcaster* singleton to trigger events in Javascript: +Use *HybridgeBroadcaster* instance to trigger events in Javascript: ```java -HybridgeBroadcaster.getInstance().fireJavascriptEvent(webView, Event.READY, jsonData); +HybridgeBroadcaster.getInstance(mWebView).fireJavascriptEvent(webView, Event.READY, jsonData); ``` ### iOS From b772fa6488d3ff64130da1ab83ebebb575ac9c99 Mon Sep 17 00:00:00 2001 From: David Cantelar Date: Tue, 15 Jul 2014 15:14:05 +0200 Subject: [PATCH 52/64] EDIT bump version --- js/hybridge.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/hybridge.js b/js/hybridge.js index 1fc5fa6..333585f 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -1,5 +1,5 @@ /*! - * tdigital-hybridge - v0.0.1 + * tdigital-hybridge - v1.2.0 * Bridge for mobile hybrid application between Javascript and native environment * (iOS & Android) in an AMD fashion. * From 0ee85a36e6cb1d9dfa55db09dbea4ecc4400ee54 Mon Sep 17 00:00:00 2001 From: David Cantelar Date: Tue, 15 Jul 2014 15:19:13 +0200 Subject: [PATCH 53/64] EDIT bump android version --- android/Hybridge/AndroidManifest.xml | 6 +++--- android/Hybridge/version.properties | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/android/Hybridge/AndroidManifest.xml b/android/Hybridge/AndroidManifest.xml index 33dc466..7bd9bb6 100644 --- a/android/Hybridge/AndroidManifest.xml +++ b/android/Hybridge/AndroidManifest.xml @@ -1,9 +1,9 @@ + android:versionCode="120" + android:versionName="1.2.0" > - \ No newline at end of file + diff --git a/android/Hybridge/version.properties b/android/Hybridge/version.properties index d5c3943..83cd022 100644 --- a/android/Hybridge/version.properties +++ b/android/Hybridge/version.properties @@ -2,5 +2,5 @@ #Version = ${build.platform.number}.${build.major.number}.${build.minor.number} build.revision.number=1 -build.major.number=0 +build.major.number=2 build.minor.number=0 From ed6ac3cead9d8da1d728bf3da0b934d6a520a389 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Tue, 15 Jul 2014 15:26:57 +0200 Subject: [PATCH 54/64] Update pod spec --- Hybridge.podspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Hybridge.podspec b/Hybridge.podspec index e76aaf5..f215bd3 100644 --- a/Hybridge.podspec +++ b/Hybridge.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Hybridge" - s.version = "1.1.0" + s.version = "1.2.0" s.summary = "Yet another javascript / mobile native simple bridge for hybrid apps, back and forth..." s.description = <<-DESC @@ -16,7 +16,7 @@ Pod::Spec.new do |s| s.platform = :ios s.ios.deployment_target = "6.0" - s.source = { :git => "https://github.com/gonzalezreal/tdigital-hybridge.git", :branch => "refactoring-ios" } + s.source = { :git => "https://github.com/telefonicaid/tdigital-hybridge.git", :tag => "1.2.0" } s.source_files = "ios/Hybridge/Hybridge/*.{h,m}" s.private_header_files = "ios/Hybridge/Hybridge/HYBURLProtocol.h", "ios/Hybridge/Hybridge/NSString+Hybridge.h" From 4c95622e4f85b7b0ec89318df872ba4388d45e9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Mendiara=20Ca=C3=B1ardo?= Date: Tue, 15 Jul 2014 15:48:00 +0200 Subject: [PATCH 55/64] IMPLEMENT vanillajs support --- README.md | 11 +++++------ bower.json | 5 ++--- js/hybridge.js | 17 +++++++++++++---- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 8c522b0..7fc1fac 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,12 @@ Hybridge follows [semantic versioning](http://semver.org/). In the `boilerplate` Since v1.2.0, `hybridge` is available in [bower](http://bower.io/). Bower will install `hybridge` itself and all its dependencies. ```sh -$ bower install --save hybridge +bower install --save hybridge ``` You can manually download the javascript [js/hybridge.js](js/hybridge.js) and use the traditional way. -Hybridge works in an AMD fashion, so you'll need [RequireJS](http://requirejs.org) for the loading. +Hybridge works in both an AMD/Vanilla javascript fashion. For vanilla javascript, it's available in `window.Hybridge` variable. You'll also need [JQuery](http://jquery.com) (version 1.8.3 or newer) for the Javascript part since [Deferred](http://api.jquery.com/category/deferred-object) object is used intensively. @@ -71,13 +71,12 @@ Load `hybridge.js` as a module in your AMD code. Simplest setup: require.config({ baseUrl: 'js/lib', paths: { - jquery: 'jquery', - hybridge: 'hybridge' + jquery: 'bower_components/jquery/dist/jquery', + hybridge: 'bower_components/hybridge/js/hybridge' } }); - requirejs(['hybridge'], - function (Hybridge) { + require(['hybridge'], function (Hybridge) { Hybridge.init({ 'environment' : 'ios' } diff --git a/bower.json b/bower.json index 29e9dcb..93964bc 100644 --- a/bower.json +++ b/bower.json @@ -12,7 +12,7 @@ "bridge", "hybrid" ], - "license": "AfferoGPLv3", + "license": "AGPLv3", "ignore": [ "android", "ios", @@ -21,7 +21,6 @@ "*.podspec" ], "dependencies": { - "jquery": "*", - "requirejs": "~2.1.0" + "jquery": ">=1.8.3" } } diff --git a/js/hybridge.js b/js/hybridge.js index 333585f..081b8e6 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -21,10 +21,19 @@ * please contact with contacto@tid.es */ -define([ - 'jquery' -], function ($) { +(function (factory) { + // Module systems magic dance. + if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { + // AMD + define(['jquery'], function ($) { + return factory($); + }); + } else { + // +``` + You can manually download the javascript [js/hybridge.js](js/hybridge.js) and use the traditional way. Hybridge works in both an AMD/Vanilla javascript fashion. For vanilla javascript, it's available in `window.Hybridge` variable. @@ -50,8 +55,17 @@ You'll also need [JQuery](http://jquery.com) (version 1.8.3 or newer) for the Ja ### Android +You can build your own Hybridge, but you can start with the latest version included at [hybridge.jar](boilerplate/android/HybridgeBoilerplate/libs/hybridge-1.2.0.jar) in the boilerplate code. + ### iOS +Add the following to your `Podfile` and run `$ pod install`. + +``` ruby +pod 'Hybridge' +``` + +If you don't have CocoaPods installed or integrated into your project, you can learn how to do so [here](http://cocoapods.org). **[[⬆]](#index)** @@ -176,14 +190,6 @@ public void update(Observable observable, Object data) { **[[⬆]](#index)** ### iOS -#### Installation -Add the following to your `Podfile` and run `$ pod install`. - -``` ruby -pod 'Hybridge' -``` - -If you don't have CocoaPods installed or integrated into your project, you can learn how to do so [here](http://cocoapods.org). #### Creating a Web View Controller Hybridge provides `HYBWebViewController`, a convenience view controller that hosts both a web view and a bridge object to communicate with it. Users are encouraged to subclass `HYBWebViewController` and specify any supported bridge actions. From a0528a9c61085ab6e272506ec82f31b60fe808a5 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Jul 2014 09:21:10 +0200 Subject: [PATCH 60/64] Update email --- Hybridge.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hybridge.podspec b/Hybridge.podspec index f215bd3..990a4a7 100644 --- a/Hybridge.podspec +++ b/Hybridge.podspec @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.license = { :type => "Affero GNU GPL v3", :file => "LICENSE.txt" } - s.authors = { 'David Garcia' => 'dgs30@tid.es', 'Guillermo Gonzalez' => 'gonzalezreal@icloud.com' } + s.authors = { 'David Garcia' => 'davidgarsan@gmail.com', 'Guillermo Gonzalez' => 'gonzalezreal@icloud.com' } s.platform = :ios s.ios.deployment_target = "6.0" From 5d2ba2bec55aae747d8db8afadb75f4a49e74082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Mendiara=20Ca=C3=B1ardo?= Date: Wed, 16 Jul 2014 09:32:55 +0200 Subject: [PATCH 61/64] UPDATE to strict UMD definition --- js/hybridge.js | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/js/hybridge.js b/js/hybridge.js index 379ce28..ff9685e 100644 --- a/js/hybridge.js +++ b/js/hybridge.js @@ -1,7 +1,7 @@ /*! * tdigital-hybridge - v1.2.0 * Bridge for mobile hybrid application between Javascript and native environment - * (iOS & Android) in an AMD fashion. + * (iOS & Android) * * Copyright 2013 Telefonica Investigación y Desarrollo, S.A.U * Licensed AfferoGPLv3 @@ -21,19 +21,15 @@ * please contact with contacto@tid.es */ - -(function (factory) { - // Module systems magic dance. - if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { - // AMD - define(['jquery'], function ($) { - return factory($); - }); +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); } else { - //

^$z$?p;5XDiar2=dbtX>Pnq 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 literal 0 HcmV?d00001 From 75d30d998f61848595514b017d1f934002f85792 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 12:42:37 +0200 Subject: [PATCH 14/64] Implement HYBURLProtocol --- ios/Hybridge/Hybridge/HYBURLProtocol.m | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/ios/Hybridge/Hybridge/HYBURLProtocol.m b/ios/Hybridge/Hybridge/HYBURLProtocol.m index 6b88cf0..5765e41 100644 --- a/ios/Hybridge/Hybridge/HYBURLProtocol.m +++ b/ios/Hybridge/Hybridge/HYBURLProtocol.m @@ -17,7 +17,7 @@ @implementation HYBURLProtocol + (BOOL)canInitWithRequest:(NSURLRequest *)request { NSString *host = [[[request URL] host] lowercaseString]; - return [host isEqualToString:HYBHostName]; + return [host isEqualToString:HYBHostName] && ([HYBBridge activeBridge] != nil); } + (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { @@ -25,7 +25,27 @@ + (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { } - (void)startLoading { - // TODO: implement + NSHTTPURLResponse *response = nil; + + if (![[self.request HTTPMethod] isEqualToString:kHTTPOptionsMethod]) { + NSString *action = [[[self.request URL] pathComponents] firstObject]; + + NSDictionary *headers = [self.request allHTTPHeaderFields]; + NSData *data = [headers[@"data"] dataUsingEncoding:NSUTF8StringEncoding]; + id JSONObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL]; + + response = [[HYBBridge activeBridge] sendAction:action data:JSONObject]; + } + + if (!response) { + response = [NSHTTPURLResponse hyb_responseWithURL:[self.request URL] statusCode:200]; + } + + [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; + [self.client URLProtocolDidFinishLoading:self]; +} + +- (void)stopLoading { } @end From ec02a4ac3467e5bebdcd8b9b1f0f82b7410b212e Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 12:54:00 +0200 Subject: [PATCH 15/64] Add NSHTTPURLResponse category tests --- .../Hybridge/NSHTTPURLResponse+Hybridge.m | 3 +- .../NSHTTPURLResponseHybridgeTests.m | 50 +++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m diff --git a/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m b/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m index 5989005..77c3c93 100644 --- a/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m +++ b/ios/Hybridge/Hybridge/NSHTTPURLResponse+Hybridge.m @@ -27,7 +27,8 @@ + (instancetype)hyb_responseWithURL:(NSURL *)url statusCode:(NSInteger)statusCod + (instancetype)hyb_responseWithAction:(NSString *)action statusCode:(NSInteger)statusCode { NSParameterAssert(action); - NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:HYBHostName path:action]; + NSString *path = [NSString stringWithFormat:@"/%@", action]; + NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:HYBHostName path:path]; return [self hyb_responseWithURL:url statusCode:statusCode]; } diff --git a/ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m b/ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m new file mode 100644 index 0000000..4ab6fe0 --- /dev/null +++ b/ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m @@ -0,0 +1,50 @@ +// +// NSHTTPURLResponseHybridgeTests.m +// Hybridge +// +// Created by guille on 04/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import +#import + +@interface NSHTTPURLResponseHybridgeTests : XCTestCase + +@property (strong, nonatomic) NSDictionary *expectedHeaders; + +@end + +@implementation NSHTTPURLResponseHybridgeTests + +- (void)setUp { + [super setUp]; + + self.expectedHeaders = @{ + @"Content-Type": @"application/json; charset=utf-8", + @"Access-Control-Allow-Origin": @"*", + @"Access-Control-Allow-Headers": @"Content-Type, data" + }; +} + +- (void)tearDown { + self.expectedHeaders = nil; + [super tearDown]; +} + +- (void)testResponseWithURL { + NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:HYBHostName path:@"/some_action"]; + NSHTTPURLResponse *response = [NSHTTPURLResponse hyb_responseWithURL:url statusCode:200]; + + XCTAssertEqualObjects([NSURL URLWithString:@"http://hybridge/some_action"], response.URL, @"should initialize URL"); + XCTAssertEqual((NSInteger)200, response.statusCode, @"should initialize statusCode"); + XCTAssertEqualObjects(self.expectedHeaders, response.allHeaderFields, @"should initialize headers"); +} + +- (void)testResponseWithAction { + NSHTTPURLResponse *response = [NSHTTPURLResponse hyb_responseWithAction:@"some_action" statusCode:200]; + + XCTAssertEqualObjects([NSURL URLWithString:@"http://hybridge/some_action"], response.URL, @"should initialize URL"); +} + +@end From 11c9283a149688243bb64739f7d16ca0f87295a5 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 14:35:55 +0200 Subject: [PATCH 16/64] Add NSString category --- ios/Hybridge/Hybridge/NSString+Hybridge.h | 15 ++++++ ios/Hybridge/Hybridge/NSString+Hybridge.m | 25 ++++++++++ ios/Hybridge/Hybridge/UIWebView+Hybridge.h | 5 +- ios/Hybridge/Hybridge/UIWebView+Hybridge.m | 6 ++- ios/Hybridge/HybridgeTests/HYBTestCase.h | 24 +++++++++ ios/Hybridge/HybridgeTests/HYBTestCase.m | 50 +++++++++++++++++++ .../HybridgeTests/NSStringHybridgeTests.m | 33 ++++++++++++ 7 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 ios/Hybridge/Hybridge/NSString+Hybridge.h create mode 100644 ios/Hybridge/Hybridge/NSString+Hybridge.m create mode 100644 ios/Hybridge/HybridgeTests/HYBTestCase.h create mode 100644 ios/Hybridge/HybridgeTests/HYBTestCase.m create mode 100644 ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m diff --git a/ios/Hybridge/Hybridge/NSString+Hybridge.h b/ios/Hybridge/Hybridge/NSString+Hybridge.h new file mode 100644 index 0000000..629abb2 --- /dev/null +++ b/ios/Hybridge/Hybridge/NSString+Hybridge.h @@ -0,0 +1,15 @@ +// +// NSString+Hybridge.h +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import + +@interface NSString (Hybridge) + ++ (instancetype)hyb_javascriptStringWithEvent:(NSString *)event data:(NSDictionary *)data; + +@end diff --git a/ios/Hybridge/Hybridge/NSString+Hybridge.m b/ios/Hybridge/Hybridge/NSString+Hybridge.m new file mode 100644 index 0000000..3ad3ab0 --- /dev/null +++ b/ios/Hybridge/Hybridge/NSString+Hybridge.m @@ -0,0 +1,25 @@ +// +// NSString+Hybridge.m +// Hybridge +// +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. +// + +#import "NSString+Hybridge.h" + +@implementation NSString (Hybridge) + ++ (instancetype)hyb_javascriptStringWithEvent:(NSString *)event data:(NSDictionary *)data { + NSParameterAssert(event); + + static NSString * const kFormat = @"HybridgeGlobal.fireEvent(\"%@\", %@)"; + + NSData *JSONData = [NSJSONSerialization dataWithJSONObject:data ? : @{} + options:0 + error:NULL]; + NSString *JSONString = [[NSString alloc] initWithData:JSONData encoding:NSUTF8StringEncoding]; + return [NSString stringWithFormat:kFormat, event, JSONString]; +} + +@end diff --git a/ios/Hybridge/Hybridge/UIWebView+Hybridge.h b/ios/Hybridge/Hybridge/UIWebView+Hybridge.h index 6b3fd31..0490763 100644 --- a/ios/Hybridge/Hybridge/UIWebView+Hybridge.h +++ b/ios/Hybridge/Hybridge/UIWebView+Hybridge.h @@ -12,11 +12,12 @@ /** Fires a Hybridge event in the receiver. - This method returns immediately without waiting for the event to be processed. @param event The event to fire. @param data A dictionary containing data to pass along with the event. + + @return The result of firing the event. */ -- (void)hyb_fireEvent:(NSString *)event data:(NSDictionary *)data; +- (NSString *)hyb_fireEvent:(NSString *)event data:(NSDictionary *)data; @end diff --git a/ios/Hybridge/Hybridge/UIWebView+Hybridge.m b/ios/Hybridge/Hybridge/UIWebView+Hybridge.m index b3816b7..683a3d2 100644 --- a/ios/Hybridge/Hybridge/UIWebView+Hybridge.m +++ b/ios/Hybridge/Hybridge/UIWebView+Hybridge.m @@ -7,11 +7,13 @@ // #import "UIWebView+Hybridge.h" +#import "NSString+Hybridge.h" @implementation UIWebView (Hybridge) -- (void)hyb_fireEvent:(NSString *)event data:(NSDictionary *)data { - // TODO: implement +- (NSString *)hyb_fireEvent:(NSString *)event data:(NSDictionary *)data { + NSString *javascript = [NSString hyb_javascriptStringWithEvent:event data:data]; + return [self stringByEvaluatingJavaScriptFromString:javascript]; } @end diff --git a/ios/Hybridge/HybridgeTests/HYBTestCase.h b/ios/Hybridge/HybridgeTests/HYBTestCase.h new file mode 100644 index 0000000..8938b57 --- /dev/null +++ b/ios/Hybridge/HybridgeTests/HYBTestCase.h @@ -0,0 +1,24 @@ +// +// HYBTestCase.h +// Hybridge +// +// Created by guille on 04/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import +#import +#import + +@interface HYBTestCase : XCTestCase + +// Calls +[OCMockObject mockForClass:] and adds the mock and call -verify on it during -tearDown. +- (id)autoVerifiedMockForClass:(Class)aClass; + +// Calls +[OCMockObject partialMockForClass:] and adds the mock and call -verify on it during -tearDown. +- (id)autoVerifiedPartialMockForObject:(id)object; + +// Calls -verify on the mock during -tearDown. +- (void)verifyDuringTearDown:(id)mock; + +@end diff --git a/ios/Hybridge/HybridgeTests/HYBTestCase.m b/ios/Hybridge/HybridgeTests/HYBTestCase.m new file mode 100644 index 0000000..b0c8eca --- /dev/null +++ b/ios/Hybridge/HybridgeTests/HYBTestCase.m @@ -0,0 +1,50 @@ +// +// HYBTestCase.m +// Hybridge +// +// Created by guille on 04/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import "HYBTestCase.h" + +@interface HYBTestCase () + +@property (strong, nonatomic) NSMutableArray *mocksToVerify; + +@end + +@implementation HYBTestCase + +- (void)setUp { + [super setUp]; +} + +- (void)tearDown { + for (id mock in self.mocksToVerify) { + [mock verify]; + } + self.mocksToVerify = nil; + [super tearDown]; +} + +- (id)autoVerifiedMockForClass:(Class)aClass { + id mock = [OCMockObject mockForClass:aClass]; + [self verifyDuringTearDown:mock]; + return mock; +} + +- (id)autoVerifiedPartialMockForObject:(id)object { + id mock = [OCMockObject partialMockForObject:object]; + [self verifyDuringTearDown:mock]; + return mock; +} + +- (void)verifyDuringTearDown:(id)mock { + if (self.mocksToVerify == nil) { + self.mocksToVerify = [NSMutableArray array]; + } + [self.mocksToVerify addObject:mock]; +} + +@end diff --git a/ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m b/ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m new file mode 100644 index 0000000..b9d8026 --- /dev/null +++ b/ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m @@ -0,0 +1,33 @@ +// +// NSStringHybridgeTests.m +// Hybridge +// +// Created by guille on 04/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import +#import + +#import "NSString+Hybridge.h" + +@interface NSStringHybridgeTests : XCTestCase + +@end + +@implementation NSStringHybridgeTests + +- (void)testJavascriptStringWithEvent { + NSString *javascript = [NSString hyb_javascriptStringWithEvent:HYBEventReady data:nil]; + + XCTAssertEqualObjects(@"HybridgeGlobal.fireEvent(\"ready\", {})", javascript, @"should return a fire event method call"); +} + +- (void)testJavascriptStringWithEventAndData { + NSString *javascript = [NSString hyb_javascriptStringWithEvent:HYBEventMessage + data:@{ @"text": @"Testing" }]; + + XCTAssertEqualObjects(@"HybridgeGlobal.fireEvent(\"message\", {\"text\":\"Testing\"})", javascript, @"should return a fire event method call"); +} + +@end From 00528155e9b821b8391cdee5b34e04f1d04328da Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 16:05:42 +0200 Subject: [PATCH 17/64] Implement bridge and tests --- ios/Hybridge/Hybridge/HYBBridge.h | 3 +- ios/Hybridge/Hybridge/HYBBridge.m | 48 ++++++-- ios/Hybridge/Hybridge/HYBURLProtocol.m | 17 ++- ios/Hybridge/Hybridge/NSString+Hybridge.h | 2 + ios/Hybridge/Hybridge/NSString+Hybridge.m | 10 +- ios/Hybridge/HybridgeTests/HYBBridgeTests.m | 127 ++++++++++++++++++++ 6 files changed, 186 insertions(+), 21 deletions(-) create mode 100644 ios/Hybridge/HybridgeTests/HYBBridgeTests.m diff --git a/ios/Hybridge/Hybridge/HYBBridge.h b/ios/Hybridge/Hybridge/HYBBridge.h index e949b7f..278837f 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.h +++ b/ios/Hybridge/Hybridge/HYBBridge.h @@ -42,8 +42,9 @@ This method should be called after the web view has finished loading the HTML contents. @param webView The `UIWebView` to configure. + @return The result of preparing the web view. */ -- (void)prepareWebView:(UIWebView *)webView; +- (NSString *)prepareWebView:(UIWebView *)webView; /** This method is called by the URL loading system when a Hybridge request is made. diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m index ceb724d..122d172 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.m +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -7,6 +7,10 @@ // #import "HYBBridge.h" +#import "HYBURLProtocol.h" +#import "HYBEvent.h" + +#import "NSString+Hybridge.h" #import "NSHTTPURLResponse+Hybridge.h" static SEL HYBSelectorWithAction(NSString *action) { @@ -38,21 +42,47 @@ static SEL HYBSelectorWithAction(NSString *action) { @implementation HYBBridge ++ (void)initialize { + if (self == [HYBBridge class]) { + [NSURLProtocol registerClass:[HYBURLProtocol class]]; + } +} + + (NSInteger)version { return 1; } +static HYBBridge *activeBridge; + + (void)setActiveBridge:(HYBBridge *)bridge { - // TODO: implement + activeBridge = bridge; } + (instancetype)activeBridge { - // TODO: implement - return nil; + return activeBridge; } -- (void)prepareWebView:(UIWebView *)webView { - // TODO: implement +- (NSString *)prepareWebView:(UIWebView *)webView { + NSParameterAssert(webView); + + static NSString * const kFormat = @"window.HybridgeGlobal || setTimeout(function() {" + @" window.HybridgeGlobal = {" + @" isReady:true," + @" version:%@," + @" actions:%@," + @" events:%@" + @" };" + @" window.$ && $('#hybridgeTrigger').toggleClass('switch');" + @"}, 0)"; + + NSArray *actions = [self.delegate bridgeActions:self]; + NSString *actionsString = [NSString hyb_JSONStringWithObject:actions ? : @[]]; + + NSArray *events = @[HYBEventPause, HYBEventResume, HYBEventMessage, HYBEventReady]; + NSString *eventsString = [NSString hyb_JSONStringWithObject:events]; + + NSString *javascript = [NSString stringWithFormat:kFormat, @([[self class] version]), actionsString, eventsString]; + return [webView stringByEvaluatingJavaScriptFromString:javascript]; } - (NSHTTPURLResponse *)sendAction:(NSString *)action data:(NSDictionary *)data { @@ -65,13 +95,11 @@ - (NSHTTPURLResponse *)sendAction:(NSString *)action data:(NSDictionary *)data { NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; invocation.target = self.delegate; invocation.selector = selector; - - [invocation invoke]; + [invocation setArgument:&data atIndex:2]; - __unsafe_unretained id result = nil; - [invocation getReturnValue:&result]; + [invocation invoke]; - return result; + return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; } else if ([self.delegate respondsToSelector:@selector(bridge:didReceiveAction:data:)]) { return [self.delegate bridge:self didReceiveAction:action data:data]; } diff --git a/ios/Hybridge/Hybridge/HYBURLProtocol.m b/ios/Hybridge/Hybridge/HYBURLProtocol.m index 5765e41..fedbc69 100644 --- a/ios/Hybridge/Hybridge/HYBURLProtocol.m +++ b/ios/Hybridge/Hybridge/HYBURLProtocol.m @@ -28,13 +28,18 @@ - (void)startLoading { NSHTTPURLResponse *response = nil; if (![[self.request HTTPMethod] isEqualToString:kHTTPOptionsMethod]) { - NSString *action = [[[self.request URL] pathComponents] firstObject]; + NSArray *components = [[self.request URL] pathComponents]; + NSString *action = [components count] > 1 ? components[1] : nil; - NSDictionary *headers = [self.request allHTTPHeaderFields]; - NSData *data = [headers[@"data"] dataUsingEncoding:NSUTF8StringEncoding]; - id JSONObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL]; - - response = [[HYBBridge activeBridge] sendAction:action data:JSONObject]; + if (action) { + NSDictionary *headers = [self.request allHTTPHeaderFields]; + NSData *data = [headers[@"data"] dataUsingEncoding:NSUTF8StringEncoding]; + id JSONObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL]; + + response = [[HYBBridge activeBridge] sendAction:action data:JSONObject]; + } else { + response = [NSHTTPURLResponse hyb_responseWithURL:[self.request URL] statusCode:404]; + } } if (!response) { diff --git a/ios/Hybridge/Hybridge/NSString+Hybridge.h b/ios/Hybridge/Hybridge/NSString+Hybridge.h index 629abb2..456d161 100644 --- a/ios/Hybridge/Hybridge/NSString+Hybridge.h +++ b/ios/Hybridge/Hybridge/NSString+Hybridge.h @@ -12,4 +12,6 @@ + (instancetype)hyb_javascriptStringWithEvent:(NSString *)event data:(NSDictionary *)data; ++ (instancetype)hyb_JSONStringWithObject:(id)object; + @end diff --git a/ios/Hybridge/Hybridge/NSString+Hybridge.m b/ios/Hybridge/Hybridge/NSString+Hybridge.m index 3ad3ab0..e637d36 100644 --- a/ios/Hybridge/Hybridge/NSString+Hybridge.m +++ b/ios/Hybridge/Hybridge/NSString+Hybridge.m @@ -15,11 +15,13 @@ + (instancetype)hyb_javascriptStringWithEvent:(NSString *)event data:(NSDictiona static NSString * const kFormat = @"HybridgeGlobal.fireEvent(\"%@\", %@)"; - NSData *JSONData = [NSJSONSerialization dataWithJSONObject:data ? : @{} - options:0 - error:NULL]; - NSString *JSONString = [[NSString alloc] initWithData:JSONData encoding:NSUTF8StringEncoding]; + NSString *JSONString = [self hyb_JSONStringWithObject:data ? : @{}]; return [NSString stringWithFormat:kFormat, event, JSONString]; } ++ (instancetype)hyb_JSONStringWithObject:(id)object { + NSData *JSONData = [NSJSONSerialization dataWithJSONObject:object options:0 error:NULL]; + return [[NSString alloc] initWithData:JSONData encoding:NSUTF8StringEncoding]; +} + @end diff --git a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m new file mode 100644 index 0000000..16b8073 --- /dev/null +++ b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m @@ -0,0 +1,127 @@ +// +// HYBBridgeTests.m +// Hybridge +// +// Created by guille on 04/04/14. +// Copyright (c) 2014 Telefonica I+D. All rights reserved. +// + +#import "HYBTestCase.h" + +@interface HYBBridgeTests : HYBTestCase + +@property (nonatomic) BOOL didReceiveActionCalled; +@property (nonatomic) BOOL handlerCalled; + +@end + +@implementation HYBBridgeTests + +- (void)setUp { + [super setUp]; + + self.didReceiveActionCalled = NO; + self.handlerCalled = NO; +} + +- (void)tearDown { + [HYBBridge setActiveBridge:nil]; + [super tearDown]; +} + +- (void)testVersion { + XCTAssertEqual((NSInteger)1, [HYBBridge version], @"should return the right version"); +} + +- (void)testActiveBridge { + HYBBridge *bridge = [HYBBridge new]; + [HYBBridge setActiveBridge:bridge]; + + XCTAssertEqualObjects(bridge, [HYBBridge activeBridge], @"should return the active bridge"); +} + +- (void)testPrepareWebView { + id webView = [self autoVerifiedMockForClass:[UIWebView class]]; + + NSString *javascript = @"window.HybridgeGlobal || setTimeout(function() {" + @" window.HybridgeGlobal = {" + @" isReady:true," + @" version:1," + @" actions:[\"test\",\"something\"]," + @" events:[\"pause\",\"resume\",\"message\",\"ready\"]" + @" };" + @" window.$ && $('#hybridgeTrigger').toggleClass('switch');" + @"}, 0)"; + + [[[webView expect] andReturn:@"ok"] stringByEvaluatingJavaScriptFromString:javascript]; + + HYBBridge *bridge = [HYBBridge new]; + bridge.delegate = self; + + NSString *result = [bridge prepareWebView:webView]; + XCTAssertEqualObjects(@"ok", result, @"should return the value returned by the web view"); +} + +- (void)testSendAction { + HYBBridge *bridge = [HYBBridge new]; + bridge.delegate = self; + + [HYBBridge setActiveBridge:bridge]; + + NSURL *url = [NSURL URLWithString:@"http://hybridge/test"]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"{\"foo\":\"bar\"}" forHTTPHeaderField:@"data"]; + + NSHTTPURLResponse *response = nil; + [NSURLConnection sendSynchronousRequest:request + returningResponse:&response + error:NULL]; + XCTAssertTrue(self.didReceiveActionCalled, @"should call the delegate"); + XCTAssertEqual((NSInteger)200, [response statusCode], @"should return 200 OK"); +} + +- (void)testSendActionWithMethodHandler { + HYBBridge *bridge = [HYBBridge new]; + bridge.delegate = self; + + [HYBBridge setActiveBridge:bridge]; + + NSURL *url = [NSURL URLWithString:@"http://hybridge/something"]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"{\"bar\":\"foo\"}" forHTTPHeaderField:@"data"]; + + NSHTTPURLResponse *response = nil; + [NSURLConnection sendSynchronousRequest:request + returningResponse:&response + error:NULL]; + XCTAssertTrue(self.handlerCalled, @"should call the handler method"); + XCTAssertEqual((NSInteger)200, [response statusCode], @"should return 200 OK"); +} + +#pragma mark - HYBBridgeDelegate + +- (NSArray *)bridgeActions:(HYBBridge *)bridge { + return @[@"test", @"something"]; +} + +- (NSHTTPURLResponse *)bridge:(HYBBridge *)bridge + didReceiveAction:(NSString *)action + data:(NSDictionary *)data +{ + XCTAssertEqualObjects(@"test", action, @"should receive a 'test' action"); + + NSDictionary *expectedData = @{@"foo": @"bar"}; + XCTAssertEqualObjects(expectedData, data, @"should receive the correct data"); + + self.didReceiveActionCalled = YES; + return nil; +} + +- (void)handleSomethingWithData:(NSDictionary *)data { + NSDictionary *expectedData = @{@"bar": @"foo"}; + XCTAssertEqualObjects(expectedData, data, @"should receive the correct data"); + + self.handlerCalled = YES; +} + +@end From 5b15f641d286a1f9f75e7ab2593bf7620a91ac6e Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 16:53:32 +0200 Subject: [PATCH 18/64] Add a web view controller --- ios/Hybridge/Hybridge/HYBWebViewController.h | 2 +- ios/Hybridge/Hybridge/HYBWebViewController.m | 56 ++++++++++++++++++-- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.h b/ios/Hybridge/Hybridge/HYBWebViewController.h index f465028..8d07ebe 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.h +++ b/ios/Hybridge/Hybridge/HYBWebViewController.h @@ -13,7 +13,7 @@ /** A view controller that manages a web view and the bridge to communicate with it. */ -@interface HYBWebViewController : UIViewController +@interface HYBWebViewController : UIViewController @property (strong, nonatomic, readonly) UIWebView *webView; @property (strong, nonatomic, readonly) HYBBridge *bridge; diff --git a/ios/Hybridge/Hybridge/HYBWebViewController.m b/ios/Hybridge/Hybridge/HYBWebViewController.m index 100203b..d1b3e63 100644 --- a/ios/Hybridge/Hybridge/HYBWebViewController.m +++ b/ios/Hybridge/Hybridge/HYBWebViewController.m @@ -11,28 +11,74 @@ @interface HYBWebViewController () +@property (strong, nonatomic) NSURL *URL; + @end @implementation HYBWebViewController +#pragma mark - Properties + +- (UIWebView *)webView { + return (UIWebView *)self.view; +} + +#pragma mark - Lifecycle + +- (void)dealloc { + [self.webView stopLoading]; + self.webView.delegate = nil; +} + - (id)initWithURL:(NSURL *)url { self = [super initWithNibName:nil bundle:nil]; if (self) { - // Custom initialization + _bridge = [[HYBBridge alloc] init]; + _URL = url; } return self; } +- (void)loadView { + if ([self nibName]) { + [super loadView]; + NSAssert([self.view isKindOfClass:[UIWebView class]], @"HYBWebViewController view must be a UIWebView instance."); + } else { + UIWebView *view = [[UIWebView alloc] init]; + view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + view.scalesPageToFit = YES; + view.delegate = self; + + self.view = view; + } +} + - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + + [self.webView loadRequest:[NSURLRequest requestWithURL:self.URL]]; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [HYBBridge setActiveBridge:self.bridge]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + if (self.bridge == [HYBBridge activeBridge]) { + [HYBBridge setActiveBridge:nil]; + } +} + +#pragma mark - UIWebViewDelegate + +- (void)webViewDidFinishLoad:(UIWebView *)webView { + [self.bridge prepareWebView:webView]; } @end From 056da87befc506ac5dab7e276ae5e7a48fb1d491 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Fri, 4 Apr 2014 17:36:46 +0200 Subject: [PATCH 19/64] Update pod spec --- ios/Hybridge/Hybridge.podspec | 26 +++++++ .../Hybridge.xcodeproj/project.pbxproj | 78 ++++++++++++------- 2 files changed, 77 insertions(+), 27 deletions(-) create mode 100644 ios/Hybridge/Hybridge.podspec diff --git a/ios/Hybridge/Hybridge.podspec b/ios/Hybridge/Hybridge.podspec new file mode 100644 index 0000000..e14d966 --- /dev/null +++ b/ios/Hybridge/Hybridge.podspec @@ -0,0 +1,26 @@ +Pod::Spec.new do |s| + s.name = "Hybridge" + s.version = "1.1.0" + s.summary = "Yet another javascript / mobile native simple bridge for hybrid apps, back and forth..." + + s.description = <<-DESC + When developing hybrid apps surely you'll need to access different native features and resources. + Out there are plenty of bridge solutions. Hybridge tries to make easy communication and data + exchanging between native (iOS & Android) and Javascript worlds, avoiding too much overhead. + DESC + s.homepage = "https://github.com/telefonicaid/tdigital-hybridge" + + s.license = { :type => "Affero GNU GPL v3", :file => "LICENSE" } + + s.authors = { 'David Garcia' => 'dgs30@tid.es', 'Guillermo Gonzalez' => 'gonzalezreal@icloud.com' } + + s.platform = :ios + s.ios.deployment_target = "6.0" + s.source = { :git => "https://github.com/gonzalezreal/tdigital-hybridge.git", :branch => "refactoring-ios" } + + s.source_files = "ios/Hybridge/Hybridge/*.{h,m}" + s.private_header_files = "ios/Hybridge/Hybridge/HYBURLProtocol.h", "ios/Hybridge/Hybridge/NSString+Hybridge.h" + + s.frameworks = "Foundation", "UIKit" + s.requires_arc = true +end diff --git a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj index f04f96f..9d615ad 100644 --- a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj +++ b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj @@ -14,7 +14,6 @@ 992DEDB618ED963A005CD768 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 992DEDB518ED963A005CD768 /* UIKit.framework */; }; 992DEDB918ED963A005CD768 /* libHybridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 992DEDA118ED963A005CD768 /* libHybridge.a */; }; 992DEDBF18ED963A005CD768 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 992DEDBD18ED963A005CD768 /* InfoPlist.strings */; }; - 992DEDC118ED963A005CD768 /* HybridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 992DEDC018ED963A005CD768 /* HybridgeTests.m */; }; 992DEDCC18ED97FB005CD768 /* Hybridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 992DEDA918ED963A005CD768 /* Hybridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; 992DEDCF18ED9BA7005CD768 /* HYBBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 992DEDCD18ED9BA7005CD768 /* HYBBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; 992DEDD018ED9BA7005CD768 /* HYBBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 992DEDCE18ED9BA7005CD768 /* HYBBridge.m */; }; @@ -28,7 +27,13 @@ 9960C8AD18EE914600FEC7DB /* UIWebView+Hybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */; }; 9960C8B018EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9960C8B118EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */; }; - 9960C8C518EEC19200FEC7DB /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9960C8BD18EEC19200FEC7DB /* libOCMock.a */; }; + 9960C8D118EEC2CE00FEC7DB /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9960C8C918EEC2CE00FEC7DB /* libOCMock.a */; }; + 9960C8D318EEC45800FEC7DB /* NSHTTPURLResponseHybridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8D218EEC45800FEC7DB /* NSHTTPURLResponseHybridgeTests.m */; }; + 9960C8D818EED54200FEC7DB /* HYBTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8D718EED54200FEC7DB /* HYBTestCase.m */; }; + 9960C8DB18EEDB8000FEC7DB /* NSString+Hybridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9960C8D918EEDB8000FEC7DB /* NSString+Hybridge.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9960C8DC18EEDB8000FEC7DB /* NSString+Hybridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8DA18EEDB8000FEC7DB /* NSString+Hybridge.m */; }; + 9960C8DE18EEDC6500FEC7DB /* NSStringHybridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8DD18EEDC6500FEC7DB /* NSStringHybridgeTests.m */; }; + 9960C8E018EEE83A00FEC7DB /* HYBBridgeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9960C8DF18EEE83A00FEC7DB /* HYBBridgeTests.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -64,7 +69,6 @@ 992DEDB518ED963A005CD768 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 992DEDBC18ED963A005CD768 /* HybridgeTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HybridgeTests-Info.plist"; sourceTree = ""; }; 992DEDBE18ED963A005CD768 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 992DEDC018ED963A005CD768 /* HybridgeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HybridgeTests.m; sourceTree = ""; }; 992DEDCD18ED9BA7005CD768 /* HYBBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBBridge.h; sourceTree = ""; }; 992DEDCE18ED9BA7005CD768 /* HYBBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBBridge.m; sourceTree = ""; }; 992DEDD118ED9C5C005CD768 /* HYBEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBEvent.h; sourceTree = ""; }; @@ -77,13 +81,20 @@ 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+Hybridge.m"; sourceTree = ""; }; 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSHTTPURLResponse+Hybridge.h"; sourceTree = ""; }; 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSHTTPURLResponse+Hybridge.m"; sourceTree = ""; }; - 9960C8BD18EEC19200FEC7DB /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; - 9960C8BF18EEC19200FEC7DB /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; - 9960C8C018EEC19200FEC7DB /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; - 9960C8C118EEC19200FEC7DB /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; - 9960C8C218EEC19200FEC7DB /* OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = ""; }; - 9960C8C318EEC19200FEC7DB /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = ""; }; - 9960C8C418EEC19200FEC7DB /* OCMockRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockRecorder.h; sourceTree = ""; }; + 9960C8C918EEC2CE00FEC7DB /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; + 9960C8CB18EEC2CE00FEC7DB /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; + 9960C8CC18EEC2CE00FEC7DB /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; + 9960C8CD18EEC2CE00FEC7DB /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; + 9960C8CE18EEC2CE00FEC7DB /* OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = ""; }; + 9960C8CF18EEC2CE00FEC7DB /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = ""; }; + 9960C8D018EEC2CE00FEC7DB /* OCMockRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockRecorder.h; sourceTree = ""; }; + 9960C8D218EEC45800FEC7DB /* NSHTTPURLResponseHybridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSHTTPURLResponseHybridgeTests.m; sourceTree = ""; }; + 9960C8D618EED54200FEC7DB /* HYBTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYBTestCase.h; sourceTree = ""; }; + 9960C8D718EED54200FEC7DB /* HYBTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBTestCase.m; sourceTree = ""; }; + 9960C8D918EEDB8000FEC7DB /* NSString+Hybridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Hybridge.h"; sourceTree = ""; }; + 9960C8DA18EEDB8000FEC7DB /* NSString+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Hybridge.m"; sourceTree = ""; }; + 9960C8DD18EEDC6500FEC7DB /* NSStringHybridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSStringHybridgeTests.m; sourceTree = ""; }; + 9960C8DF18EEE83A00FEC7DB /* HYBBridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBBridgeTests.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -103,7 +114,7 @@ 992DEDB918ED963A005CD768 /* libHybridge.a in Frameworks */, 992DEDB618ED963A005CD768 /* UIKit.framework in Frameworks */, 992DEDB418ED963A005CD768 /* Foundation.framework in Frameworks */, - 9960C8C518EEC19200FEC7DB /* libOCMock.a in Frameworks */, + 9960C8D118EEC2CE00FEC7DB /* libOCMock.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -155,6 +166,8 @@ 9960C8AB18EE914600FEC7DB /* UIWebView+Hybridge.m */, 9960C8AE18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h */, 9960C8AF18EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.m */, + 9960C8D918EEDB8000FEC7DB /* NSString+Hybridge.h */, + 9960C8DA18EEDB8000FEC7DB /* NSString+Hybridge.m */, 992DEDA718ED963A005CD768 /* Supporting Files */, ); path = Hybridge; @@ -171,9 +184,13 @@ 992DEDBA18ED963A005CD768 /* HybridgeTests */ = { isa = PBXGroup; children = ( - 9960C8BC18EEC19200FEC7DB /* OCMock */, + 9960C8C818EEC2CE00FEC7DB /* OCMock */, 992DEDBB18ED963A005CD768 /* Supporting Files */, - 992DEDC018ED963A005CD768 /* HybridgeTests.m */, + 9960C8D618EED54200FEC7DB /* HYBTestCase.h */, + 9960C8D718EED54200FEC7DB /* HYBTestCase.m */, + 9960C8D218EEC45800FEC7DB /* NSHTTPURLResponseHybridgeTests.m */, + 9960C8DD18EEDC6500FEC7DB /* NSStringHybridgeTests.m */, + 9960C8DF18EEE83A00FEC7DB /* HYBBridgeTests.m */, ); path = HybridgeTests; sourceTree = ""; @@ -187,24 +204,24 @@ name = "Supporting Files"; sourceTree = ""; }; - 9960C8BC18EEC19200FEC7DB /* OCMock */ = { + 9960C8C818EEC2CE00FEC7DB /* OCMock */ = { isa = PBXGroup; children = ( - 9960C8BD18EEC19200FEC7DB /* libOCMock.a */, - 9960C8BE18EEC19200FEC7DB /* OCMock */, + 9960C8C918EEC2CE00FEC7DB /* libOCMock.a */, + 9960C8CA18EEC2CE00FEC7DB /* OCMock */, ); path = OCMock; - sourceTree = ""; + sourceTree = SOURCE_ROOT; }; - 9960C8BE18EEC19200FEC7DB /* OCMock */ = { + 9960C8CA18EEC2CE00FEC7DB /* OCMock */ = { isa = PBXGroup; children = ( - 9960C8BF18EEC19200FEC7DB /* NSNotificationCenter+OCMAdditions.h */, - 9960C8C018EEC19200FEC7DB /* OCMArg.h */, - 9960C8C118EEC19200FEC7DB /* OCMConstraint.h */, - 9960C8C218EEC19200FEC7DB /* OCMock.h */, - 9960C8C318EEC19200FEC7DB /* OCMockObject.h */, - 9960C8C418EEC19200FEC7DB /* OCMockRecorder.h */, + 9960C8CB18EEC2CE00FEC7DB /* NSNotificationCenter+OCMAdditions.h */, + 9960C8CC18EEC2CE00FEC7DB /* OCMArg.h */, + 9960C8CD18EEC2CE00FEC7DB /* OCMConstraint.h */, + 9960C8CE18EEC2CE00FEC7DB /* OCMock.h */, + 9960C8CF18EEC2CE00FEC7DB /* OCMockObject.h */, + 9960C8D018EEC2CE00FEC7DB /* OCMockRecorder.h */, ); path = OCMock; sourceTree = ""; @@ -218,6 +235,7 @@ files = ( 9960C8AC18EE914600FEC7DB /* UIWebView+Hybridge.h in Headers */, 992DEDCC18ED97FB005CD768 /* Hybridge.h in Headers */, + 9960C8DB18EEDB8000FEC7DB /* NSString+Hybridge.h in Headers */, 9947021218EDB672007A6D8E /* HYBWebViewController.h in Headers */, 992DEDD318ED9C5C005CD768 /* HYBEvent.h in Headers */, 9960C8B018EE971E00FEC7DB /* NSHTTPURLResponse+Hybridge.h in Headers */, @@ -314,6 +332,7 @@ 9947021318EDB672007A6D8E /* HYBWebViewController.m in Sources */, 992DEDD018ED9BA7005CD768 /* HYBBridge.m in Sources */, 9960C8AD18EE914600FEC7DB /* UIWebView+Hybridge.m in Sources */, + 9960C8DC18EEDB8000FEC7DB /* NSString+Hybridge.m in Sources */, 992DEDD818ED9CF0005CD768 /* HYBURLProtocol.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -322,7 +341,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 992DEDC118ED963A005CD768 /* HybridgeTests.m in Sources */, + 9960C8DE18EEDC6500FEC7DB /* NSStringHybridgeTests.m in Sources */, + 9960C8D318EEC45800FEC7DB /* NSHTTPURLResponseHybridgeTests.m in Sources */, + 9960C8E018EEE83A00FEC7DB /* HYBBridgeTests.m in Sources */, + 9960C8D818EED54200FEC7DB /* HYBTestCase.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -464,7 +486,7 @@ INFOPLIST_FILE = "HybridgeTests/HybridgeTests-Info.plist"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/HybridgeTests/OCMock", + "$(PROJECT_DIR)/OCMock", ); OTHER_LDFLAGS = ( "$(inherited)", @@ -472,6 +494,7 @@ XCTest, "-force_load", "\"$(SRCROOT)/OCMock/libOCMock.a\"", + "-ObjC", ); PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = xctest; @@ -496,7 +519,7 @@ INFOPLIST_FILE = "HybridgeTests/HybridgeTests-Info.plist"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/HybridgeTests/OCMock", + "$(PROJECT_DIR)/OCMock", ); OTHER_LDFLAGS = ( "$(inherited)", @@ -504,6 +527,7 @@ XCTest, "-force_load", "\"$(SRCROOT)/OCMock/libOCMock.a\"", + "-ObjC", ); PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = xctest; From 4d999a0aabcc44e9ddb428b4c236ada80e93423c Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Mon, 7 Apr 2014 09:45:16 +0200 Subject: [PATCH 20/64] Actions should be dispatched on a specific queue. Actions should be dispatched on a specific queue (by default the main queue) --- .../Hybridge.xcodeproj/project.pbxproj | 2 + ios/Hybridge/Hybridge/HYBBridge.h | 17 +++-- ios/Hybridge/Hybridge/HYBBridge.m | 74 ++++++++++++++----- ios/Hybridge/Hybridge/HYBURLProtocol.m | 26 +++---- .../HybridgeTests/HYBAsyncTestHelper.h | 27 +++++++ ios/Hybridge/HybridgeTests/HYBBridgeTests.m | 53 +++++++++---- 6 files changed, 147 insertions(+), 52 deletions(-) create mode 100644 ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h diff --git a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj index 9d615ad..6312bc6 100644 --- a/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj +++ b/ios/Hybridge/Hybridge.xcodeproj/project.pbxproj @@ -95,6 +95,7 @@ 9960C8DA18EEDB8000FEC7DB /* NSString+Hybridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Hybridge.m"; sourceTree = ""; }; 9960C8DD18EEDC6500FEC7DB /* NSStringHybridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSStringHybridgeTests.m; sourceTree = ""; }; 9960C8DF18EEE83A00FEC7DB /* HYBBridgeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYBBridgeTests.m; sourceTree = ""; }; + 99801D0F18F28B4E0027FC7A /* HYBAsyncTestHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = HYBAsyncTestHelper.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -188,6 +189,7 @@ 992DEDBB18ED963A005CD768 /* Supporting Files */, 9960C8D618EED54200FEC7DB /* HYBTestCase.h */, 9960C8D718EED54200FEC7DB /* HYBTestCase.m */, + 99801D0F18F28B4E0027FC7A /* HYBAsyncTestHelper.h */, 9960C8D218EEC45800FEC7DB /* NSHTTPURLResponseHybridgeTests.m */, 9960C8DD18EEDC6500FEC7DB /* NSStringHybridgeTests.m */, 9960C8DF18EEE83A00FEC7DB /* HYBBridgeTests.m */, diff --git a/ios/Hybridge/Hybridge/HYBBridge.h b/ios/Hybridge/Hybridge/HYBBridge.h index 278837f..d857af2 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.h +++ b/ios/Hybridge/Hybridge/HYBBridge.h @@ -37,6 +37,15 @@ */ + (instancetype)activeBridge; +/** + Initializes the bridge with a dispatch queue. + This is the designated initializer. + + @param queue The queue that will be used to dispatch actions. If `nil` the main queue will be used. + @return A newly initialized bridge. + */ +- (id)initWithQueue:(dispatch_queue_t)queue; + /** Configures a `UIWebView` to be able to communicate with this bridge. This method should be called after the web view has finished loading the HTML contents. @@ -62,10 +71,9 @@ @param action The action name. @param data An `NSDictionary` containing data attached to the action. - - @return `nil` if the action was handled correctly, otherwise an `NSHTTPURLResponse` initialized with a 404 status code. + @param completion A block that will be executed after the action has been dispatched. */ -- (NSHTTPURLResponse *)sendAction:(NSString *)action data:(NSDictionary *)data; +- (void)dispatchAction:(NSString *)action data:(NSDictionary *)data completion:(void (^)(NSHTTPURLResponse *))completion; @end @@ -86,12 +94,11 @@ /** Called when the bridge receives an action. - @param bridge The bridge that receives the action. @param action The action name. @param data An `NSDictionary` containing data attached to the action. @return `nil` if the action was handled correctly, otherwise a `NSHTTPURLResponse` initialized with the appropiate status code. */ -- (NSHTTPURLResponse *)bridge:(HYBBridge *)bridge didReceiveAction:(NSString *)action data:(NSDictionary *)data; +- (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data; @end diff --git a/ios/Hybridge/Hybridge/HYBBridge.m b/ios/Hybridge/Hybridge/HYBBridge.m index 122d172..0dc5613 100644 --- a/ios/Hybridge/Hybridge/HYBBridge.m +++ b/ios/Hybridge/Hybridge/HYBBridge.m @@ -40,6 +40,33 @@ static SEL HYBSelectorWithAction(NSString *action) { return NSSelectorFromString(selectorName); } +static NSHTTPURLResponse *HYBSendAction(NSString *action, NSDictionary *data, NSObject *delegate) { + SEL selector = HYBSelectorWithAction(action); + + if ([delegate respondsToSelector:selector]) { + NSMethodSignature *methodSignature = [delegate methodSignatureForSelector:selector]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; + invocation.target = delegate; + invocation.selector = selector; + [invocation setArgument:&data atIndex:2]; + + [invocation invoke]; + + return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; + } else if ([delegate respondsToSelector:@selector(bridgeDidReceiveAction:data:)]) { + NSHTTPURLResponse *response = [delegate bridgeDidReceiveAction:action data:data]; + return response ? : [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; + } + + return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:404]; +} + +@interface HYBBridge () + +@property (strong, nonatomic) dispatch_queue_t queue; + +@end + @implementation HYBBridge + (void)initialize { @@ -55,11 +82,29 @@ + (NSInteger)version { static HYBBridge *activeBridge; + (void)setActiveBridge:(HYBBridge *)bridge { - activeBridge = bridge; + @synchronized(self) { + activeBridge = bridge; + } } + (instancetype)activeBridge { - return activeBridge; + @synchronized(self) { + return activeBridge; + } +} + +- (id)init { + return [self initWithQueue:nil]; +} + +- (id)initWithQueue:(dispatch_queue_t)queue { + self = [super init]; + + if (self) { + self.queue = queue ? : dispatch_get_main_queue(); + } + + return self; } - (NSString *)prepareWebView:(UIWebView *)webView { @@ -85,26 +130,15 @@ - (NSString *)prepareWebView:(UIWebView *)webView { return [webView stringByEvaluatingJavaScriptFromString:javascript]; } -- (NSHTTPURLResponse *)sendAction:(NSString *)action data:(NSDictionary *)data { +- (void)dispatchAction:(NSString *)action data:(NSDictionary *)data completion:(void (^)(NSHTTPURLResponse *))completion { NSParameterAssert(action); + NSParameterAssert(completion); - SEL selector = HYBSelectorWithAction(action); - - if ([self.delegate respondsToSelector:selector]) { - NSMethodSignature *methodSignature = [self.delegate methodSignatureForSelector:selector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; - invocation.target = self.delegate; - invocation.selector = selector; - [invocation setArgument:&data atIndex:2]; - - [invocation invoke]; - - return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:200]; - } else if ([self.delegate respondsToSelector:@selector(bridge:didReceiveAction:data:)]) { - return [self.delegate bridge:self didReceiveAction:action data:data]; - } - - return [NSHTTPURLResponse hyb_responseWithAction:action statusCode:404]; + NSObject *delegate = self.delegate; + dispatch_async(self.queue, ^{ + NSHTTPURLResponse *response = HYBSendAction(action, data, delegate); + completion(response); + }); } @end diff --git a/ios/Hybridge/Hybridge/HYBURLProtocol.m b/ios/Hybridge/Hybridge/HYBURLProtocol.m index fedbc69..cc9f636 100644 --- a/ios/Hybridge/Hybridge/HYBURLProtocol.m +++ b/ios/Hybridge/Hybridge/HYBURLProtocol.m @@ -25,29 +25,29 @@ + (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { } - (void)startLoading { - NSHTTPURLResponse *response = nil; - - if (![[self.request HTTPMethod] isEqualToString:kHTTPOptionsMethod]) { + if ([[self.request HTTPMethod] isEqualToString:kHTTPOptionsMethod]) { + NSHTTPURLResponse *response = [NSHTTPURLResponse hyb_responseWithURL:[self.request URL] statusCode:200]; + [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; + [self.client URLProtocolDidFinishLoading:self]; + } else { NSArray *components = [[self.request URL] pathComponents]; NSString *action = [components count] > 1 ? components[1] : nil; if (action) { NSDictionary *headers = [self.request allHTTPHeaderFields]; NSData *data = [headers[@"data"] dataUsingEncoding:NSUTF8StringEncoding]; - id JSONObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL]; + id JSONObject = data ? [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL] : nil; - response = [[HYBBridge activeBridge] sendAction:action data:JSONObject]; + [[HYBBridge activeBridge] dispatchAction:action data:JSONObject completion:^(NSHTTPURLResponse *response) { + [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; + [self.client URLProtocolDidFinishLoading:self]; + }]; } else { - response = [NSHTTPURLResponse hyb_responseWithURL:[self.request URL] statusCode:404]; + NSHTTPURLResponse *response = [NSHTTPURLResponse hyb_responseWithURL:[self.request URL] statusCode:404]; + [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; + [self.client URLProtocolDidFinishLoading:self]; } } - - if (!response) { - response = [NSHTTPURLResponse hyb_responseWithURL:[self.request URL] statusCode:200]; - } - - [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; - [self.client URLProtocolDidFinishLoading:self]; } - (void)stopLoading { diff --git a/ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h b/ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h new file mode 100644 index 0000000..fea81fb --- /dev/null +++ b/ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h @@ -0,0 +1,27 @@ +// +// HYBAsyncTestHelper.h +// +// Created by guille on 23/09/13. +// Copyright (c) 2013 Guillermo Gonzalez. All rights reserved. +// + +#import + +#define HYB_RUNLOOP_INTERVAL 0.05 +#define HYB_TIMEOUT_INTERVAL 1.0 +#define HYB_RUNLOOP_COUNT HYB_TIMEOUT_INTERVAL / HYB_RUNLOOP_INTERVAL + +#define HYB_CAT(x, y) x ## y +#define HYB_TOKCAT(x, y) HYB_CAT(x, y) +#define __runLoopCount HYB_TOKCAT(__runLoopCount,__LINE__) + +#define HYBAssertEventually(a1, format...) \ +NSUInteger __runLoopCount = 0; \ +while (!(a1) && __runLoopCount < HYB_RUNLOOP_COUNT) { \ + NSDate* date = [NSDate dateWithTimeIntervalSinceNow:HYB_RUNLOOP_INTERVAL]; \ + [NSRunLoop.currentRunLoop runUntilDate:date]; \ + __runLoopCount++; \ +} \ +if (__runLoopCount >= HYB_RUNLOOP_COUNT) { \ + XCTFail(format); \ +} diff --git a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m index 16b8073..b01fe2c 100644 --- a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m +++ b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m @@ -7,6 +7,7 @@ // #import "HYBTestCase.h" +#import "HYBAsyncTestHelper.h" @interface HYBBridgeTests : HYBTestCase @@ -62,7 +63,7 @@ - (void)testPrepareWebView { XCTAssertEqualObjects(@"ok", result, @"should return the value returned by the web view"); } -- (void)testSendAction { +- (void)testActionDispatch { HYBBridge *bridge = [HYBBridge new]; bridge.delegate = self; @@ -72,15 +73,19 @@ - (void)testSendAction { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request addValue:@"{\"foo\":\"bar\"}" forHTTPHeaderField:@"data"]; - NSHTTPURLResponse *response = nil; - [NSURLConnection sendSynchronousRequest:request - returningResponse:&response - error:NULL]; + NSHTTPURLResponse * __block response = nil; + [NSURLConnection sendAsynchronousRequest:request + queue:[NSOperationQueue mainQueue] + completionHandler:^(NSURLResponse *r, NSData *data, NSError *error) { + response = (NSHTTPURLResponse *)r; + }]; + HYBAssertEventually(response, @"should complete with a response"); + XCTAssertTrue(self.didReceiveActionCalled, @"should call the delegate"); XCTAssertEqual((NSInteger)200, [response statusCode], @"should return 200 OK"); } -- (void)testSendActionWithMethodHandler { +- (void)testActionDispatchWithMethodHandler { HYBBridge *bridge = [HYBBridge new]; bridge.delegate = self; @@ -90,24 +95,42 @@ - (void)testSendActionWithMethodHandler { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request addValue:@"{\"bar\":\"foo\"}" forHTTPHeaderField:@"data"]; - NSHTTPURLResponse *response = nil; - [NSURLConnection sendSynchronousRequest:request - returningResponse:&response - error:NULL]; + NSHTTPURLResponse * __block response = nil; + [NSURLConnection sendAsynchronousRequest:request + queue:[NSOperationQueue mainQueue] + completionHandler:^(NSURLResponse *r, NSData *data, NSError *error) { + response = (NSHTTPURLResponse *)r; + }]; + HYBAssertEventually(response, @"should complete with a response"); + XCTAssertTrue(self.handlerCalled, @"should call the handler method"); XCTAssertEqual((NSInteger)200, [response statusCode], @"should return 200 OK"); } +- (void)testUnhandledAction { + HYBBridge *bridge = [HYBBridge new]; + [HYBBridge setActiveBridge:bridge]; + + NSURL *url = [NSURL URLWithString:@"http://hybridge/unhandled_action"]; + + NSHTTPURLResponse * __block response = nil; + [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] + queue:[NSOperationQueue mainQueue] + completionHandler:^(NSURLResponse *r, NSData *data, NSError *error) { + response = (NSHTTPURLResponse *)r; + }]; + HYBAssertEventually(response, @"should complete with a response"); + XCTAssertEqual((NSInteger)404, [response statusCode], @"should return 404 Not found"); +} + #pragma mark - HYBBridgeDelegate - (NSArray *)bridgeActions:(HYBBridge *)bridge { return @[@"test", @"something"]; } -- (NSHTTPURLResponse *)bridge:(HYBBridge *)bridge - didReceiveAction:(NSString *)action - data:(NSDictionary *)data -{ +- (NSHTTPURLResponse *)bridgeDidReceiveAction:(NSString *)action data:(NSDictionary *)data { + XCTAssertTrue([NSThread isMainThread], @"should be called in the main thread"); XCTAssertEqualObjects(@"test", action, @"should receive a 'test' action"); NSDictionary *expectedData = @{@"foo": @"bar"}; @@ -118,6 +141,8 @@ - (NSHTTPURLResponse *)bridge:(HYBBridge *)bridge } - (void)handleSomethingWithData:(NSDictionary *)data { + XCTAssertTrue([NSThread isMainThread], @"should be called in the main thread"); + NSDictionary *expectedData = @{@"bar": @"foo"}; XCTAssertEqualObjects(expectedData, data, @"should receive the correct data"); From 7dfe56390bddb68c049ffd1f08adbef86fb12861 Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Mon, 7 Apr 2014 09:48:20 +0200 Subject: [PATCH 21/64] Update headers with license info --- ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h | 2 +- ios/Hybridge/HybridgeTests/HYBBridgeTests.m | 2 +- ios/Hybridge/HybridgeTests/HYBTestCase.h | 2 +- ios/Hybridge/HybridgeTests/HYBTestCase.m | 2 +- ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m | 2 +- ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h b/ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h index fea81fb..40d9d1c 100644 --- a/ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h +++ b/ios/Hybridge/HybridgeTests/HYBAsyncTestHelper.h @@ -1,8 +1,8 @@ // // HYBAsyncTestHelper.h // -// Created by guille on 23/09/13. // Copyright (c) 2013 Guillermo Gonzalez. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. // #import diff --git a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m index b01fe2c..398c957 100644 --- a/ios/Hybridge/HybridgeTests/HYBBridgeTests.m +++ b/ios/Hybridge/HybridgeTests/HYBBridgeTests.m @@ -2,8 +2,8 @@ // HYBBridgeTests.m // Hybridge // -// Created by guille on 04/04/14. // Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. // #import "HYBTestCase.h" diff --git a/ios/Hybridge/HybridgeTests/HYBTestCase.h b/ios/Hybridge/HybridgeTests/HYBTestCase.h index 8938b57..32a28e3 100644 --- a/ios/Hybridge/HybridgeTests/HYBTestCase.h +++ b/ios/Hybridge/HybridgeTests/HYBTestCase.h @@ -2,8 +2,8 @@ // HYBTestCase.h // Hybridge // -// Created by guille on 04/04/14. // Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. // #import diff --git a/ios/Hybridge/HybridgeTests/HYBTestCase.m b/ios/Hybridge/HybridgeTests/HYBTestCase.m index b0c8eca..8b68688 100644 --- a/ios/Hybridge/HybridgeTests/HYBTestCase.m +++ b/ios/Hybridge/HybridgeTests/HYBTestCase.m @@ -2,8 +2,8 @@ // HYBTestCase.m // Hybridge // -// Created by guille on 04/04/14. // Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. // #import "HYBTestCase.h" diff --git a/ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m b/ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m index 4ab6fe0..9608831 100644 --- a/ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m +++ b/ios/Hybridge/HybridgeTests/NSHTTPURLResponseHybridgeTests.m @@ -2,8 +2,8 @@ // NSHTTPURLResponseHybridgeTests.m // Hybridge // -// Created by guille on 04/04/14. // Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. // #import diff --git a/ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m b/ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m index b9d8026..735ce11 100644 --- a/ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m +++ b/ios/Hybridge/HybridgeTests/NSStringHybridgeTests.m @@ -2,8 +2,8 @@ // NSStringHybridgeTests.m // Hybridge // -// Created by guille on 04/04/14. // Copyright (c) 2014 Telefonica I+D. All rights reserved. +// Licensed under the Affero GNU GPL v3, see LICENSE for more details. // #import From 92c94484ccf6315811ebf0d4fbc6522acdf8eacb Mon Sep 17 00:00:00 2001 From: Guillermo Gonzalez Date: Mon, 7 Apr 2014 12:32:01 +0200 Subject: [PATCH 22/64] Add iOS sample --- .../Hybridge.podspec => Hybridge.podspec | 2 +- .../project.pbxproj | 533 ------------------ .../HybridgeBoilerplate/HYBHybridge.h | 82 --- .../HybridgeBoilerplate/HybridgeAppDelegate.h | 15 - .../HybridgeBoilerplate/WebViewController.h | 17 - .../HybridgeBoilerplate/WebViewController.m | 79 --- .../HybridgeBoilerplate/libHybridge.a | Bin 376744 -> 0 bytes .../HybridgeBoilerplate/main.m | 18 - boilerplate/ios/HybridgeSample/.gitignore | 22 + .../HybridgeSample.xcodeproj/project.pbxproj | 512 +++++++++++++++++ .../HybridgeSample/AppDelegate.h | 15 + .../HybridgeSample/AppDelegate.m} | 60 +- .../HybridgeSample/HybridgeSample-Info.plist} | 19 +- .../HybridgeSample/HybridgeSample-Prefix.pch} | 4 +- .../AppIcon.appiconset/Contents.json | 23 + .../LaunchImage.launchimage/Contents.json | 23 + .../HybridgeSample/WebViewController.h | 13 + .../HybridgeSample/WebViewController.m | 44 ++ .../en.lproj/InfoPlist.strings | 0 .../HybridgeSample/HybridgeSample/flip.css | 105 ++++ .../HybridgeSample/hybridge.html | 97 ++++ .../ios/HybridgeSample/HybridgeSample/main.m | 18 + .../HybridgeSampleTests-Info.plist | 22 + .../HybridgeSampleTests/HybridgeSampleTests.m | 34 ++ .../en.lproj/InfoPlist.strings | 2 + boilerplate/ios/HybridgeSample/Podfile | 11 + boilerplate/ios/HybridgeSample/Podfile.lock | 14 + 27 files changed, 1003 insertions(+), 781 deletions(-) rename ios/Hybridge/Hybridge.podspec => Hybridge.podspec (99%) delete mode 100644 boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate.xcodeproj/project.pbxproj delete mode 100644 boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HYBHybridge.h delete mode 100644 boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.h delete mode 100644 boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.h delete mode 100644 boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.m delete mode 100644 boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/libHybridge.a delete mode 100644 boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/main.m create mode 100644 boilerplate/ios/HybridgeSample/.gitignore create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample.xcodeproj/project.pbxproj create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/AppDelegate.h rename boilerplate/ios/{HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.m => HybridgeSample/HybridgeSample/AppDelegate.m} (59%) rename boilerplate/ios/{HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Info.plist => HybridgeSample/HybridgeSample/HybridgeSample-Info.plist} (75%) rename boilerplate/ios/{HybridgeBoilerplate/HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch => HybridgeSample/HybridgeSample/HybridgeSample-Prefix.pch} (75%) create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.h create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/WebViewController.m rename boilerplate/ios/{HybridgeBoilerplate/HybridgeBoilerplate => HybridgeSample/HybridgeSample}/en.lproj/InfoPlist.strings (100%) create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/flip.css create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/hybridge.html create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSample/main.m create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests-Info.plist create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSampleTests/HybridgeSampleTests.m create mode 100644 boilerplate/ios/HybridgeSample/HybridgeSampleTests/en.lproj/InfoPlist.strings create mode 100644 boilerplate/ios/HybridgeSample/Podfile create mode 100644 boilerplate/ios/HybridgeSample/Podfile.lock diff --git a/ios/Hybridge/Hybridge.podspec b/Hybridge.podspec similarity index 99% rename from ios/Hybridge/Hybridge.podspec rename to Hybridge.podspec index e14d966..e76aaf5 100644 --- a/ios/Hybridge/Hybridge.podspec +++ b/Hybridge.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| DESC s.homepage = "https://github.com/telefonicaid/tdigital-hybridge" - s.license = { :type => "Affero GNU GPL v3", :file => "LICENSE" } + s.license = { :type => "Affero GNU GPL v3", :file => "LICENSE.txt" } s.authors = { 'David Garcia' => 'dgs30@tid.es', 'Guillermo Gonzalez' => 'gonzalezreal@icloud.com' } diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate.xcodeproj/project.pbxproj b/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate.xcodeproj/project.pbxproj deleted file mode 100644 index 5e10203..0000000 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate.xcodeproj/project.pbxproj +++ /dev/null @@ -1,533 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - E44681CA1879895800D18DF3 /* libHybridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C80925182C0F40002BF73C /* libHybridge.a */; }; - E47A5FAD184764270041F290 /* libHybridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C80925182C0F40002BF73C /* libHybridge.a */; }; - E4C808D6182A7BCE002BF73C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C808D5182A7BCE002BF73C /* Foundation.framework */; }; - E4C808D8182A7BCE002BF73C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C808D7182A7BCE002BF73C /* CoreGraphics.framework */; }; - E4C808DA182A7BCE002BF73C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C808D9182A7BCE002BF73C /* UIKit.framework */; }; - E4C808E2182A7BCE002BF73C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E4C808E1182A7BCE002BF73C /* main.m */; }; - E4C808E6182A7BCE002BF73C /* HybridgeAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E4C808E5182A7BCE002BF73C /* HybridgeAppDelegate.m */; }; - E4C808EF182A7BCE002BF73C /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C808EE182A7BCE002BF73C /* XCTest.framework */; }; - E4C808F0182A7BCE002BF73C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C808D5182A7BCE002BF73C /* Foundation.framework */; }; - E4C808F1182A7BCE002BF73C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C808D9182A7BCE002BF73C /* UIKit.framework */; }; - E4C808F9182A7BCE002BF73C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E4C808F7182A7BCE002BF73C /* InfoPlist.strings */; }; - E4C808FB182A7BCE002BF73C /* HybridgeBoilerplateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E4C808FA182A7BCE002BF73C /* HybridgeBoilerplateTests.m */; }; - E4C80909182A7E52002BF73C /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E4C80908182A7E52002BF73C /* WebViewController.m */; }; - E4C80923182C0DE2002BF73C /* HybridgeBoilerplate-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E4C808DD182A7BCE002BF73C /* HybridgeBoilerplate-Info.plist */; }; - E4C80924182C0DE2002BF73C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E4C808DE182A7BCE002BF73C /* InfoPlist.strings */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E4C808F2182A7BCE002BF73C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4C808CA182A7BCE002BF73C /* Project object */; - proxyType = 1; - remoteGlobalIDString = E4C808D1182A7BCE002BF73C; - remoteInfo = HybridgeBoilerplate; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - E47A5FAC184762940041F290 /* HYBHybridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HYBHybridge.h; sourceTree = ""; }; - E4C808D2182A7BCE002BF73C /* HybridgeBoilerplate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HybridgeBoilerplate.app; sourceTree = BUILT_PRODUCTS_DIR; }; - E4C808D5182A7BCE002BF73C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - E4C808D7182A7BCE002BF73C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - E4C808D9182A7BCE002BF73C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - E4C808DD182A7BCE002BF73C /* HybridgeBoilerplate-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HybridgeBoilerplate-Info.plist"; sourceTree = ""; }; - E4C808DF182A7BCE002BF73C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - E4C808E1182A7BCE002BF73C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - E4C808E3182A7BCE002BF73C /* HybridgeBoilerplate-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "HybridgeBoilerplate-Prefix.pch"; sourceTree = ""; }; - E4C808E4182A7BCE002BF73C /* HybridgeAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HybridgeAppDelegate.h; sourceTree = ""; }; - E4C808E5182A7BCE002BF73C /* HybridgeAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HybridgeAppDelegate.m; sourceTree = ""; }; - E4C808ED182A7BCE002BF73C /* HybridgeBoilerplateTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HybridgeBoilerplateTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - E4C808EE182A7BCE002BF73C /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - E4C808F6182A7BCE002BF73C /* HybridgeBoilerplateTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HybridgeBoilerplateTests-Info.plist"; sourceTree = ""; }; - E4C808F8182A7BCE002BF73C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - E4C808FA182A7BCE002BF73C /* HybridgeBoilerplateTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HybridgeBoilerplateTests.m; sourceTree = ""; }; - E4C80907182A7E52002BF73C /* WebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewController.h; sourceTree = ""; }; - E4C80908182A7E52002BF73C /* WebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewController.m; sourceTree = ""; }; - E4C80925182C0F40002BF73C /* libHybridge.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libHybridge.a; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E4C808CF182A7BCE002BF73C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E47A5FAD184764270041F290 /* libHybridge.a in Frameworks */, - E4C808D8182A7BCE002BF73C /* CoreGraphics.framework in Frameworks */, - E4C808DA182A7BCE002BF73C /* UIKit.framework in Frameworks */, - E4C808D6182A7BCE002BF73C /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E4C808EA182A7BCE002BF73C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E4C808EF182A7BCE002BF73C /* XCTest.framework in Frameworks */, - E4C808F1182A7BCE002BF73C /* UIKit.framework in Frameworks */, - E4C808F0182A7BCE002BF73C /* Foundation.framework in Frameworks */, - E44681CA1879895800D18DF3 /* libHybridge.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - E4C808C9182A7BCE002BF73C = { - isa = PBXGroup; - children = ( - E4C808DB182A7BCE002BF73C /* HybridgeBoilerplate */, - E4C808F4182A7BCE002BF73C /* HybridgeBoilerplateTests */, - E4C808D4182A7BCE002BF73C /* Frameworks */, - E4C808D3182A7BCE002BF73C /* Products */, - ); - sourceTree = ""; - }; - E4C808D3182A7BCE002BF73C /* Products */ = { - isa = PBXGroup; - children = ( - E4C808D2182A7BCE002BF73C /* HybridgeBoilerplate.app */, - E4C808ED182A7BCE002BF73C /* HybridgeBoilerplateTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - E4C808D4182A7BCE002BF73C /* Frameworks */ = { - isa = PBXGroup; - children = ( - E4C808D5182A7BCE002BF73C /* Foundation.framework */, - E4C808D7182A7BCE002BF73C /* CoreGraphics.framework */, - E4C808D9182A7BCE002BF73C /* UIKit.framework */, - E4C808EE182A7BCE002BF73C /* XCTest.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - E4C808DB182A7BCE002BF73C /* HybridgeBoilerplate */ = { - isa = PBXGroup; - children = ( - E4C80911182A8FD8002BF73C /* include */, - E4C80910182A8FCE002BF73C /* lib */, - E4C80906182A7E14002BF73C /* controllers */, - E4C808E4182A7BCE002BF73C /* HybridgeAppDelegate.h */, - E4C808E5182A7BCE002BF73C /* HybridgeAppDelegate.m */, - E4C808DC182A7BCE002BF73C /* Supporting Files */, - ); - path = HybridgeBoilerplate; - sourceTree = ""; - }; - E4C808DC182A7BCE002BF73C /* Supporting Files */ = { - isa = PBXGroup; - children = ( - E4C808DD182A7BCE002BF73C /* HybridgeBoilerplate-Info.plist */, - E4C808DE182A7BCE002BF73C /* InfoPlist.strings */, - E4C808E1182A7BCE002BF73C /* main.m */, - E4C808E3182A7BCE002BF73C /* HybridgeBoilerplate-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - E4C808F4182A7BCE002BF73C /* HybridgeBoilerplateTests */ = { - isa = PBXGroup; - children = ( - E4C808FA182A7BCE002BF73C /* HybridgeBoilerplateTests.m */, - E4C808F5182A7BCE002BF73C /* Supporting Files */, - ); - path = HybridgeBoilerplateTests; - sourceTree = ""; - }; - E4C808F5182A7BCE002BF73C /* Supporting Files */ = { - isa = PBXGroup; - children = ( - E4C808F6182A7BCE002BF73C /* HybridgeBoilerplateTests-Info.plist */, - E4C808F7182A7BCE002BF73C /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - E4C80906182A7E14002BF73C /* controllers */ = { - isa = PBXGroup; - children = ( - E4C80907182A7E52002BF73C /* WebViewController.h */, - E4C80908182A7E52002BF73C /* WebViewController.m */, - ); - name = controllers; - sourceTree = ""; - }; - E4C80910182A8FCE002BF73C /* lib */ = { - isa = PBXGroup; - children = ( - E4C80925182C0F40002BF73C /* libHybridge.a */, - ); - name = lib; - sourceTree = ""; - }; - E4C80911182A8FD8002BF73C /* include */ = { - isa = PBXGroup; - children = ( - E4C80912182A8FE3002BF73C /* Hybridge */, - ); - name = include; - sourceTree = ""; - }; - E4C80912182A8FE3002BF73C /* Hybridge */ = { - isa = PBXGroup; - children = ( - E47A5FAC184762940041F290 /* HYBHybridge.h */, - ); - name = Hybridge; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - E4C808D1182A7BCE002BF73C /* HybridgeBoilerplate */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4C808FE182A7BCE002BF73C /* Build configuration list for PBXNativeTarget "HybridgeBoilerplate" */; - buildPhases = ( - E4C808CE182A7BCE002BF73C /* Sources */, - E4C808CF182A7BCE002BF73C /* Frameworks */, - E4C808D0182A7BCE002BF73C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = HybridgeBoilerplate; - productName = HybridgeBoilerplate; - productReference = E4C808D2182A7BCE002BF73C /* HybridgeBoilerplate.app */; - productType = "com.apple.product-type.application"; - }; - E4C808EC182A7BCE002BF73C /* HybridgeBoilerplateTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4C80901182A7BCE002BF73C /* Build configuration list for PBXNativeTarget "HybridgeBoilerplateTests" */; - buildPhases = ( - E4C808E9182A7BCE002BF73C /* Sources */, - E4C808EA182A7BCE002BF73C /* Frameworks */, - E4C808EB182A7BCE002BF73C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - E4C808F3182A7BCE002BF73C /* PBXTargetDependency */, - ); - name = HybridgeBoilerplateTests; - productName = HybridgeBoilerplateTests; - productReference = E4C808ED182A7BCE002BF73C /* HybridgeBoilerplateTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - E4C808CA182A7BCE002BF73C /* Project object */ = { - isa = PBXProject; - attributes = { - CLASSPREFIX = Hybridge; - LastUpgradeCheck = 0500; - ORGANIZATIONNAME = tid.es; - TargetAttributes = { - E4C808EC182A7BCE002BF73C = { - TestTargetID = E4C808D1182A7BCE002BF73C; - }; - }; - }; - buildConfigurationList = E4C808CD182A7BCE002BF73C /* Build configuration list for PBXProject "HybridgeBoilerplate" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = E4C808C9182A7BCE002BF73C; - productRefGroup = E4C808D3182A7BCE002BF73C /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - E4C808D1182A7BCE002BF73C /* HybridgeBoilerplate */, - E4C808EC182A7BCE002BF73C /* HybridgeBoilerplateTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - E4C808D0182A7BCE002BF73C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4C80923182C0DE2002BF73C /* HybridgeBoilerplate-Info.plist in Resources */, - E4C80924182C0DE2002BF73C /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E4C808EB182A7BCE002BF73C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4C808F9182A7BCE002BF73C /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E4C808CE182A7BCE002BF73C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4C808E6182A7BCE002BF73C /* HybridgeAppDelegate.m in Sources */, - E4C80909182A7E52002BF73C /* WebViewController.m in Sources */, - E4C808E2182A7BCE002BF73C /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E4C808E9182A7BCE002BF73C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4C808FB182A7BCE002BF73C /* HybridgeBoilerplateTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E4C808F3182A7BCE002BF73C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = E4C808D1182A7BCE002BF73C /* HybridgeBoilerplate */; - targetProxy = E4C808F2182A7BCE002BF73C /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - E4C808DE182A7BCE002BF73C /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - E4C808DF182A7BCE002BF73C /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - E4C808F7182A7BCE002BF73C /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - E4C808F8182A7BCE002BF73C /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - E4C808FC182A7BCE002BF73C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - E4C808FD182A7BCE002BF73C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - E4C808FF182A7BCE002BF73C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch"; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - $SOURCE_ROOT/include, - ); - INFOPLIST_FILE = "HybridgeBoilerplate/HybridgeBoilerplate-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)", - "$(SRCROOT)/HybridgeBoilerplate", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - E4C80900182A7BCE002BF73C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch"; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - $SOURCE_ROOT/include, - ); - INFOPLIST_FILE = "HybridgeBoilerplate/HybridgeBoilerplate-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)", - "$(SRCROOT)/HybridgeBoilerplate", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - E4C80902182A7BCE002BF73C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HybridgeBoilerplate.app/HybridgeBoilerplate"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "HybridgeBoilerplateTests/HybridgeBoilerplateTests-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - name = Debug; - }; - E4C80903182A7BCE002BF73C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HybridgeBoilerplate.app/HybridgeBoilerplate"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "HybridgeBoilerplate/HybridgeBoilerplate-Prefix.pch"; - INFOPLIST_FILE = "HybridgeBoilerplateTests/HybridgeBoilerplateTests-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E4C808CD182A7BCE002BF73C /* Build configuration list for PBXProject "HybridgeBoilerplate" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4C808FC182A7BCE002BF73C /* Debug */, - E4C808FD182A7BCE002BF73C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4C808FE182A7BCE002BF73C /* Build configuration list for PBXNativeTarget "HybridgeBoilerplate" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4C808FF182A7BCE002BF73C /* Debug */, - E4C80900182A7BCE002BF73C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4C80901182A7BCE002BF73C /* Build configuration list for PBXNativeTarget "HybridgeBoilerplateTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4C80902182A7BCE002BF73C /* Debug */, - E4C80903182A7BCE002BF73C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = E4C808CA182A7BCE002BF73C /* Project object */; -} diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HYBHybridge.h b/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HYBHybridge.h deleted file mode 100644 index 57cd0cd..0000000 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HYBHybridge.h +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import -#import - -@interface HYBHybridge : NSObject - -/** - * Current Native Hybridge version - */ -extern int const kVersion; - -/** - * String constants referencing defined Hybridge native events - */ -extern NSString * const kHybridgeEventPause; -extern NSString * const kHybridgeEventResume; -extern NSString * const kHybridgeEventMessage; -extern NSString * const kHybridgeEventReady; - -/** - * Defined block to be used as handler of each action. - * - * @param NSURLProtocol* Contains request information - * @param NSString* JSON string sent from the Javascript call - * @param NSHTTPURLResponse* HTTP response - */ -typedef void (^HybridgeHandlerBlock_t)(NSURLProtocol*, NSString*, NSHTTPURLResponse*); - -/** - * Singleton constructor - * - * @return single Hibridge instance - */ -+ (HYBHybridge *)sharedInstance; - -/** - * Returns the actual list of available native actions - * - * @return list of actions - */ -- (NSDictionary *)getActions; - -/** - * Execute Javascript code in WebView - * - * @param js Javastring code String - * @param webview target WebView - * - * @return String returned by Javascript code. - */ -- (NSString *)runJsInWebview:(NSString *)js web:(UIWebView*) webview; - -/** - * Trigger Hybridge event in Webview - * - * @param eventName Event type - * @param jsonString JSON data to attach to the event - * @param webview target WebView - */ -- (void)fireEventInWebView:(NSString *)eventName data:(NSString *)jsonString web:(UIWebView*) webview; - -/** - * Add block handler to current list of supported native actions - * - * @param action action name - * @param handlerBlock handler block - */ -- (void)subscribeAction:(NSString *)action withHandler:(HybridgeHandlerBlock_t)handlerBlock; - -/** - * Initialices Javascript HybridgeGlobal object in WebView - * - * @param webview target WebView - */ -- (void)initJavascript:(UIWebView*) webview; - -@end diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.h b/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.h deleted file mode 100644 index 06c0765..0000000 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/HybridgeAppDelegate.h +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import -#import "WebViewController.h" - -@interface HybridgeAppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; -@property (strong, nonatomic) WebViewController *viewController; - -@end diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.h b/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.h deleted file mode 100644 index a5b9e3a..0000000 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.h +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import -#import "HYBHybridge.h" - -@interface WebViewController : UIViewController - -@property (strong) UIWebView *webview; - -- (void) fireJavascriptEvent:(NSString *)eventName data:(NSString *)jsonString; - -@end - diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.m b/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.m deleted file mode 100644 index 5503af4..0000000 --- a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/WebViewController.m +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Hybridge - * (c) Telefonica Digital, 2013 - All rights reserved - * License: GNU Affero V3 (see LICENSE file) - */ - -#import "WebViewController.h" -#import "HYBHybridge.h" - -@interface WebViewController () -{ - @private HYBHybridge *_hybridge; -} -@end - -@implementation WebViewController - -NSString *_targetURL = @"http://127.0.0.1/hybridge.html"; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // Hybridge binding - _hybridge = [HYBHybridge sharedInstance]; - - // Handlers - - // Example handler, just parses data to JSON from ajax header in order to process it - // and writes back JSON in a response header - HybridgeHandlerBlock_t initHandler = ^(NSURLProtocol *url, NSString *data, NSHTTPURLResponse *response) { - - NSData *jsonData = [data dataUsingEncoding:NSUTF8StringEncoding]; - NSError *error = nil; - NSDictionary *params = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - - BOOL hybridgeInitialized = [[params objectForKey:@"initialized"] boolValue]; - if (hybridgeInitialized) { - [self fireJavascriptEvent:kHybridgeEventReady data:(NSString*) @"{}"]; - } - }; - - [_hybridge subscribeAction:@"init" withHandler:initHandler]; - - self.webview = [[UIWebView alloc] initWithFrame:self.view.bounds]; - self.webview.delegate = self; - self.webview.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; - [self.view addSubview:self.webview]; - - // Load local HTML - //NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"index" ofType:@"html"]; - //NSURL *url = [NSURL fileURLWithPath:filePath]; - - // Load HTTP - NSURL*url = [NSURL URLWithString:_targetURL]; - - [self.webview loadRequest:[NSURLRequest requestWithURL:url]]; -} - -- (void)webViewDidFinishLoad:(UIWebView *)webView -{ - [_hybridge initJavascript:self.webview]; -} - -- (void) fireJavascriptEvent:(NSString *)eventName data:(NSString *)jsonString -{ - [_hybridge fireEventInWebView:eventName data:jsonString web:self.webview]; -} - -@end diff --git a/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/libHybridge.a b/boilerplate/ios/HybridgeBoilerplate/HybridgeBoilerplate/libHybridge.a deleted file mode 100644 index 0a3156552ec0c030ccd85e15bc294aebfde9561b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376744 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