public/lib/emberjs/ember.js
function(fullName, property, injectionName) {
        if (this.parent) { illegalChildOperation('injection'); }

        var normalizedName = this.normalize(fullName);
        var normalizedInjectionName = this.normalize(injectionName);

        validateFullName(injectionName);

        if (fullName.indexOf(':') === -1) {
          return this.factoryTypeInjection(normalizedName, property, normalizedInjectionName);
        }

        Ember.assert('fullName must be a proper full name', validateFullName(fullName));

        if (this.factoryCache[normalizedName]) {
          throw new Error('Attempted to register a factoryInjection for a type that has already ' +
            'been looked up. (\'' + normalizedName + '\', \'' + property + '\', \'' + injectionName + '\')');
        }

        addInjection(this.factoryInjections, normalizedName, property, normalizedInjectionName);
      }
function(fullName, property, injectionName) {
        if (this.parent) { illegalChildOperation('injection'); }

        var normalizedName = this.normalize(fullName);
        var normalizedInjectionName = this.normalize(injectionName);

        validateFullName(injectionName);

        if (fullName.indexOf(':') === -1) {
          return this.factoryTypeInjection(normalizedName, property, normalizedInjectionName);
        }

        Ember.assert('fullName must be a proper full name', validateFullName(fullName));

        if (this.factoryCache[normalizedName]) {
          throw new Error('Attempted to register a factoryInjection for a type that has already ' +
            'been looked up. (\'' + normalizedName + '\', \'' + property + '\', \'' + injectionName + '\')');
        }

        addInjection(this.factoryInjections, normalizedName, property, normalizedInjectionName);
      }
function ( fullName , property , injectionName ) { if ( this . parent ) { illegalChildOperation ( 'injection' ) ; } var normalizedName = this . normalize ( fullName ) ; var normalizedInjectionName = this . normalize ( injectionName ) ; validateFullName ( injectionName ) ; if ( fullName . indexOf ( ':' ) === - 1 ) { return this . factoryTypeInjection ( normalizedName , property , normalizedInjectionName ) ; } Ember . assert ( 'fullName must be a proper full name' , validateFullName ( fullName ) ) ; if ( this . factoryCache [ normalizedName ] ) { throw new Error ( 'Attempted to register a factoryInjection for a type that has already ' + 'been looked up. (\'' + normalizedName + '\', \'' + property + '\', \'' + injectionName + '\')' ) ; } addInjection ( this . factoryInjections , normalizedName , property , normalizedInjectionName ) ; }
Defines factory injection rules.

Similar to regular injection rules, but are run against factories, via
`Container#lookupFactory`.

These rules are used to inject objects onto factories when they
are looked up.

Two forms of injections are possible:

Injecting one fullName on another fullName
Injecting one fullName on a type

Example:

```javascript
var container = new Container();

container.register('store:main', Store);
container.register('store:secondary', OtherStore);
container.register('model:user', User);
container.register('model:post', Post);

injecting one fullName on another type
container.factoryInjection('model', 'store', 'store:main');

injecting one fullName on another fullName
container.factoryInjection('model:post', 'secondaryStore', 'store:secondary');

var UserFactory = container.lookupFactory('model:user');
var PostFactory = container.lookupFactory('model:post');
var store = container.lookup('store:main');

UserFactory.store instanceof Store; //=> true
UserFactory.secondaryStore instanceof OtherStore; //=> false

PostFactory.store instanceof Store; //=> true
PostFactory.secondaryStore instanceof OtherStore; //=> true

and both models share the same source instance
UserFactory.store === PostFactory.store; //=> true
```

@method factoryInjection
@param {String} factoryName
@param {String} property
@param {String} injectionName
Defines factory injection rules .