diff --git a/packages/ember-glimmer/tests/integration/event-dispatcher-test.js b/packages/ember-glimmer/tests/integration/event-dispatcher-test.js index 08b15a79429..a1aee9bec53 100644 --- a/packages/ember-glimmer/tests/integration/event-dispatcher-test.js +++ b/packages/ember-glimmer/tests/integration/event-dispatcher-test.js @@ -6,6 +6,7 @@ import { run } from 'ember-metal'; import { EMBER_IMPROVED_INSTRUMENTATION } from 'ember/features'; +import { EventDispatcher } from 'ember-views'; let canDataTransfer = !!document.createEvent('HTMLEvents').dataTransfer; @@ -55,6 +56,8 @@ moduleFor('EventDispatcher', class extends RenderingTest { template: `` }); + + expectDeprecation(/`eventManager` has been deprecated/); this.render(`{{x-foo}}`); this.runTask(() => this.$('#is-done').trigger('click')); @@ -89,6 +92,7 @@ moduleFor('EventDispatcher', class extends RenderingTest { template: `` }); + expectDeprecation(/`eventManager` has been deprecated/); this.render(`{{x-foo}}`); this.runTask(() => this.$('#is-done').trigger('click')); @@ -138,6 +142,29 @@ moduleFor('EventDispatcher#setup', class extends RenderingTest { this.$('div').trigger('myevent'); } + ['@test eventManager is deprecated'](assert) { + this.registerComponent('x-foo', { + ComponentClass: Component.extend({ + eventManager: { + myEvent() {} + } + }), + template: `
Hello!
` + }); + + expectDeprecation(/`eventManager` has been deprecated/); + this.render(`{{x-foo}}`); + } + + ['@test canDispatchToEventManager is deprecated in EventDispatcher'](assert) { + let MyDispatcher = EventDispatcher.extend({ + canDispatchToEventManager: null + }); + + expectDeprecation(/`canDispatchToEventManager` has been deprecated/); + MyDispatcher.create(); + } + ['@test a rootElement can be specified'](assert) { this.$().append(''); this.dispatcher.setup({ myevent: 'myEvent' }, '#app'); diff --git a/packages/ember-views/lib/mixins/view_support.js b/packages/ember-views/lib/mixins/view_support.js index 84257912de3..c1fc9e51579 100644 --- a/packages/ember-views/lib/mixins/view_support.js +++ b/packages/ember-views/lib/mixins/view_support.js @@ -538,7 +538,16 @@ export default Mixin.create({ let owner = getOwner(this); let dispatcher = owner && owner.lookup('event_dispatcher:main'); - if (dispatcher && dispatcher.canDispatchToEventManager === null) { + deprecate( + `\`eventManager\` has been deprecated in ${this}.`, + false, + { + id: 'ember-views.event-dispatcher.canDispatchToEventManager', + until: '2.16.0' + } + ); + + if (dispatcher && !('canDispatchToEventManager' in dispatcher)) { dispatcher.canDispatchToEventManager = true; } } diff --git a/packages/ember-views/lib/system/event_dispatcher.js b/packages/ember-views/lib/system/event_dispatcher.js index 28d86a03162..909c7623278 100644 --- a/packages/ember-views/lib/system/event_dispatcher.js +++ b/packages/ember-views/lib/system/event_dispatcher.js @@ -6,6 +6,7 @@ import { assign, getOwner } from 'ember-utils'; import { assert } from 'ember-debug'; import { get, set, isNone, run } from 'ember-metal'; +import { deprecate } from 'ember-debug'; import { Object as EmberObject } from 'ember-runtime'; import jQuery from './jquery'; import ActionManager from './action_manager'; @@ -129,13 +130,22 @@ export default EmberObject.extend({ @type boolean @default false @since 1.7.0 + @deprecated @private */ - canDispatchToEventManager: null, init() { this._super(); assert('EventDispatcher should never be instantiated in fastboot mode. Please report this as an Ember bug.', environment.hasDOM); + + deprecate( + `\`canDispatchToEventManager\` has been deprecated in ${this}.`, + !('canDispatchToEventManager' in this), + { + id: 'ember-views.event-dispatcher.canDispatchToEventManager', + until: '2.16.0' + } + ); }, /**