diff options
| -rw-r--r-- | src/bootstrap/bootstrap-prettify.js | 5 | ||||
| -rw-r--r-- | src/ngScenario/Application.js | 28 | ||||
| -rw-r--r-- | test/ngScenario/ApplicationSpec.js | 11 |
3 files changed, 37 insertions, 7 deletions
diff --git a/src/bootstrap/bootstrap-prettify.js b/src/bootstrap/bootstrap-prettify.js index 026587a2..a9e61d4f 100644 --- a/src/bootstrap/bootstrap-prettify.js +++ b/src/bootstrap/bootstrap-prettify.js @@ -179,7 +179,8 @@ directive.ngEvalJavascript = ['getEmbeddedTemplate', function(getEmbeddedTemplat }]; -directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', function($templateCache, $browser, docsRootScope, $location) { +directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', '$sniffer', + function($templateCache, $browser, docsRootScope, $location, $sniffer) { return { terminal: true, link: function(scope, element, attrs) { @@ -189,6 +190,7 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', $provide.value('$templateCache', $templateCache); $provide.value('$anchorScroll', angular.noop); $provide.value('$browser', $browser); + $provide.value('$sniffer', $sniffer); $provide.provider('$location', function() { this.$get = ['$rootScope', function($rootScope) { docsRootScope.$on('$locationChangeSuccess', function(event, oldUrl, newUrl) { @@ -223,6 +225,7 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', event.preventDefault(); } }); + angular.bootstrap(element, modules); } }; diff --git a/src/ngScenario/Application.js b/src/ngScenario/Application.js index 2ca6c8fd..f7ce28cb 100644 --- a/src/ngScenario/Application.js +++ b/src/ngScenario/Application.js @@ -49,7 +49,7 @@ angular.scenario.Application.prototype.getWindow_ = function() { */ angular.scenario.Application.prototype.navigateTo = function(url, loadFn, errorFn) { var self = this; - var frame = this.getFrame_(); + var frame = self.getFrame_(); //TODO(esprehn): Refactor to use rethrow() errorFn = errorFn || function(e) { throw e; }; if (url === 'about:blank') { @@ -57,21 +57,39 @@ angular.scenario.Application.prototype.navigateTo = function(url, loadFn, errorF } else if (url.charAt(0) === '#') { url = frame.attr('src').split('#')[0] + url; frame.attr('src', url); - this.executeAction(loadFn); + self.executeAction(loadFn); } else { frame.remove(); - this.context.find('#test-frames').append('<iframe>'); - frame = this.getFrame_(); + self.context.find('#test-frames').append('<iframe>'); + frame = self.getFrame_(); + + frame[0].contentWindow.name = "NG_DEFER_BOOTSTRAP!"; + frame.load(function() { frame.unbind(); try { + var $window = self.getWindow_(); + + if ($window.angular) { + // Disable animations + + // TODO(i): this doesn't disable javascript animations + // we don't need that for our tests, but it should be done + $window.angular.resumeBootstrap([['$provide', function($provide) { + $provide.decorator('$sniffer', function($delegate) { + $delegate.supportsTransitions = false; + return $delegate; + }); + }]]); + } + self.executeAction(loadFn); } catch (e) { errorFn(e); } }).attr('src', url); } - this.context.find('> h2 a').attr('href', url).text(url); + self.context.find('> h2 a').attr('href', url).text(url); }; /** diff --git a/test/ngScenario/ApplicationSpec.js b/test/ngScenario/ApplicationSpec.js index 0236b8d7..cb9fb478 100644 --- a/test/ngScenario/ApplicationSpec.js +++ b/test/ngScenario/ApplicationSpec.js @@ -9,11 +9,20 @@ describe('angular.scenario.Application', function() { } beforeEach(function() { + document.body.innerHTML = ''; frames = _jQuery("<div></div>"); + _jQuery(document.body).append(frames); app = new angular.scenario.Application(frames); }); - it('should return new $window and $document after navigate', function() { + + afterEach(function() { + _jQuery('iframe').unbind(); // cleanup any leftover onload handlers + document.body.innerHTML = ''; + }); + + + it('should return new $window and $document after navigateTo', function() { var called; var testWindow, testDocument, counter = 0; app.getWindow_ = function() { |
