Skip to content

Commit b8613c2

Browse files
committed
trying a workaround to FireFox
1 parent 25779aa commit b8613c2

File tree

3 files changed

+64
-46
lines changed

3 files changed

+64
-46
lines changed

packages/@ember/application/globals-resolver.js

+49-35
Original file line numberDiff line numberDiff line change
@@ -97,19 +97,35 @@ export const Resolver = EmberObject.extend({
9797
@public
9898
*/
9999

100-
const DefaultResolver = EmberObject.extend({
100+
class DefaultResolver extends EmberObject {
101+
constructor(props) {
102+
if (props == null) {
103+
throw new Error('create missing props');
104+
}
105+
super(props);
106+
}
107+
108+
static create(props) {
109+
if (props == null) {
110+
throw new Error('static create missing props');
111+
}
112+
return super.create(props);
113+
}
114+
101115
/**
102116
This will be set to the Application instance when it is
103117
created.
104118
105119
@property namespace
106120
@public
107121
*/
108-
namespace: null,
109122

110123
init() {
124+
if (this.namespace == null) {
125+
throw new Error('init missing namespace');
126+
}
111127
this._parseNameCache = dictionary(null);
112-
},
128+
}
113129

114130
normalize(fullName) {
115131
let [type, name] = fullName.split(':');
@@ -128,7 +144,7 @@ const DefaultResolver = EmberObject.extend({
128144
} else {
129145
return fullName;
130146
}
131-
},
147+
}
132148

133149
/**
134150
This method is called via the container's resolver method.
@@ -162,7 +178,7 @@ const DefaultResolver = EmberObject.extend({
162178
}
163179

164180
return resolved;
165-
},
181+
}
166182

167183
/**
168184
Convert the string name of the form 'type:name' to
@@ -178,7 +194,7 @@ const DefaultResolver = EmberObject.extend({
178194
return (
179195
this._parseNameCache[fullName] || (this._parseNameCache[fullName] = this._parseName(fullName))
180196
);
181-
},
197+
}
182198

183199
_parseName(fullName) {
184200
let [type, fullNameWithoutType] = fullName.split(':');
@@ -216,7 +232,7 @@ const DefaultResolver = EmberObject.extend({
216232
root,
217233
resolveMethodName: `resolve${resolveMethodName}`,
218234
};
219-
},
235+
}
220236

221237
/**
222238
Returns a human-readable description for a fullName. Used by the
@@ -243,11 +259,11 @@ const DefaultResolver = EmberObject.extend({
243259
}
244260

245261
return description;
246-
},
262+
}
247263

248264
makeToString(factory) {
249265
return factory.toString();
250-
},
266+
}
251267

252268
/**
253269
Given a parseName object (output from `parseName`), apply
@@ -264,7 +280,7 @@ const DefaultResolver = EmberObject.extend({
264280
} else {
265281
parsedName.name = parsedName.name.replace(/\./g, '_');
266282
}
267-
},
283+
}
268284
/**
269285
Look up the template in Ember.TEMPLATES
270286
@@ -277,7 +293,7 @@ const DefaultResolver = EmberObject.extend({
277293
let templateName = parsedName.fullNameWithoutType.replace(/\./g, '/');
278294

279295
return getTemplate(templateName) || getTemplate(decamelize(templateName));
280-
},
296+
}
281297

282298
/**
283299
Lookup the view using `resolveOther`
@@ -290,7 +306,7 @@ const DefaultResolver = EmberObject.extend({
290306
resolveView(parsedName) {
291307
this.useRouterNaming(parsedName);
292308
return this.resolveOther(parsedName);
293-
},
309+
}
294310

295311
/**
296312
Lookup the controller using `resolveOther`
@@ -303,7 +319,7 @@ const DefaultResolver = EmberObject.extend({
303319
resolveController(parsedName) {
304320
this.useRouterNaming(parsedName);
305321
return this.resolveOther(parsedName);
306-
},
322+
}
307323
/**
308324
Lookup the route using `resolveOther`
309325
@@ -315,7 +331,7 @@ const DefaultResolver = EmberObject.extend({
315331
resolveRoute(parsedName) {
316332
this.useRouterNaming(parsedName);
317333
return this.resolveOther(parsedName);
318-
},
334+
}
319335

320336
/**
321337
Lookup the model on the Application namespace
@@ -330,7 +346,7 @@ const DefaultResolver = EmberObject.extend({
330346
let factory = get(parsedName.root, className);
331347

332348
return factory;
333-
},
349+
}
334350
/**
335351
Look up the specified object (from parsedName) on the appropriate
336352
namespace (usually on the Application)
@@ -342,7 +358,7 @@ const DefaultResolver = EmberObject.extend({
342358
*/
343359
resolveHelper(parsedName) {
344360
return this.resolveOther(parsedName);
345-
},
361+
}
346362
/**
347363
Look up the specified object (from parsedName) on the appropriate
348364
namespace (usually on the Application)
@@ -356,12 +372,12 @@ const DefaultResolver = EmberObject.extend({
356372
let className = classify(parsedName.name) + classify(parsedName.type);
357373
let factory = get(parsedName.root, className);
358374
return factory;
359-
},
375+
}
360376

361377
resolveMain(parsedName) {
362378
let className = classify(parsedName.type);
363379
return get(parsedName.root, className);
364-
},
380+
}
365381

366382
/**
367383
Used to iterate all items of a given type.
@@ -388,7 +404,7 @@ const DefaultResolver = EmberObject.extend({
388404
}
389405

390406
return known;
391-
},
407+
}
392408

393409
/**
394410
Converts provided name from the backing namespace into a container lookup name.
@@ -409,30 +425,28 @@ const DefaultResolver = EmberObject.extend({
409425
let dasherizedName = dasherize(namePrefix);
410426

411427
return `${type}:${dasherizedName}`;
412-
},
413-
});
428+
}
429+
}
414430

415431
export default DefaultResolver;
416432

417433
if (DEBUG) {
418-
DefaultResolver.reopen({
419-
/**
434+
/**
420435
@method _logLookup
421436
@param {Boolean} found
422437
@param {Object} parsedName
423438
@private
424439
*/
425-
_logLookup(found, parsedName) {
426-
let symbol = found ? '[✓]' : '[ ]';
427-
428-
let padding;
429-
if (parsedName.fullName.length > 60) {
430-
padding = '.';
431-
} else {
432-
padding = new Array(60 - parsedName.fullName.length).join('.');
433-
}
440+
DefaultResolver.prototype._logLookup = function(found, parsedName) {
441+
let symbol = found ? '[✓]' : '[ ]';
434442

435-
info(symbol, parsedName.fullName, padding, this.lookupDescription(parsedName.fullName));
436-
},
437-
});
443+
let padding;
444+
if (parsedName.fullName.length > 60) {
445+
padding = '.';
446+
} else {
447+
padding = new Array(60 - parsedName.fullName.length).join('.');
448+
}
449+
450+
info(symbol, parsedName.fullName, padding, this.lookupDescription(parsedName.fullName));
451+
};
438452
}

