Skip to content

Commit e927f3b

Browse files
committed
Merge pull request #11866 from martndemus/fix-deprecated-view-reopen
[BUGFIX release] Fix DeprecatedView (and friends) reopen function to delegate to original
2 parents eeae38e + aa5cfa9 commit e927f3b

File tree

6 files changed

+101
-24
lines changed

6 files changed

+101
-24
lines changed

packages/ember-views/lib/views/container_view.js

+17-7
Original file line numberDiff line numberDiff line change
@@ -306,17 +306,27 @@ var ContainerView = View.extend(MutableArray, {
306306
})
307307
});
308308

309+
function containerViewDeprecationMessage() {
310+
Ember.deprecate('Ember.ContainerView is deprecated.',
311+
!!Ember.ENV._ENABLE_LEGACY_VIEW_SUPPORT,
312+
{
313+
url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-containerview',
314+
id: 'ember-views.container-view',
315+
until: '2.4.0'
316+
});
317+
}
318+
309319
export var DeprecatedContainerView = ContainerView.extend({
310320
init() {
311-
Ember.deprecate('Ember.ContainerView is deprecated.',
312-
!!Ember.ENV._ENABLE_LEGACY_VIEW_SUPPORT,
313-
{
314-
url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-containerview',
315-
id: 'ember-views.container-view',
316-
until: '2.4.0'
317-
});
321+
containerViewDeprecationMessage();
318322
this._super.apply(this, arguments);
319323
}
320324
});
321325

326+
DeprecatedContainerView.reopen = function() {
327+
containerViewDeprecationMessage();
328+
ContainerView.reopen(...arguments);
329+
return this;
330+
};
331+
322332
export default ContainerView;

packages/ember-views/lib/views/select.js

+16-7
Original file line numberDiff line numberDiff line change
@@ -669,19 +669,28 @@ var Select = View.extend({
669669
}
670670
});
671671

672+
function selectViewDeprecationMessage() {
673+
Ember.deprecate(`Ember.Select is deprecated. Consult the Deprecations Guide for a migration strategy.`,
674+
!!Ember.ENV._ENABLE_LEGACY_VIEW_SUPPORT,
675+
{
676+
url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-select',
677+
id: 'ember-views.select-deprecated',
678+
until: '2.4.0'
679+
});
680+
}
681+
672682
var DeprecatedSelect = Select.extend({
673683
init() {
684+
selectViewDeprecationMessage();
674685
this._super(...arguments);
675-
Ember.deprecate(`Ember.Select is deprecated. Consult the Deprecations Guide for a migration strategy.`,
676-
!!Ember.ENV._ENABLE_LEGACY_VIEW_SUPPORT,
677-
{
678-
url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-select',
679-
id: 'ember-views.select-deprecated',
680-
until: '2.4.0'
681-
});
682686
}
683687
});
684688

689+
DeprecatedSelect.reopen = function() {
690+
selectViewDeprecationMessage();
691+
Select.reopen(...arguments);
692+
return this;
693+
};
685694

