Skip to content

Commit 355fdde

Browse files
committed
The webinspector debugger now does not requre http-request
1 parent 1ec28cb commit 355fdde

10 files changed

Lines changed: 324 additions & 257 deletions

debugger/debugger.ts

Lines changed: 34 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,39 @@
1-
import definition = require("./InspectorBackendCommands");
2-
import http_request = require("http/http-request");
3-
4-
var resources_datas = [];
5-
6-
@definition.DomainDispatcher("Network")
7-
export class NetworkDomainDebugger implements definition.NetworkDomain.NetworkDomainDispatcher {
8-
private events: definition.NetworkDomain.NetworkFrontend;
1+
export namespace domains {
2+
export namespace network {
3+
export interface NetworkDomainDebugger {
4+
create(): domains.network.NetworkRequest;
5+
}
6+
7+
export interface Headers {
8+
}
99

10-
constructor(dispatchMessage: (message: String) => void) {
11-
this.events = new definition.NetworkDomain.NetworkFrontend(dispatchMessage);
12-
}
10+
export interface Request {
11+
url: string;
12+
method: string;
13+
headers: domains.network.Headers;
14+
postData?: string;
15+
}
1316

14-
/**
15-
* Enables network tracking, network events will now be delivered to the client.
16-
*/
17-
enable(): void {
18-
http_request.domainDebugger = {
19-
"events": this.events,
20-
"resource_datas": resources_datas
21-
}
22-
}
23-
24-
/**
25-
* Disables network tracking, prevents network events from being sent to the client.
26-
*/
27-
disable(): void {
28-
//
29-
}
30-
31-
/**
32-
* Specifies whether to always send extra HTTP headers with the requests from this page.
33-
*/
34-
setExtraHTTPHeaders(params: definition.NetworkDomain.SetExtraHTTPHeadersMethodArguments): void {
35-
//
36-
}
37-
38-
/**
39-
* Returns content served for the given request.
40-
*/
41-
getResponseBody(params: definition.NetworkDomain.GetResponseBodyMethodArguments): { body: string, base64Encoded: boolean } {
42-
var resource_data = resources_datas[params.requestId];
43-
var body = resource_data.hasTextContent ? NSString.alloc().initWithDataEncoding(resource_data.data, 4).toString() :
44-
resource_data.data.base64EncodedStringWithOptions(0);
17+
export interface Response {
18+
url: string;
19+
status: number;
20+
statusText: string;
21+
headers: Headers;
22+
headersText?: string;
23+
mimeType: string;
24+
requestHeaders?: domains.network.Headers;
25+
requestHeadersText?: string;
26+
fromDiskCache?: boolean;
27+
}
4528

46-
if(resource_data) {
47-
return {
48-
body: body,
49-
base64Encoded: !resource_data.hasTextContent
50-
};
51-
}
52-
}
53-
54-
/**
55-
* Tells whether clearing browser cache is supported.
56-
*/
57-
canClearBrowserCache(): { result: boolean } {
58-
return {
59-
result: false
60-
};
61-
}
62-
63-
/**
64-
* Clears browser cache.
65-
*/
66-
clearBrowserCache(): void {
67-
//
68-
}
69-
70-
/**
71-
* Tells whether clearing browser cookies is supported.
72-
*/
73-
canClearBrowserCookies(): { result: boolean } {
74-
return {
75-
result: false
76-
};
77-
}
78-
79-
/**
80-
* Clears browser cookies.
81-
*/
82-
clearBrowserCookies(): void {
83-
//
84-
}
85-
86-
/**
87-
* Toggles ignoring cache for each request. If <code>true</code>, cache will not be used.
88-
*/
89-
setCacheDisabled(params: definition.NetworkDomain.SetCacheDisabledMethodArguments): void {
90-
//
91-
}
92-
93-
/**
94-
* Loads a resource in the context of a frame on the inspected page without cross origin checks.
95-
*/
96-
loadResource(params: definition.NetworkDomain.LoadResourceMethodArguments): { content: string, mimeType: string, status: number } {
97-
return {
98-
content: "",
99-
mimeType: "",
100-
status: 200
29+
export interface NetworkRequest {
30+
mimeType: string;
31+
data: any;
32+
responseReceived(response: domains.network.Response);
33+
loadingFinished();
34+
requestWillBeSent(request: domains.network.Request);
10135
}
10236
}
103-
}
37+
}
38+
39+
export var network: domains.network.NetworkDomainDebugger;

debugger/webinspector.ios.ts

Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
import * as inspectorCommandTypes from "./InspectorBackendCommands.ios";
2+
var inspectorCommands: typeof inspectorCommandTypes = require("./InspectorBackendCommands");
3+
4+
import * as debuggerDomains from "./debugger";
5+
6+
declare var __inspectorTimestamp;
7+
8+
const frameId = "NativeScriptMainFrameIdentifier";
9+
const loaderId = "Loader Identifier";
10+
11+
var resources_datas = [];
12+
13+
var documentTypeByMimeType = {
14+
"text/xml": "Document",
15+
"text/plain": "Document",
16+
"text/html": "Document",
17+
"application/xml": "Document",
18+
"application/xhtml+xml": "Document",
19+
"text/css": "Stylesheet",
20+
"text/javascript": "Script",
21+
"text/ecmascript": "Script",
22+
"application/javascript": "Script",
23+
"application/ecmascript": "Script",
24+
"application/x-javascript": "Script",
25+
"application/json": "Script",
26+
"application/x-json": "Script",
27+
"text/x-javascript": "Script",
28+
"text/x-json": "Script",
29+
"text/typescript": "Script"
30+
}
31+
32+
export class Request {
33+
34+
private _resourceType: string;
35+
private _data: any;
36+
private _mimeType: string;
37+
38+
constructor(private _networkDomainDebugger: NetworkDomainDebugger, private _requestID: string) {
39+
}
40+
41+
get mimeType(): string {
42+
return this._mimeType;
43+
}
44+
45+
set mimeType(value: string) {
46+
if (this._mimeType !== value) {
47+
this._mimeType = value;
48+
49+
var resourceType = "Other";
50+
51+
if (this._mimeType in documentTypeByMimeType) {
52+
resourceType = documentTypeByMimeType[this._mimeType];
53+
}
54+
55+
if(this._mimeType.indexOf("image/") !== -1) {
56+
resourceType = "Image";
57+
}
58+
59+
if (this._mimeType.indexOf("font/") !== -1) {
60+
resourceType = "Font";
61+
}
62+
63+
this._resourceType = resourceType;
64+
}
65+
}
66+
67+
get requestID(): string {
68+
return this._requestID;
69+
}
70+
71+
get hasTextContent(): boolean {
72+
return [ "Document", "Stylesheet", "Script", "XHR" ].indexOf(this._resourceType) !== -1;
73+
}
74+
75+
get data(): any {
76+
return this._data;
77+
}
78+
79+
set data(value: any) {
80+
if (this._data !== value) {
81+
this._data = value;
82+
}
83+
}
84+
85+
get resourceType() {
86+
return this._resourceType;
87+
}
88+
89+
set resourceType(value: string) {
90+
if (this._resourceType !== value) {
91+
this._resourceType = value;
92+
}
93+
}
94+
95+
public responseReceived(response: inspectorCommandTypes.NetworkDomain.Response): void {
96+
if (this._networkDomainDebugger.enabled) {
97+
this._networkDomainDebugger.events.responseReceived(this.requestID, frameId, loaderId, __inspectorTimestamp(), <any>this.resourceType, response);
98+
}
99+
}
100+
101+
public loadingFinished(): void {
102+
if (this._networkDomainDebugger.enabled) {
103+
this._networkDomainDebugger.events.loadingFinished(this.requestID, __inspectorTimestamp());
104+
}
105+
}
106+
107+
public requestWillBeSent(request: inspectorCommandTypes.NetworkDomain.Request): void {
108+
if (this._networkDomainDebugger.enabled) {
109+
this._networkDomainDebugger.events.requestWillBeSent(this.requestID, frameId, loaderId, request.url, request, __inspectorTimestamp(), { type: 'Script' });
110+
}
111+
}
112+
}
113+
114+
@inspectorCommands.DomainDispatcher("Network")
115+
export class NetworkDomainDebugger implements inspectorCommandTypes.NetworkDomain.NetworkDomainDispatcher {
116+
private _enabled: boolean;
117+
public events: inspectorCommandTypes.NetworkDomain.NetworkFrontend;
118+
119+
constructor(dispatchMessage: (message: String) => void) {
120+
this.events = new inspectorCommands.NetworkDomain.NetworkFrontend(dispatchMessage);
121+
}
122+
123+
get enabled(): boolean {
124+
return this._enabled;
125+
}
126+
127+
/**
128+
* Enables network tracking, network events will now be delivered to the client.
129+
*/
130+
enable(): void {
131+
if (debuggerDomains.network) {
132+
throw new Error("One NetworkDomainDebugger may be enabled at a time.");
133+
} else {
134+
debuggerDomains.network = this;
135+
}
136+
this._enabled = true;
137+
}
138+
139+
/**
140+
* Disables network tracking, prevents network events from being sent to the client.
141+
*/
142+
disable(): void {
143+
if (debuggerDomains.network === this) {
144+
debuggerDomains.network = null;
145+
}
146+
this._enabled = false;
147+
}
148+
149+
/**
150+
* Specifies whether to always send extra HTTP headers with the requests from this page.
151+
*/
152+
setExtraHTTPHeaders(params: inspectorCommandTypes.NetworkDomain.SetExtraHTTPHeadersMethodArguments): void {
153+
//
154+
}
155+
156+
/**
157+
* Returns content served for the given request.
158+
*/
159+
getResponseBody(params: inspectorCommandTypes.NetworkDomain.GetResponseBodyMethodArguments): { body: string, base64Encoded: boolean } {
160+
var resource_data = resources_datas[params.requestId];
161+
var body = resource_data.hasTextContent ? NSString.alloc().initWithDataEncoding(resource_data.data, 4).toString() :
162+
resource_data.data.base64EncodedStringWithOptions(0);
163+
164+
if(resource_data) {
165+
return {
166+
body: body,
167+
base64Encoded: !resource_data.hasTextContent
168+
};
169+
}
170+
}
171+
172+
/**
173+
* Tells whether clearing browser cache is supported.
174+
*/
175+
canClearBrowserCache(): { result: boolean } {
176+
return {
177+
result: false
178+
};
179+
}
180+
181+
/**
182+
* Clears browser cache.
183+
*/
184+
clearBrowserCache(): void {
185+
//
186+
}
187+
188+
/**
189+
* Tells whether clearing browser cookies is supported.
190+
*/
191+
canClearBrowserCookies(): { result: boolean } {
192+
return {
193+
result: false
194+
};
195+
}
196+
197+
/**
198+
* Clears browser cookies.
199+
*/
200+
clearBrowserCookies(): void {
201+
//
202+
}
203+
204+
/**
205+
* Toggles ignoring cache for each request. If <code>true</code>, cache will not be used.
206+
*/
207+
setCacheDisabled(params: inspectorCommandTypes.NetworkDomain.SetCacheDisabledMethodArguments): void {
208+
//
209+
}
210+
211+
/**
212+
* Loads a resource in the context of a frame on the inspected page without cross origin checks.
213+
*/
214+
loadResource(params: inspectorCommandTypes.NetworkDomain.LoadResourceMethodArguments): { content: string, mimeType: string, status: number } {
215+
return {
216+
content: "",
217+
mimeType: "",
218+
status: 200
219+
}
220+
}
221+
222+
public static idSequence: number = 0;
223+
create(): Request {
224+
let id = (++NetworkDomainDebugger.idSequence).toString();
225+
let resourceData = new Request(this, id);
226+
resources_datas[id] = resourceData;
227+
return resourceData;
228+
}
229+
}

0 commit comments

Comments
 (0)