refactor: core, http & platform-webworker to remove public private class separation (#19143)
The private classes `ApplicationRef_`, `PlatformRef_`, `JSONPConnection_`, `JSONPBackend_`, `ClientMessageBrokerFactory_`, `ServiceMessageBroker_`, `ClientMessageBroker_` and `ServiceMessageBrokerFactory_` have been removed and merged into their public equivalents. The size of the minified umd bundles have been slightly decreased: | package | before | after | | -------------------|------------|------------| | core | 217.791 kb | 217.144 kb | | http | 33.260 kb | 32.838 kb | | platform-webworker | 56.015 kb | 54.933 kb | PR Close #19143
This commit is contained in:

committed by
Matias Niemelä

parent
0c44e733ad
commit
b6431c60e6
@ -22,11 +22,16 @@ const JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';
|
||||
const JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';
|
||||
|
||||
/**
|
||||
* Abstract base class for an in-flight JSONP request.
|
||||
* Base class for an in-flight JSONP request.
|
||||
*
|
||||
* @deprecated use @angular/common/http instead
|
||||
*/
|
||||
export abstract class JSONPConnection implements Connection {
|
||||
export class JSONPConnection implements Connection {
|
||||
private _id: string;
|
||||
private _script: Element;
|
||||
private _responseData: any;
|
||||
private _finished: boolean = false;
|
||||
|
||||
/**
|
||||
* The {@link ReadyState} of this request.
|
||||
*/
|
||||
@ -42,22 +47,9 @@ export abstract class JSONPConnection implements Connection {
|
||||
*/
|
||||
response: Observable<Response>;
|
||||
|
||||
/**
|
||||
* Callback called when the JSONP request completes, to notify the application
|
||||
* of the new data.
|
||||
*/
|
||||
abstract finished(data?: any): void;
|
||||
}
|
||||
|
||||
export class JSONPConnection_ extends JSONPConnection {
|
||||
private _id: string;
|
||||
private _script: Element;
|
||||
private _responseData: any;
|
||||
private _finished: boolean = false;
|
||||
|
||||
/** @internal */
|
||||
constructor(
|
||||
req: Request, private _dom: BrowserJsonp, private baseResponseOptions?: ResponseOptions) {
|
||||
super();
|
||||
if (req.method !== RequestMethod.Get) {
|
||||
throw new TypeError(JSONP_ERR_WRONG_METHOD);
|
||||
}
|
||||
@ -129,6 +121,10 @@ export class JSONPConnection_ extends JSONPConnection {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback called when the JSONP request completes, to notify the application
|
||||
* of the new data.
|
||||
*/
|
||||
finished(data?: any) {
|
||||
// Don't leak connections
|
||||
this._finished = true;
|
||||
@ -143,15 +139,14 @@ export class JSONPConnection_ extends JSONPConnection {
|
||||
*
|
||||
* @deprecated use @angular/common/http instead
|
||||
*/
|
||||
export abstract class JSONPBackend extends ConnectionBackend {}
|
||||
|
||||
@Injectable()
|
||||
export class JSONPBackend_ extends JSONPBackend {
|
||||
export class JSONPBackend extends ConnectionBackend {
|
||||
/** @internal */
|
||||
constructor(private _browserJSONP: BrowserJsonp, private _baseResponseOptions: ResponseOptions) {
|
||||
super();
|
||||
}
|
||||
|
||||
createConnection(request: Request): JSONPConnection {
|
||||
return new JSONPConnection_(request, this._browserJSONP, this._baseResponseOptions);
|
||||
return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import {NgModule} from '@angular/core';
|
||||
|
||||
import {BrowserJsonp} from './backends/browser_jsonp';
|
||||
import {BrowserXhr} from './backends/browser_xhr';
|
||||
import {JSONPBackend, JSONPBackend_} from './backends/jsonp_backend';
|
||||
import {JSONPBackend} from './backends/jsonp_backend';
|
||||
import {CookieXSRFStrategy, XHRBackend} from './backends/xhr_backend';
|
||||
import {BaseRequestOptions, RequestOptions} from './base_request_options';
|
||||
import {BaseResponseOptions, ResponseOptions} from './base_response_options';
|
||||
@ -70,7 +70,7 @@ export class HttpModule {
|
||||
BrowserJsonp,
|
||||
{provide: RequestOptions, useClass: BaseRequestOptions},
|
||||
{provide: ResponseOptions, useClass: BaseResponseOptions},
|
||||
{provide: JSONPBackend, useClass: JSONPBackend_},
|
||||
JSONPBackend,
|
||||
],
|
||||
})
|
||||
export class JsonpModule {
|
||||
|
@ -10,7 +10,7 @@ import {Injector} from '@angular/core';
|
||||
import {AsyncTestCompleter, SpyObject, afterEach, beforeEach, describe, inject, it} from '@angular/core/testing/src/testing_internal';
|
||||
import {expect} from '@angular/platform-browser/testing/src/matchers';
|
||||
import {BrowserJsonp} from '../../src/backends/browser_jsonp';
|
||||
import {JSONPBackend, JSONPBackend_, JSONPConnection, JSONPConnection_} from '../../src/backends/jsonp_backend';
|
||||
import {JSONPBackend, JSONPConnection} from '../../src/backends/jsonp_backend';
|
||||
import {BaseRequestOptions, RequestOptions} from '../../src/base_request_options';
|
||||
import {BaseResponseOptions, ResponseOptions} from '../../src/base_response_options';
|
||||
import {ReadyState, RequestMethod, ResponseType} from '../../src/enums';
|
||||
@ -48,14 +48,14 @@ class MockBrowserJsonp extends BrowserJsonp {
|
||||
|
||||
export function main() {
|
||||
describe('JSONPBackend', () => {
|
||||
let backend: JSONPBackend_;
|
||||
let backend: JSONPBackend;
|
||||
let sampleRequest: Request;
|
||||
|
||||
beforeEach(() => {
|
||||
const injector = Injector.create([
|
||||
{provide: ResponseOptions, useClass: BaseResponseOptions, deps: []},
|
||||
{provide: BrowserJsonp, useClass: MockBrowserJsonp, deps: []},
|
||||
{provide: JSONPBackend, useClass: JSONPBackend_, deps: [BrowserJsonp, ResponseOptions]}
|
||||
{provide: JSONPBackend, useClass: JSONPBackend, deps: [BrowserJsonp, ResponseOptions]}
|
||||
]);
|
||||
backend = injector.get(JSONPBackend);
|
||||
const base = new BaseRequestOptions();
|
||||
@ -75,7 +75,7 @@ export function main() {
|
||||
describe('JSONPConnection', () => {
|
||||
it('should use the injected BaseResponseOptions to create the response',
|
||||
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {
|
||||
const connection = new JSONPConnection_(
|
||||
const connection = new JSONPConnection(
|
||||
sampleRequest, new MockBrowserJsonp(),
|
||||
new ResponseOptions({type: ResponseType.Error}));
|
||||
connection.response.subscribe(res => {
|
||||
@ -88,7 +88,7 @@ export function main() {
|
||||
|
||||
it('should ignore load/callback when disposed',
|
||||
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {
|
||||
const connection = new JSONPConnection_(sampleRequest, new MockBrowserJsonp());
|
||||
const connection = new JSONPConnection(sampleRequest, new MockBrowserJsonp());
|
||||
const spy = new SpyObject();
|
||||
const loadSpy = spy.spy('load');
|
||||
const errorSpy = spy.spy('error');
|
||||
@ -111,7 +111,7 @@ export function main() {
|
||||
|
||||
it('should report error if loaded without invoking callback',
|
||||
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {
|
||||
const connection = new JSONPConnection_(sampleRequest, new MockBrowserJsonp());
|
||||
const connection = new JSONPConnection(sampleRequest, new MockBrowserJsonp());
|
||||
connection.response.subscribe(
|
||||
res => {
|
||||
expect('response listener called').toBe(false);
|
||||
@ -127,7 +127,7 @@ export function main() {
|
||||
|
||||
it('should report error if script contains error',
|
||||
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {
|
||||
const connection = new JSONPConnection_(sampleRequest, new MockBrowserJsonp());
|
||||
const connection = new JSONPConnection(sampleRequest, new MockBrowserJsonp());
|
||||
|
||||
connection.response.subscribe(
|
||||
res => {
|
||||
@ -149,14 +149,14 @@ export function main() {
|
||||
const base = new BaseRequestOptions();
|
||||
const req = new Request(base.merge(
|
||||
new RequestOptions({url: 'https://google.com', method: method})) as any);
|
||||
expect(() => new JSONPConnection_(req, new MockBrowserJsonp()).response.subscribe())
|
||||
expect(() => new JSONPConnection(req, new MockBrowserJsonp()).response.subscribe())
|
||||
.toThrowError();
|
||||
});
|
||||
});
|
||||
|
||||
it('should respond with data passed to callback',
|
||||
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {
|
||||
const connection = new JSONPConnection_(sampleRequest, new MockBrowserJsonp());
|
||||
const connection = new JSONPConnection(sampleRequest, new MockBrowserJsonp());
|
||||
|
||||
connection.response.subscribe(res => {
|
||||
expect(res.json()).toEqual(({fake_payload: true, blob_id: 12345}));
|
||||
|
@ -42,7 +42,7 @@ export function main() {
|
||||
|
||||
http = injector.get(Http);
|
||||
jsonp = injector.get(Jsonp);
|
||||
jsonpBackend = injector.get(JSONPBackend) as MockBackend;
|
||||
jsonpBackend = injector.get(JSONPBackend) as any as MockBackend;
|
||||
xhrBackend = injector.get(XHRBackend) as any as MockBackend;
|
||||
|
||||
let xhrCreatedConnections = 0;
|
||||
|
Reference in New Issue
Block a user