Skip to content

Commit a75be5c

Browse files
authored
Merge pull request #13720 from emberjs/prevent-safestring-deprecation-without-feature
[FEATURE ember-string-ishtmlsafe] Prevent deprecation when not enabled.
2 parents 10cc6e8 + c802a8d commit a75be5c

File tree

2 files changed

+40
-21
lines changed

2 files changed

+40
-21
lines changed

packages/ember-glimmer/tests/compat/safe-string-test.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,43 @@ import EmberHandlebars from 'ember-htmlbars/compat';
22
import { isHtmlSafe } from 'ember-htmlbars/utils/string';
33
import { TestCase } from '../utils/abstract-test-case';
44
import { moduleFor } from '../utils/test-case';
5+
import isEnabled from 'ember-metal/features';
56

67

78
moduleFor('compat - SafeString', class extends TestCase {
89
['@test using new results in a deprecation']() {
910
let result;
1011

11-
expectDeprecation(() => {
12+
if (isEnabled('ember-string-ishtmlsafe')) {
13+
expectDeprecation(() => {
14+
result = new EmberHandlebars.SafeString('<b>test</b>');
15+
}, 'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe');
16+
} else {
1217
result = new EmberHandlebars.SafeString('<b>test</b>');
13-
}, 'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe');
18+
}
1419

1520
this.assert.equal(result.toHTML(), '<b>test</b>');
1621

17-
// Ensure this functionality is maintained for backwards compat, but also deprecated.
18-
expectDeprecation(() => {
22+
if (isEnabled('ember-string-ishtmlsafe')) {
23+
// Ensure this functionality is maintained for backwards compat, but also deprecated.
24+
expectDeprecation(() => {
25+
this.assert.ok(result instanceof EmberHandlebars.SafeString);
26+
}, 'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe');
27+
} else {
1928
this.assert.ok(result instanceof EmberHandlebars.SafeString);
20-
}, 'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe');
29+
}
2130
}
2231

2332
['@test isHtmlSafe should detect SafeString']() {
2433
let safeString;
2534

26-
expectDeprecation(() => {
35+
if (isEnabled('ember-string-ishtmlsafe')) {
36+
expectDeprecation(() => {
37+
safeString = new EmberHandlebars.SafeString('<b>test</b>');
38+
}, 'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe');
39+
} else {
2740
safeString = new EmberHandlebars.SafeString('<b>test</b>');
28-
}, 'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe');
41+
}
2942

3043
this.assert.ok(isHtmlSafe(safeString));
3144
}

packages/ember-htmlbars/lib/compat.js

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,29 @@ import {
44
SafeString,
55
escapeExpression
66
} from 'ember-htmlbars/utils/string';
7+
import isEnabled from 'ember-metal/features';
78

89
let EmberHandlebars = Ember.Handlebars = Ember.Handlebars || {};
9-
Object.defineProperty(EmberHandlebars, 'SafeString', {
10-
get() {
11-
deprecate(
12-
'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe',
13-
false,
14-
{
15-
id: 'ember-htmlbars.ember-handlebars-safestring',
16-
until: '3.0.0',
17-
url: 'http://emberjs.com/deprecations/v2.x#toc_use-ember-string-htmlsafe-over-ember-handlebars-safestring'
18-
}
19-
);
2010

21-
return SafeString;
22-
}
23-
});
11+
if (isEnabled('ember-string-ishtmlsafe')) {
12+
Object.defineProperty(EmberHandlebars, 'SafeString', {
13+
get() {
14+
deprecate(
15+
'Ember.Handlebars.SafeString is deprecated in favor of Ember.String.htmlSafe',
16+
false,
17+
{
18+
id: 'ember-htmlbars.ember-handlebars-safestring',
19+
until: '3.0.0',
20+
url: 'http://emberjs.com/deprecations/v2.x#toc_use-ember-string-htmlsafe-over-ember-handlebars-safestring'
21+
}
22+
);
23+
24+
return SafeString;
25+
}
26+
});
27+
} else {
28+
EmberHandlebars.SafeString = SafeString;
29+
}
2430

2531
EmberHandlebars.Utils = {
2632
escapeExpression: escapeExpression

0 commit comments

Comments
 (0)