diff options
| author | Misko Hevery | 2012-03-23 14:03:24 -0700 |
|---|---|---|
| committer | Misko Hevery | 2012-03-28 11:16:35 -0700 |
| commit | 2430f52bb97fa9d682e5f028c977c5bf94c5ec38 (patch) | |
| tree | e7529b741d70199f36d52090b430510bad07f233 /src/scenario/Application.js | |
| parent | 944098a4e0f753f06b40c73ca3e79991cec6c2e2 (diff) | |
| download | angular.js-2430f52bb97fa9d682e5f028c977c5bf94c5ec38.tar.bz2 | |
chore(module): move files around in preparation for more modules
Diffstat (limited to 'src/scenario/Application.js')
| -rw-r--r-- | src/scenario/Application.js | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/src/scenario/Application.js b/src/scenario/Application.js deleted file mode 100644 index d3a70569..00000000 --- a/src/scenario/Application.js +++ /dev/null @@ -1,102 +0,0 @@ -'use strict'; - -/** - * Represents the application currently being tested and abstracts usage - * of iframes or separate windows. - * - * @param {Object} context jQuery wrapper around HTML context. - */ -angular.scenario.Application = function(context) { - this.context = context; - context.append( - '<h2>Current URL: <a href="about:blank">None</a></h2>' + - '<div id="test-frames"></div>' - ); -}; - -/** - * Gets the jQuery collection of frames. Don't use this directly because - * frames may go stale. - * - * @private - * @return {Object} jQuery collection - */ -angular.scenario.Application.prototype.getFrame_ = function() { - return this.context.find('#test-frames iframe:last'); -}; - -/** - * Gets the window of the test runner frame. Always favor executeAction() - * instead of this method since it prevents you from getting a stale window. - * - * @private - * @return {Object} the window of the frame - */ -angular.scenario.Application.prototype.getWindow_ = function() { - var contentWindow = this.getFrame_().prop('contentWindow'); - if (!contentWindow) - throw 'Frame window is not accessible.'; - return contentWindow; -}; - -/** - * Changes the location of the frame. - * - * @param {string} url The URL. If it begins with a # then only the - * hash of the page is changed. - * @param {function()} loadFn function($window, $document) Called when frame loads. - * @param {function()} errorFn function(error) Called if any error when loading. - */ -angular.scenario.Application.prototype.navigateTo = function(url, loadFn, errorFn) { - var self = this; - var frame = this.getFrame_(); - //TODO(esprehn): Refactor to use rethrow() - errorFn = errorFn || function(e) { throw e; }; - if (url === 'about:blank') { - errorFn('Sandbox Error: Navigating to about:blank is not allowed.'); - } else if (url.charAt(0) === '#') { - url = frame.attr('src').split('#')[0] + url; - frame.attr('src', url); - this.executeAction(loadFn); - } else { - frame.remove(); - this.context.find('#test-frames').append('<iframe>'); - frame = this.getFrame_(); - frame.load(function() { - frame.unbind(); - try { - self.executeAction(loadFn); - } catch (e) { - errorFn(e); - } - }).attr('src', url); - } - this.context.find('> h2 a').attr('href', url).text(url); -}; - -/** - * Executes a function in the context of the tested application. Will wait - * for all pending angular xhr requests before executing. - * - * @param {function()} action The callback to execute. function($window, $document) - * $document is a jQuery wrapped document. - */ -angular.scenario.Application.prototype.executeAction = function(action) { - var self = this; - var $window = this.getWindow_(); - if (!$window.document) { - throw 'Sandbox Error: Application document not accessible.'; - } - if (!$window.angular) { - return action.call(this, $window, _jQuery($window.document)); - } - angularInit($window.document, function(element) { - element = $window.angular.element(element); - var $injector = element.inheritedData('$injector'); - $injector.invoke(function($browser){ - $browser.notifyWhenNoOutstandingRequests(function() { - action.call(self, $window, _jQuery($window.document)); - }); - }); - }); -}; |
