Skip to content

Commit 936c951

Browse files
author
Daniel Herzog
committed
Moved get_resource to context to be able the post the update message there; Made current_request and current_response public instead of only having a public getter.
1 parent 08a141e commit 936c951

File tree

2 files changed

+80
-92
lines changed

2 files changed

+80
-92
lines changed

src/network/network_service.js

Lines changed: 76 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,44 @@ cls.RequestContextPrototype = function()
691691
}
692692
};
693693

694+
this.get_resource = function(entry)
695+
{
696+
if (!entry)
697+
return;
698+
entry.called_get_body = true;
699+
if (entry.current_response)
700+
entry.current_response.logger_entry_called_get_body = true;
701+
var content_mode = cls.ResourceUtil.mime_to_content_mode(entry.mime);
702+
var transport_type = {"text": 1, "datauri": 3}[content_mode];
703+
var tag = window.tag_manager.set_callback(this, this._handle_get_resource, [entry]);
704+
var CONTENT_MODE_STRING = 1;
705+
window.services["resource-manager"].requestGetResource(tag, [entry.resource_id,
706+
[transport_type, CONTENT_MODE_STRING]]);
707+
}
708+
709+
this._handle_get_resource = function(status, msg, entry)
710+
{
711+
if (!entry.current_response)
712+
{
713+
// This means there wasn't a request, we add a "response" though because that's where that data lives.
714+
// todo: illegal access..
715+
entry.current_response = new cls.NetworkLoggerResponse(this);
716+
entry.requests_responses.push(entry.current_response);
717+
}
718+
719+
var SUCCESS = 0;
720+
if (status == SUCCESS)
721+
{
722+
var data = new cls.ResourceManager["1.2"].ResourceData(msg);
723+
entry.responsebody = data;
724+
entry.current_response.update_responsebody(data);
725+
}
726+
else
727+
{
728+
entry.get_body_unsuccessful = entry.current_response.logger_entry_get_body_unsuccessful = true;
729+
}
730+
this.post_on_context_or_logger("resource-update", {id: entry.id, is_paused: this.is_paused});
731+
};
694732
};
695733

696734
cls.RequestContext.prototype = new cls.RequestContextPrototype();
@@ -722,8 +760,8 @@ cls.NetworkLoggerEntry = function(id, resource_id, document_id, window_id, conte
722760
this.error_in_current_response = false;
723761
this.called_get_body = false;
724762
this.get_body_unsuccessful = false;
725-
this._current_request = null;
726-
this._current_response = null;
763+
this.current_request = null;
764+
this.current_response = null;
727765
this._set_is_finished_on_responsefinished = false;
728766
this.crafter_request_id = null;
729767
};
@@ -933,39 +971,39 @@ cls.NetworkLoggerEntryPrototype = function()
933971
this.size = event.contentLength;
934972
this.is_finished = true;
935973
// Responses keep duplicates of the finished state. It's only relevant on the last one.
936-
if (this._current_response)
937-
this._current_response.logger_entry_is_finished = true;
974+
if (this.current_response)
975+
this.current_response.logger_entry_is_finished = true;
938976
this._guess_response_type();
939977
this._humanize_url();
940978
};
941979

942980
this._update_event_request = function(event)
943981
{
944-
this._current_request = new cls.NetworkLoggerRequest(this);
945-
this.requests_responses.push(this._current_request);
946-
this._current_request._update_event_request(event);
982+
this.current_request = new cls.NetworkLoggerRequest(this);
983+
this.requests_responses.push(this.current_request);
984+
this.current_request._update_event_request(event);
947985
};
948986

949987
this._update_event_requestheader = function(event)
950988
{
951-
if (!this._current_request)
989+
if (!this.current_request)
952990
{
953991
// This means we didn't see a request before that, CORE-47076
954-
this._current_request = new cls.NetworkLoggerRequest(this);
955-
this.requests_responses.push(this._current_request);
992+
this.current_request = new cls.NetworkLoggerRequest(this);
993+
this.requests_responses.push(this.current_request);
956994
}
957-
this._current_request._update_event_requestheader(event);
995+
this.current_request._update_event_requestheader(event);
958996
};
959997

