message: fix(platform-server): provide XhrFactory for HttpClient
diff: import {animate, style, transition, trigger} from '@angular/animations';
  import {APP_BASE_HREF, PlatformLocation, isPlatformServer} from '@angular/common';
  +import {HttpClient, HttpClientModule} from '@angular/common/http';
  +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
  import {ApplicationRef, CompilerFactory, Component, HostListener, Input, NgModule, NgModuleRef, NgZone, PLATFORM_ID, PlatformRef, ViewEncapsulation, destroyPlatform, getPlatform} from '@angular/core';
  import {TestBed, async, inject} from '@angular/core/testing';
  import {Http, HttpModule, Response, ResponseOptions, XHRBackend} from '@angular/http';
  @@ -145,6 +147,14 @@ export class HttpBeforeExampleModule {
  export class HttpAfterExampleModule {
  }
  +@NgModule({
  + bootstrap: [MyServerApp],
  + declarations: [MyServerApp],
  + imports: [ServerModule, HttpClientModule, HttpClientTestingModule],
  +})
  +export class HttpClientExmapleModule {
  +}
  +
  @Component({selector: 'app', template: `<img [src]="'link'">`})
  class ImageApp {
  }
  @@ -534,5 +544,45 @@ export function main() {
  });
  }));
  });
  + describe('HttpClient', () => {
  + it('can inject HttpClient', async(() => {
  + const platform = platformDynamicServer(
  + [{provide: INITIAL_CONFIG, useValue: {document: '<app></app>'}}]);
  + platform.bootstrapModule(HttpClientExmapleModule).then(ref => {
  + expect(ref.injector.get(HttpClient) instanceof HttpClient).toBeTruthy();
  + });
  + }));
  + it('can make HttpClient requests', async(() => {
  + const platform = platformDynamicServer(
  + [{provide: INITIAL_CONFIG, useValue: {document: '<app></app>'}}]);
  + platform.bootstrapModule(HttpClientExmapleModule).then(ref => {
  + const mock = ref.injector.get(HttpTestingController) as HttpTestingController;
  + const http = ref.injector.get(HttpClient);
  + ref.injector.get(NgZone).run(() => {
  + http.get('http://localhost/testing').subscribe(body => {
  + NgZone.assertInAngularZone();
  + expect(body).toEqual('success!');
  + });
  + mock.expectOne('http://localhost/testing').flush('success!');
  + });
  + });
  + }));
  + it('requests are macrotasks', async(() => {
  + const platform = platformDynamicServer(
  + [{provide: INITIAL_CONFIG, useValue: {document: '<app></app>'}}]);
  + platform.bootstrapModule(HttpClientExmapleModule).then(ref => {
  + const mock = ref.injector.get(HttpTestingController) as HttpTestingController;
  + const http = ref.injector.get(HttpClient);
  + ref.injector.get(NgZone).run(() => {
  + http.get('http://localhost/testing').subscribe(body => {
  + expect(body).toEqual('success!');
  + });
  + expect(ref.injector.get(NgZone).hasPendingMacrotasks).toBeTruthy();
  + mock.expectOne('http://localhost/testing').flush('success!');
  + expect(ref.injector.get(NgZone).hasPendingMacrotasks).toBeFalsy();
  + });
  + });
  + }));
  + });
  });
  }
  