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

Unified Diff: content/browser/loader/resource_scheduler_unittest.cc

Issue 1285863003: ResourceScheduler: remove dependency on ResourceRequestInfo and request_id (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: DCHECK that there isn't an existing ScheduledResourceRequest attached to the URLRequest. Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/loader/resource_scheduler.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/loader/resource_scheduler_unittest.cc
diff --git a/content/browser/loader/resource_scheduler_unittest.cc b/content/browser/loader/resource_scheduler_unittest.cc
index 3ac956667bfdafb138962616a723766662ad8c10..c4ce6939c0322476035923e250f88196b9371f41 100644
--- a/content/browser/loader/resource_scheduler_unittest.cc
+++ b/content/browser/loader/resource_scheduler_unittest.cc
@@ -14,15 +14,10 @@
#include "base/timer/timer.h"
#include "content/browser/browser_thread_impl.h"
#include "content/browser/loader/resource_dispatcher_host_impl.h"
-#include "content/browser/loader/resource_message_filter.h"
-#include "content/browser/loader/resource_request_info_impl.h"
-#include "content/common/resource_messages.h"
#include "content/public/browser/resource_context.h"
#include "content/public/browser/resource_controller.h"
#include "content/public/browser/resource_throttle.h"
#include "content/public/common/content_switches.h"
-#include "content/public/common/process_type.h"
-#include "content/public/common/resource_type.h"
#include "content/public/test/mock_render_process_host.h"
#include "content/public/test/test_browser_context.h"
#include "content/test/test_render_view_host_factory.h"
@@ -54,14 +49,20 @@ const int kBackgroundRouteId2 = 82;
class TestRequest : public ResourceController {
public:
- TestRequest(scoped_ptr<ResourceThrottle> throttle,
- scoped_ptr<net::URLRequest> url_request)
+ TestRequest(scoped_ptr<net::URLRequest> url_request,
+ scoped_ptr<ResourceThrottle> throttle,
+ ResourceScheduler* scheduler)
: started_(false),
+ url_request_(url_request.Pass()),
throttle_(throttle.Pass()),
- url_request_(url_request.Pass()) {
+ scheduler_(scheduler) {
throttle_->set_controller_for_testing(this);
}
- ~TestRequest() override {}
+ ~TestRequest() override {
+ // The URLRequest must still be valid when the ScheduledResourceRequest is
+ // destroyed, so that it can unregister itself.
+ throttle_.reset();
+ }
bool started() const { return started_; }
@@ -71,9 +72,14 @@ class TestRequest : public ResourceController {
started_ = !deferred;
}
+ void ChangePriority(net::RequestPriority new_priority, int intra_priority) {
+ scheduler_->ReprioritizeRequest(url_request_.get(), new_priority,
+ intra_priority);
+ }
+
void Cancel() override {
// Alert the scheduler that the request can be deleted.
- throttle_.reset(0);
+ throttle_.reset();
}
const net::URLRequest* url_request() const { return url_request_.get(); }
@@ -86,15 +92,17 @@ class TestRequest : public ResourceController {
private:
bool started_;
- scoped_ptr<ResourceThrottle> throttle_;
scoped_ptr<net::URLRequest> url_request_;
+ scoped_ptr<ResourceThrottle> throttle_;
+ ResourceScheduler* scheduler_;
};
class CancelingTestRequest : public TestRequest {
public:
- CancelingTestRequest(scoped_ptr<ResourceThrottle> throttle,
- scoped_ptr<net::URLRequest> url_request)
- : TestRequest(throttle.Pass(), url_request.Pass()) {}
+ CancelingTestRequest(scoped_ptr<net::URLRequest> url_request,
+ scoped_ptr<ResourceThrottle> throttle,
+ ResourceScheduler* scheduler)
+ : TestRequest(url_request.Pass(), throttle.Pass(), scheduler) {}
void set_request_to_cancel(scoped_ptr<TestRequest> request_to_cancel) {
request_to_cancel_ = request_to_cancel.Pass();
@@ -115,39 +123,10 @@ class FakeResourceContext : public ResourceContext {
net::URLRequestContext* GetRequestContext() override { return NULL; }
};
-class FakeResourceMessageFilter : public ResourceMessageFilter {
- public:
- FakeResourceMessageFilter(int child_id)
- : ResourceMessageFilter(
- child_id,
- PROCESS_TYPE_RENDERER,
- NULL /* appcache_service */,
- NULL /* blob_storage_context */,
- NULL /* file_system_context */,
- NULL /* service_worker_context */,
- NULL /* host_zoom_level_context */,
- base::Bind(&FakeResourceMessageFilter::GetContexts,
- base::Unretained(this))) {
- }
-
- private:
- ~FakeResourceMessageFilter() override {}
-
- void GetContexts(const ResourceHostMsg_Request& request,
- ResourceContext** resource_context,
- net::URLRequestContext** request_context) {
- *resource_context = &context_;
- *request_context = NULL;
- }
-
- FakeResourceContext context_;
-};
-
class ResourceSchedulerTest : public testing::Test {
protected:
ResourceSchedulerTest()
- : next_request_id_(0),
- ui_thread_(BrowserThread::UI, &message_loop_),
+ : ui_thread_(BrowserThread::UI, &message_loop_),
io_thread_(BrowserThread::IO, &message_loop_),
field_trial_list_(new base::MockEntropyProvider()) {
InitializeScheduler();
@@ -199,44 +178,15 @@ class ResourceSchedulerTest : public testing::Test {
const char* url,
net::RequestPriority priority,
int child_id,
- int route_id,
- bool is_async) {
+ int route_id) {
scoped_ptr<net::URLRequest> url_request(
context_.CreateRequest(GURL(url), priority, NULL));
- ResourceRequestInfoImpl* info = new ResourceRequestInfoImpl(
- PROCESS_TYPE_RENDERER, // process_type
- child_id, // child_id
- route_id, // route_id
- -1, // frame_tree_node_id
- 0, // origin_pid
- ++next_request_id_, // request_id
- MSG_ROUTING_NONE, // render_frame_id
- false, // is_main_frame
- false, // parent_is_main_frame
- 0, // parent_render_frame_id
- RESOURCE_TYPE_SUB_RESOURCE, // resource_type
- ui::PAGE_TRANSITION_LINK, // transition_type
- false, // should_replace_current_entry
- false, // is_download
- false, // is_stream
- true, // allow_download
- false, // has_user_gesture
- false, // enable_load_timing
- false, // enable_upload_progress
- false, // do_not_prompt_for_login
- blink::WebReferrerPolicyDefault, // referrer_policy
- blink::WebPageVisibilityStateVisible, // visibility_state
- NULL, // context
- base::WeakPtr<ResourceMessageFilter>(), // filter
- is_async); // is_async
- info->AssociateWithRequest(url_request.get());
return url_request.Pass();
}
scoped_ptr<net::URLRequest> NewURLRequest(const char* url,
net::RequestPriority priority) {
- return NewURLRequestWithChildAndRoute(
- url, priority, kChildId, kRouteId, true);
+ return NewURLRequestWithChildAndRoute(url, priority, kChildId, kRouteId);
}
TestRequest* NewRequestWithRoute(const char* url,
@@ -284,11 +234,12 @@ class ResourceSchedulerTest : public testing::Test {
int child_id,
int route_id,
bool is_async) {
- scoped_ptr<net::URLRequest> url_request(NewURLRequestWithChildAndRoute(
- url, priority, child_id, route_id, is_async));
- scoped_ptr<ResourceThrottle> throttle(
- scheduler_->ScheduleRequest(child_id, route_id, url_request.get()));
- TestRequest* request = new TestRequest(throttle.Pass(), url_request.Pass());
+ scoped_ptr<net::URLRequest> url_request(
+ NewURLRequestWithChildAndRoute(url, priority, child_id, route_id));
+ scoped_ptr<ResourceThrottle> throttle(scheduler_->ScheduleRequest(
+ child_id, route_id, is_async, url_request.get()));
+ TestRequest* request =
+ new TestRequest(url_request.Pass(), throttle.Pass(), scheduler());
request->Start();
return request;
}
@@ -296,14 +247,7 @@ class ResourceSchedulerTest : public testing::Test {
void ChangeRequestPriority(TestRequest* request,
net::RequestPriority new_priority,
int intra_priority = 0) {
- scoped_refptr<FakeResourceMessageFilter> filter(
- new FakeResourceMessageFilter(kChildId));
- const ResourceRequestInfoImpl* info = ResourceRequestInfoImpl::ForRequest(
- request->url_request());
- const GlobalRequestID& id = info->GetGlobalRequestID();
- ResourceHostMsg_DidChangePriority msg(id.request_id, new_priority,
- intra_priority);
- rdh_.OnMessageReceived(msg, filter.get());
+ request->ChangePriority(new_priority, intra_priority);
}
void FireCoalescingTimer() {
@@ -315,7 +259,6 @@ class ResourceSchedulerTest : public testing::Test {
return scheduler_.get();
}
- int next_request_id_;
base::MessageLoopForIO message_loop_;
BrowserThreadImpl ui_thread_;
BrowserThreadImpl io_thread_;
@@ -436,10 +379,10 @@ TEST_F(ResourceSchedulerTest, CancelOtherRequestsWhileResuming) {
scoped_ptr<net::URLRequest> url_request(
NewURLRequest("http://host/low2", net::LOWEST));
- scoped_ptr<ResourceThrottle> throttle(
- scheduler()->ScheduleRequest(kChildId, kRouteId, url_request.get()));
+ scoped_ptr<ResourceThrottle> throttle(scheduler()->ScheduleRequest(
+ kChildId, kRouteId, true, url_request.get()));
scoped_ptr<CancelingTestRequest> low2(new CancelingTestRequest(
- throttle.Pass(), url_request.Pass()));
+ url_request.Pass(), throttle.Pass(), scheduler()));
low2->Start();
scoped_ptr<TestRequest> low3(NewRequest("http://host/low3", net::LOWEST));
« no previous file with comments | « content/browser/loader/resource_scheduler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698