| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/renderer/scheduler/resource_dispatch_throttler.h" | 5 #include "content/renderer/scheduler/resource_dispatch_throttler.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> |
| 11 #include <vector> |
| 12 |
| 10 #include "base/macros.h" | 13 #include "base/macros.h" |
| 11 #include "base/memory/scoped_vector.h" | 14 #include "base/memory/ptr_util.h" |
| 12 #include "content/common/resource_messages.h" | 15 #include "content/common/resource_messages.h" |
| 13 #include "content/common/resource_request.h" | 16 #include "content/common/resource_request.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 15 #include "third_party/WebKit/public/platform/scheduler/test/fake_renderer_schedu
ler.h" | 18 #include "third_party/WebKit/public/platform/scheduler/test/fake_renderer_schedu
ler.h" |
| 16 | 19 |
| 17 namespace content { | 20 namespace content { |
| 18 namespace { | 21 namespace { |
| 19 | 22 |
| 20 const uint32_t kRequestsPerFlush = 4; | 23 const uint32_t kRequestsPerFlush = 4; |
| 21 const double kFlushPeriodSeconds = 1.f / 60; | 24 const double kFlushPeriodSeconds = 1.f / 60; |
| 22 const int kRoutingId = 1; | 25 const int kRoutingId = 1; |
| 23 | 26 |
| 24 typedef ScopedVector<IPC::Message> ScopedMessages; | 27 typedef std::vector<std::unique_ptr<IPC::Message>> ScopedMessages; |
| 25 | 28 |
| 26 int GetRequestId(const IPC::Message& msg) { | 29 int GetRequestId(const IPC::Message& msg) { |
| 27 int request_id = -1; | 30 int request_id = -1; |
| 28 switch (msg.type()) { | 31 switch (msg.type()) { |
| 29 case ResourceHostMsg_RequestResource::ID: { | 32 case ResourceHostMsg_RequestResource::ID: { |
| 30 base::PickleIterator iter(msg); | 33 base::PickleIterator iter(msg); |
| 31 int routing_id = -1; | 34 int routing_id = -1; |
| 32 if (!iter.ReadInt(&routing_id) || !iter.ReadInt(&request_id)) | 35 if (!iter.ReadInt(&routing_id) || !iter.ReadInt(&request_id)) |
| 33 NOTREACHED() << "Invalid id for resource request message."; | 36 NOTREACHED() << "Invalid id for resource request message."; |
| 34 } break; | 37 } break; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 | 109 |
| 107 class ResourceDispatchThrottlerTest : public testing::Test, public IPC::Sender { | 110 class ResourceDispatchThrottlerTest : public testing::Test, public IPC::Sender { |
| 108 public: | 111 public: |
| 109 ResourceDispatchThrottlerTest() : last_request_id_(0) { | 112 ResourceDispatchThrottlerTest() : last_request_id_(0) { |
| 110 throttler_.reset(new ResourceDispatchThrottlerForTest(this, &scheduler_)); | 113 throttler_.reset(new ResourceDispatchThrottlerForTest(this, &scheduler_)); |
| 111 } | 114 } |
| 112 ~ResourceDispatchThrottlerTest() override {} | 115 ~ResourceDispatchThrottlerTest() override {} |
| 113 | 116 |
| 114 // IPC::Sender implementation: | 117 // IPC::Sender implementation: |
| 115 bool Send(IPC::Message* msg) override { | 118 bool Send(IPC::Message* msg) override { |
| 116 sent_messages_.push_back(msg); | 119 sent_messages_.push_back(base::WrapUnique(msg)); |
| 117 return true; | 120 return true; |
| 118 } | 121 } |
| 119 | 122 |
| 120 protected: | 123 protected: |
| 121 void SetHighPriorityWorkAnticipated(bool anticipated) { | 124 void SetHighPriorityWorkAnticipated(bool anticipated) { |
| 122 scheduler_.set_high_priority_work_anticipated(anticipated); | 125 scheduler_.set_high_priority_work_anticipated(anticipated); |
| 123 } | 126 } |
| 124 | 127 |
| 125 void Advance(base::TimeDelta delta) { throttler_->Advance(delta); } | 128 void Advance(base::TimeDelta delta) { throttler_->Advance(delta); } |
| 126 | 129 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 return throttler_->Send(new ResourceHostMsg_CancelRequest(request_id)); | 166 return throttler_->Send(new ResourceHostMsg_CancelRequest(request_id)); |
| 164 } | 167 } |
| 165 | 168 |
| 166 size_t GetAndResetSentMessageCount() { | 169 size_t GetAndResetSentMessageCount() { |
| 167 size_t sent_message_count = sent_messages_.size(); | 170 size_t sent_message_count = sent_messages_.size(); |
| 168 sent_messages_.clear(); | 171 sent_messages_.clear(); |
| 169 return sent_message_count; | 172 return sent_message_count; |
| 170 } | 173 } |
| 171 | 174 |
| 172 const IPC::Message* LastSentMessage() const { | 175 const IPC::Message* LastSentMessage() const { |
| 173 return sent_messages_.empty() ? nullptr : sent_messages_.back(); | 176 return sent_messages_.empty() ? nullptr : sent_messages_.back().get(); |
| 174 } | 177 } |
| 175 | 178 |
| 176 int LastSentRequestId() const { | 179 int LastSentRequestId() const { |
| 177 const IPC::Message* msg = LastSentMessage(); | 180 const IPC::Message* msg = LastSentMessage(); |
| 178 if (!msg) | 181 if (!msg) |
| 179 return -1; | 182 return -1; |
| 180 | 183 |
| 181 int routing_id = -1; | 184 int routing_id = -1; |
| 182 int request_id = -1; | 185 int request_id = -1; |
| 183 base::PickleIterator iter(*msg); | 186 base::PickleIterator iter(*msg); |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 EXPECT_EQ(priority_msg.type(), ResourceHostMsg_DidChangePriority::ID); | 410 EXPECT_EQ(priority_msg.type(), ResourceHostMsg_DidChangePriority::ID); |
| 408 EXPECT_EQ(cancel_msg.type(), ResourceHostMsg_CancelRequest::ID); | 411 EXPECT_EQ(cancel_msg.type(), ResourceHostMsg_CancelRequest::ID); |
| 409 | 412 |
| 410 EXPECT_EQ(GetRequestId(request_msg), GetRequestId(priority_msg)); | 413 EXPECT_EQ(GetRequestId(request_msg), GetRequestId(priority_msg)); |
| 411 EXPECT_EQ(GetRequestId(request_msg) - 1, GetRequestId(cancel_msg)); | 414 EXPECT_EQ(GetRequestId(request_msg) - 1, GetRequestId(cancel_msg)); |
| 412 } | 415 } |
| 413 EXPECT_FALSE(FlushScheduled()); | 416 EXPECT_FALSE(FlushScheduled()); |
| 414 } | 417 } |
| 415 | 418 |
| 416 } // namespace content | 419 } // namespace content |
| OLD | NEW |