686695
function indexesOf(iterable, elements) {
687696
return elements === undefined ? [] : elements.map((item) => iterable.indexOf(item));

packages/ember-views/lib/views/view.js

+17-7
Original file line numberDiff line numberDiff line change
@@ -1530,19 +1530,29 @@ View.views = {};
15301530
// method.
15311531
View.childViewsProperty = childViewsProperty;
15321532

1533+
function viewDeprecationMessage() {
1534+
Ember.deprecate(`Ember.View is deprecated. Consult the Deprecations Guide for a migration strategy.`,
1535+
!!Ember.ENV._ENABLE_LEGACY_VIEW_SUPPORT,
1536+
{
1537+
url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-view',
1538+
id: 'ember-views.view-deprecated',
1539+
until: '2.4.0'
1540+
});
1541+
}
1542+
15331543
var DeprecatedView = View.extend({
15341544
init() {
1545+
viewDeprecationMessage();
15351546
this._super(...arguments);
1536-
Ember.deprecate(`Ember.View is deprecated. Consult the Deprecations Guide for a migration strategy.`,
1537-
!!Ember.ENV._ENABLE_LEGACY_VIEW_SUPPORT,
1538-
{
1539-
url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-view',
1540-
id: 'ember-views.view-deprecated',
1541-
until: '2.4.0'
1542-
});
15431547
}
15441548
});
15451549

1550+
DeprecatedView.reopen = function() {
1551+
viewDeprecationMessage();
1552+
View.reopen(...arguments);
1553+
return this;
1554+
};
1555+
15461556
export default View;
15471557

15481558
export { ViewContextSupport, ViewChildViewsSupport, ViewStateSupport, TemplateRenderingSupport, ClassNamesSupport, DeprecatedView };

packages/ember-views/tests/views/container_view_test.js

+17-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { computed } from 'ember-metal/computed';
55
import Controller from 'ember-runtime/controllers/controller';
66
import jQuery from 'ember-views/system/jquery';
77
import View from 'ember-views/views/view';
8-
import ContainerView from 'ember-views/views/container_view';
8+
import ContainerView, { DeprecatedContainerView } from 'ember-views/views/container_view';
99
import Registry from 'container/registry';
1010
import compile from 'ember-template-compiler/system/compile';
1111
import getElementStyle from 'ember-views/tests/test-helpers/get-element-style';
@@ -796,3 +796,19 @@ QUnit.test('renders contained view with omitted start tag and parent view contex
796796
equal(view.element.tagName, 'TABLE', 'container view is table');
797797
equal(view.element.childNodes[2].tagName, 'TR', 'inner view is tr');
798798
});
799+
800+
QUnit.module('DeprecatedContainerView');
801+
802+
QUnit.test('calling reopen on DeprecatedContainerView delegates to ContainerView', function() {
803+
expect(2);
804+
var originalReopen = ContainerView.reopen;
805+
var obj = {};
806+
807+
ContainerView.reopen = function(arg) { ok(arg === obj); };
808+
809+
expectDeprecation(() => {
810+
DeprecatedContainerView.reopen(obj);
811+
}, /Ember.ContainerView is deprecated./);
812+
813+
ContainerView.reopen = originalReopen;
814+
});

packages/ember-views/tests/views/select_test.js

+17-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Ember from 'ember-metal/core';
22
import run from 'ember-metal/run_loop';
33
import EmberObject from 'ember-runtime/system/object';
4-
import EmberSelect from 'ember-views/views/select';
4+
import EmberSelect, { DeprecatedSelect } from 'ember-views/views/select';
55
import jQuery from 'ember-views/system/jquery';
66
import EventDispatcher from 'ember-views/system/event_dispatcher';
77
import SafeString from 'htmlbars-util/safe-string';
@@ -804,3 +804,19 @@ QUnit.test('should be able to set the current selection by value', function() {
804804
equal(select.get('value'), 'ebryn');
805805
equal(select.get('selection'), ebryn);
806806
});
807+
808+
QUnit.module('DeprecatedSelect');
809+
810+
QUnit.test('calling reopen on DeprecatedSelect delegates to Select', function() {
811+
expect(2);
812+
var originalReopen = EmberSelect.reopen;
813+
var obj = {};
814+
815+
EmberSelect.reopen = function(arg) { ok(arg === obj); };
816+
817+
expectDeprecation(() => {
818+
DeprecatedSelect.reopen(obj);
819+
}, /Ember.Select is deprecated./);
820+
821+
EmberSelect.reopen = originalReopen;
822+
});

packages/ember-views/tests/views/view_test.js

+17-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Ember from 'ember-metal/core';
22
import { computed } from 'ember-metal/computed';
33
import run from 'ember-metal/run_loop';
44
import jQuery from 'ember-views/system/jquery';
5-
import EmberView from 'ember-views/views/view';
5+
import EmberView, { DeprecatedView } from 'ember-views/views/view';
66
import { compile } from 'ember-template-compiler';
77

88
import { registerKeyword, resetKeyword } from 'ember-htmlbars/tests/utils';
@@ -159,3 +159,19 @@ QUnit.test('propagates dependent-key invalidated bindings upstream', function()
159159
equal(childView.get('childProp'), 'new-value', 'pre-cond - new value is propagated to CP');
160160
equal(view.get('parentProp'), 'new-value', 'new value is propagated across template');
161161
});
162+
163+
QUnit.module('DeprecatedView');
164+
165+
QUnit.test('calling reopen on DeprecatedView delegates to View', function() {
166+
expect(2);
167+
var originalReopen = EmberView.reopen;
168+
var obj = {};
169+
170+
EmberView.reopen = function(arg) { ok(arg === obj); };
171+
172+
expectDeprecation(() => {
173+
DeprecatedView.reopen(obj);
174+
}, /Ember.View is deprecated./);
175+
176+
EmberView.reopen = originalReopen;
177+
});

0 commit comments

Comments
 (0)