Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Unified Diff: content/renderer/npapi/webplugin_impl.cc

Issue 23830007: Support byte range requests when routing resource requests directly through the browser process. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/npapi/webplugin_impl.cc
===================================================================
--- content/renderer/npapi/webplugin_impl.cc (revision 223347)
+++ content/renderer/npapi/webplugin_impl.cc (working copy)
@@ -95,9 +95,7 @@
class MultiPartResponseClient : public WebURLLoaderClient {
public:
explicit MultiPartResponseClient(WebPluginResourceClient* resource_client)
- : resource_client_(resource_client) {
- Clear();
- }
+ : byte_range_lower_bound_(0), resource_client_(resource_client) {}
virtual void willSendRequest(
WebURLLoader*, WebURLRequest&, const WebURLResponse&) {}
@@ -108,17 +106,14 @@
// response.
virtual void didReceiveResponse(
WebURLLoader*, const WebURLResponse& response) {
- int64 instance_size;
+ int64 byte_range_upper_bound, instance_size;
if (!MultipartResponseDelegate::ReadContentRanges(
response,
&byte_range_lower_bound_,
- &byte_range_upper_bound_,
+ &byte_range_upper_bound,
&instance_size)) {
NOTREACHED();
- return;
}
-
- resource_response_ = response;
}
// Receives individual part data from a multipart response.
@@ -137,18 +132,9 @@
virtual void didFinishLoading(WebURLLoader*, double finishTime) {}
virtual void didFail(WebURLLoader*, const WebURLError&) {}
- void Clear() {
- resource_response_.reset();
- byte_range_lower_bound_ = 0;
- byte_range_upper_bound_ = 0;
- }
-
private:
- WebURLResponse resource_response_;
// The lower bound of the byte range.
int64 byte_range_lower_bound_;
- // The upper bound of the byte range.
- int64 byte_range_upper_bound_;
// The handler for the data.
WebPluginResourceClient* resource_client_;
};
@@ -946,6 +932,8 @@
void WebPluginImpl::didReceiveResponse(WebURLLoader* loader,
const WebURLResponse& response) {
+ // TODO(jam): THIS LOGIC IS COPIED IN PluginURLFetcher::OnReceivedResponse
+ // until kDirectNPAPIRequests is the default and we can remove this old path.
static const int kHttpPartialResponseStatusCode = 206;
static const int kHttpResponseSuccessStatusCode = 200;
@@ -1079,10 +1067,7 @@
if (index != multi_part_response_map_.end()) {
delete (*index).second;
multi_part_response_map_.erase(index);
- if (render_view_.get()) {
- // TODO(darin): Make is_loading_ be a counter!
- render_view_->didStopLoading();
- }
+ DidStopLoading();
}
loader->setDefersLoading(true);
WebPluginResourceClient* resource_client = client_info->client;
@@ -1226,8 +1211,8 @@
GURL first_party_for_cookies = webframe_->document().firstPartyForCookies();
delegate_->FetchURL(resource_id, notify_id, complete_url,
- first_party_for_cookies, method, std::string(buf, len),
- referrer, notify_redirects, is_plugin_src_load, 0,
+ first_party_for_cookies, method, buf, len, referrer,
+ notify_redirects, is_plugin_src_load, 0,
render_view_->routing_id());
} else {
WebPluginResourceClient* resource_client = delegate_->CreateResourceClient(
@@ -1331,6 +1316,20 @@
load_manually_ ? NO_REFERRER : PLUGIN_SRC, false, false);
}
+void WebPluginImpl::DidStartLoading() {
+ if (render_view_.get()) {
+ // TODO(darin): Make is_loading_ be a counter!
+ render_view_->didStartLoading();
+ }
+}
+
+void WebPluginImpl::DidStopLoading() {
+ if (render_view_.get()) {
+ // TODO(darin): Make is_loading_ be a counter!
+ render_view_->didStopLoading();
+ }
+}
+
void WebPluginImpl::SetDeferResourceLoading(unsigned long resource_id,
bool defer) {
std::vector<ClientInfo>::iterator client_index = clients_.begin();
@@ -1366,15 +1365,14 @@
bool WebPluginImpl::HandleHttpMultipartResponse(
const WebURLResponse& response, WebPluginResourceClient* client) {
std::string multipart_boundary;
+ std::string content_type =
ananta 2013/09/16 18:35:41 Remove?
jam 2013/09/16 19:31:34 Done, thanks. that was left over code from another
+ response.httpHeaderField(WebString::fromUTF8("Content-Type")).utf8();
if (!MultipartResponseDelegate::ReadMultipartBoundary(
response, &multipart_boundary)) {
return false;
}
- if (render_view_.get()) {
- // TODO(darin): Make is_loading_ be a counter!
- render_view_->didStartLoading();
- }
+ DidStartLoading();
MultiPartResponseClient* multi_part_response_client =
new MultiPartResponseClient(client);

Powered by Google App Engine
This is Rietveld 408576698