960998
this._update_event_requestfinished = function(event)
961999
{
962-
if (!this._current_request)
1000+
if (!this.current_request)
9631001
{
9641002
// There should always be a request by now, but keep the data anyway.
965-
this._current_request = new cls.NetworkLoggerRequest(this);
966-
this.requests_responses.push(this._current_request);
1003+
this.current_request = new cls.NetworkLoggerRequest(this);
1004+
this.requests_responses.push(this.current_request);
9671005
}
968-
this._current_request._update_event_requestfinished(event);
1006+
this.current_request._update_event_requestfinished(event);
9691007
};
9701008

9711009
this._update_event_requestretry = function(event)
@@ -974,37 +1012,37 @@ cls.NetworkLoggerEntryPrototype = function()
9741012

9751013
this._update_event_response = function(event)
9761014
{
977-
if (this._current_request)
1015+
if (this.current_request)
9781016
{
979-
this._current_request.was_responded_to = true;
1017+
this.current_request.was_responded_to = true;
9801018
}
9811019
this.current_responsecode = event.responseCode;
9821020
this.error_in_current_response = /^[45]/.test(this.current_responsecode);
983-
this._current_response = new cls.NetworkLoggerResponse(this);
984-
this.requests_responses.push(this._current_response);
985-
this._current_response.update_event_response(event);
1021+
this.current_response = new cls.NetworkLoggerResponse(this);
1022+
this.requests_responses.push(this.current_response);
1023+
this.current_response.update_event_response(event);
9861024
};
9871025

9881026
this._update_event_responseheader = function(event)
9891027
{
9901028
// Sometimes we see no "response" event before we see responseheader,
9911029
// therefore have to init NetworkLoggerResponse here. See CORE-43935.
992-
if (!this._current_response)
1030+
if (!this.current_response)
9931031
{
994-
if (this._current_request)
1032+
if (this.current_request)
9951033
{
996-
this._current_request.was_responded_to = true;
1034+
this.current_request.was_responded_to = true;
9971035
}
998-
this._current_response = new cls.NetworkLoggerResponse(this);
999-
this.requests_responses.push(this._current_response);
1036+
this.current_response = new cls.NetworkLoggerResponse(this);
1037+
this.requests_responses.push(this.current_response);
10001038
}
1001-
this._current_response.update_event_responseheader(event);
1039+
this.current_response.update_event_responseheader(event);
10021040
};
10031041

10041042
this._update_event_responsefinished = function(event)
10051043
{
1006-
if (this._current_response)
1007-
this._current_response.update_event_responsefinished(event);
1044+
if (this.current_response)
1045+
this.current_response.update_event_responsefinished(event);
10081046

10091047
if (event.data && event.data.mimeType)
10101048
this.mime = event.data && event.data.mimeType;
@@ -1035,12 +1073,12 @@ cls.NetworkLoggerEntryPrototype = function()
10351073
else
10361074
this.type = cls.ResourceUtil.mime_to_type(this.mime);
10371075

1038-
if (this._current_response)
1076+
if (this.current_response)
10391077
{
10401078
// This could be only on the response. But as only the last response has body
10411079
// that would complicate it for nothing.
1042-
this._current_response.logger_entry_mime = this.mime;
1043-
this._current_response.logger_entry_type = this.type;
1080+
this.current_response.logger_entry_mime = this.mime;
1081+
this.current_response.logger_entry_type = this.type;
10441082
}
10451083
};
10461084

@@ -1099,58 +1137,17 @@ cls.NetworkLoggerEntryPrototype = function()
10991137
this.events.push(evt);
11001138
};
11011139