packages/@ember/engine/index.js

+3-5
Original file line numberDiff line numberDiff line change
@@ -452,11 +452,9 @@ Engine.reopenClass({
452452
@return {*} the resolved value for a given lookup
453453
*/
454454
function resolverFor(namespace) {
455-
let ResolverClass = namespace.get('Resolver') || DefaultResolver;
456-
457-
return ResolverClass.create({
458-
namespace,
459-
});
455+
let ResolverClass = get(namespace, 'Resolver') || DefaultResolver;
456+
let props = { namespace };
457+
return ResolverClass.create(props);
460458
}
461459

462460
function buildInitializerMethod(bucketName, humanName) {

packages/internal-test-helpers/lib/build-owner.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,25 @@ import ApplicationInstance from '@ember/application/instance';
44
import Application from '@ember/application';
55
import { RegistryProxyMixin, ContainerProxyMixin, Object as EmberObject } from 'ember-runtime';
66

7+
class ResolverWrapper {
8+
constructor(resolver) {
9+
this.resolver = resolver;
10+
}
11+
12+
create() {
13+
return this.resolver;
14+
}
15+
}
16+
717
export default function buildOwner(options = {}) {
818
let ownerOptions = options.ownerOptions || {};
919
let resolver = options.resolver;
1020
let bootOptions = options.bootOptions || {};
1121

1222
let Owner = EmberObject.extend(RegistryProxyMixin, ContainerProxyMixin);
1323

14-
let namespace = EmberObject.create({
15-
Resolver: {
16-
create() {
17-
return resolver;
18-
},
19-
},
24+
let namespace = new EmberObject({
25+
Resolver: new ResolverWrapper(resolver),
2026
});
2127

2228
let fallbackRegistry = Application.buildRegistry(namespace);

0 commit comments

Comments
 (0)