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

Side by Side Diff: webkit/plugins/ppapi/ppb_url_loader_impl.cc

Issue 7629017: Add a unified resource tracker shared between the proxy and the impl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/plugins/ppapi/ppb_url_loader_impl.h" 5 #include "webkit/plugins/ppapi/ppb_url_loader_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "net/base/net_errors.h" 8 #include "net/base/net_errors.h"
9 #include "ppapi/c/pp_completion_callback.h" 9 #include "ppapi/c/pp_completion_callback.h"
10 #include "ppapi/c/pp_errors.h" 10 #include "ppapi/c/pp_errors.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 status_callback_(NULL) { 69 status_callback_(NULL) {
70 } 70 }
71 71
72 PPB_URLLoader_Impl::~PPB_URLLoader_Impl() { 72 PPB_URLLoader_Impl::~PPB_URLLoader_Impl() {
73 } 73 }
74 74
75 PPB_URLLoader_API* PPB_URLLoader_Impl::AsPPB_URLLoader_API() { 75 PPB_URLLoader_API* PPB_URLLoader_Impl::AsPPB_URLLoader_API() {
76 return this; 76 return this;
77 } 77 }
78 78
79 void PPB_URLLoader_Impl::ClearInstance() { 79 void PPB_URLLoader_Impl::InstanceWasDeleted() {
80 Resource::ClearInstance(); 80 Resource::InstanceWasDeleted();
81 loader_.reset(); 81 loader_.reset();
82 } 82 }
83 83
84 int32_t PPB_URLLoader_Impl::Open(PP_Resource request_id, 84 int32_t PPB_URLLoader_Impl::Open(PP_Resource request_id,
85 PP_CompletionCallback callback) { 85 PP_CompletionCallback callback) {
86 EnterResourceNoLock<PPB_URLRequestInfo_API> enter_request(request_id, true); 86 EnterResourceNoLock<PPB_URLRequestInfo_API> enter_request(request_id, true);
87 if (enter_request.failed()) 87 if (enter_request.failed())
88 return PP_ERROR_BADARGUMENT; 88 return PP_ERROR_BADARGUMENT;
89 PPB_URLRequestInfo_Impl* request = static_cast<PPB_URLRequestInfo_Impl*>( 89 PPB_URLRequestInfo_Impl* request = static_cast<PPB_URLRequestInfo_Impl*>(
90 enter_request.object()); 90 enter_request.object());
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 if (pending_callback_.get() && !pending_callback_->completed()) 355 if (pending_callback_.get() && !pending_callback_->completed())
356 return PP_ERROR_INPROGRESS; 356 return PP_ERROR_INPROGRESS;
357 357
358 return PP_OK; 358 return PP_OK;
359 } 359 }
360 360
361 void PPB_URLLoader_Impl::RegisterCallback(PP_CompletionCallback callback) { 361 void PPB_URLLoader_Impl::RegisterCallback(PP_CompletionCallback callback) {
362 DCHECK(callback.func); 362 DCHECK(callback.func);
363 DCHECK(!pending_callback_.get() || pending_callback_->completed()); 363 DCHECK(!pending_callback_.get() || pending_callback_->completed());
364 364
365 PP_Resource resource_id = GetReferenceNoAddRef();
366 CHECK(resource_id);
367 pending_callback_ = new TrackedCompletionCallback( 365 pending_callback_ = new TrackedCompletionCallback(
368 instance()->module()->GetCallbackTracker(), resource_id, callback); 366 instance()->module()->GetCallbackTracker(), pp_resource(), callback);
369 } 367 }
370 368
371 void PPB_URLLoader_Impl::RunCallback(int32_t result) { 369 void PPB_URLLoader_Impl::RunCallback(int32_t result) {
372 // This may be null only when this is a main document loader. 370 // This may be null only when this is a main document loader.
373 if (!pending_callback_.get()) { 371 if (!pending_callback_.get()) {
374 CHECK(main_document_loader_); 372 CHECK(main_document_loader_);
375 return; 373 return;
376 } 374 }
377 375
378 scoped_refptr<TrackedCompletionCallback> callback; 376 scoped_refptr<TrackedCompletionCallback> callback;
(...skipping 28 matching lines...) Expand all
407 void PPB_URLLoader_Impl::SaveResponse(const WebURLResponse& response) { 405 void PPB_URLLoader_Impl::SaveResponse(const WebURLResponse& response) {
408 scoped_refptr<PPB_URLResponseInfo_Impl> response_info( 406 scoped_refptr<PPB_URLResponseInfo_Impl> response_info(
409 new PPB_URLResponseInfo_Impl(instance())); 407 new PPB_URLResponseInfo_Impl(instance()));
410 if (response_info->Initialize(response)) 408 if (response_info->Initialize(response))
411 response_info_ = response_info; 409 response_info_ = response_info;
412 } 410 }
413 411
414 void PPB_URLLoader_Impl::UpdateStatus() { 412 void PPB_URLLoader_Impl::UpdateStatus() {
415 if (status_callback_ && 413 if (status_callback_ &&
416 (RecordDownloadProgress() || RecordUploadProgress())) { 414 (RecordDownloadProgress() || RecordUploadProgress())) {
417 PP_Resource pp_resource = GetReferenceNoAddRef(); 415 // Here we go through some effort to only send the exact information that
418 if (pp_resource) { 416 // the requestor wanted in the request flags. It would be just as
419 // The PP_Resource on the plugin will be NULL if the plugin has no 417 // efficient to send all of it, but we don't want people to rely on
420 // reference to this object. That's fine, because then we don't need to 418 // getting download progress when they happen to set the upload progress
421 // call UpdateStatus. 419 // flag.
422 // 420 status_callback_(
423 // Here we go through some effort to only send the exact information that 421 instance()->pp_instance(), pp_resource(),
424 // the requestor wanted in the request flags. It would be just as 422 RecordUploadProgress() ? bytes_sent_ : -1,
425 // efficient to send all of it, but we don't want people to rely on 423 RecordUploadProgress() ? total_bytes_to_be_sent_ : -1,
426 // getting download progress when they happen to set the upload progress 424 RecordDownloadProgress() ? bytes_received_ : -1,
427 // flag. 425 RecordDownloadProgress() ? total_bytes_to_be_received_ : -1);
428 status_callback_(
429 instance()->pp_instance(), pp_resource,
430 RecordUploadProgress() ? bytes_sent_ : -1,
431 RecordUploadProgress() ? total_bytes_to_be_sent_ : -1,
432 RecordDownloadProgress() ? bytes_received_ : -1,
433 RecordDownloadProgress() ? total_bytes_to_be_received_ : -1);
434 }
435 } 426 }
436 } 427 }
437 428
438 bool PPB_URLLoader_Impl::RecordDownloadProgress() const { 429 bool PPB_URLLoader_Impl::RecordDownloadProgress() const {
439 return request_info_ && request_info_->record_download_progress(); 430 return request_info_ && request_info_->record_download_progress();
440 } 431 }
441 432
442 bool PPB_URLLoader_Impl::RecordUploadProgress() const { 433 bool PPB_URLLoader_Impl::RecordUploadProgress() const {
443 return request_info_ && request_info_->record_upload_progress(); 434 return request_info_ && request_info_->record_upload_progress();
444 } 435 }
445 436
446 } // namespace ppapi 437 } // namespace ppapi
447 } // namespace webkit 438 } // namespace webkit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698