1102-
this.check_to_get_body = function()
1140+
this.should_get_body = function()
11031141
{
1104-
var should_get_body =
1142+
return (
11051143
this.is_finished &&
11061144
!this.called_get_body &&
1107-
(!this._current_response || !this._current_response.responsebody) &&
11081145
// When we have a response, but didn't see responsefinished, there really is no
11091146
// responsebody. Don't attempt to fetch it.
1110-
(!this._current_response || this._current_response.saw_responsefinished);
1111-
1112-
// Todo: The exception for !saw_responsefinished is AFAIR so we don't fetch a wrong result like a
1113-
// placeholder from Opera, but thee's currently no testcase for that.
1114-
// We could also avoid it when this.is_unloaded, but seems there it will
1115-
// just be unsuccessful and we handle that.
1116-
1117-
if (should_get_body)
1118-
{
1119-
// Decide if body should be fetched, for when content-tracking is off or it's a cached request.
1120-
this.called_get_body = true;
1121-
if (this._current_response)
1122-
this._current_response.logger_entry_called_get_body = true;
1123-
var content_mode = cls.ResourceUtil.mime_to_content_mode(this.mime);
1124-
var transport_type = {"text": 1, "datauri": 3}[content_mode];
1125-
var tag = window.tag_manager.set_callback(this, this._handle_get_resource);
1126-
var CONTENT_MODE_STRING = 1;
1127-
window.services["resource-manager"].requestGetResource(tag, [this.resource_id,
1128-
[transport_type, CONTENT_MODE_STRING]]);
1129-
}
1130-
};
1131-
1132-
this._handle_get_resource = function(status, msg)
1133-
{
1134-
if (!this._current_response)
1135-
{
1136-
// This means there wasn't a request, we add a "response" though because that's where that data lives.
1137-
this._current_response = new cls.NetworkLoggerResponse(this);
1138-
this.requests_responses.push(this._current_response);
1139-
}
1140-
1141-
var SUCCESS = 0;
1142-
if (status == SUCCESS)
1143-
{
1144-
var data = new cls.ResourceManager["1.2"].ResourceData(msg);
1145-
this.responsebody = data;
1146-
this._current_response.update_responsebody(data);
1147-
}
1148-
else
1149-
{
1150-
this.get_body_unsuccessful = this._current_response.logger_entry_get_body_unsuccessful = true;
1151-
}
1152-
// todo: The entry doesn't know the context here. Maybe handle this entirely on the context?
1153-
// ctx.post_on_context_or_logger("resource-update", {id: this.id, is_paused: this.is_paused});
1147+
(!this.current_response || !this.current_response.responsebody) &&
1148+
// Don't fetch a placeholder from Opera
1149+
(!this.current_response || this.current_response.saw_responsefinished)
1150+
);
11541151
};
11551152

11561153
this.__defineGetter__("duration", function()
@@ -1170,21 +1167,9 @@ cls.NetworkLoggerEntryPrototype = function()
11701167

11711168
this.__defineGetter__("touched_network", function()
11721169
{
1173-
return Boolean(this._current_request);
1170+
return Boolean(this.current_request);
11741171
});
11751172
this.__defineSetter__("touched_network", function(){});
1176-
1177-
this.__defineGetter__("current_response", function()
1178-
{
1179-
return this._current_response;
1180-
});
1181-
this.__defineSetter__("current_response", function(){});
1182-
1183-
this.__defineGetter__("current_request", function()
1184-
{
1185-
return this._current_request;
1186-
});
1187-
this.__defineSetter__("current_request", function(){});
11881173
};
11891174

11901175
cls.NetworkLoggerEntryPrototype.prototype = new URIPrototype("url");

src/network/network_view.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,10 @@ cls.NetworkDetailOverlayViewPrototype = function()
869869
var entry = ctx.get_entry_from_filtered(parent_view.selected);
870870
if (entry)
871871
{
872-
entry.check_to_get_body();
872+
var get_body = entry.should_get_body();
873+
if (get_body)
874+
ctx.get_resource(entry);
875+
873876
container.clearAndRender(this._render_details_view(entry));
874877
this.text_search.update_search();
875878
if (this._details_scroll_top)

0 commit comments

Comments
 (0)