| Index: content/child/resource_dispatcher.cc
|
| diff --git a/content/child/resource_dispatcher.cc b/content/child/resource_dispatcher.cc
|
| index b6a877fa65d5f8b9b91658ac2d14d5e01bb74680..a14c80bfab1473cedc3cdd1271dd35be9dfced9b 100644
|
| --- a/content/child/resource_dispatcher.cc
|
| +++ b/content/child/resource_dispatcher.cc
|
| @@ -277,6 +277,22 @@ ResourceDispatcher::~ResourceDispatcher() {
|
|
|
| // ResourceDispatcher implementation ------------------------------------------
|
|
|
| +bool ResourceDispatcher::IsPendingRequestFontType(const IPC::Message& message) {
|
| + if (!IsResourceDispatcherMessage(message))
|
| + return false;
|
| +
|
| + int request_id;
|
| +
|
| + PickleIterator iter(message);
|
| + if (!message.ReadInt(&iter, &request_id)) {
|
| + NOTREACHED() << "malformed resource message";
|
| + return false;
|
| + }
|
| +
|
| + base::AutoLock lock(font_lock_);
|
| + return font_requests_.find(request_id) != font_requests_.end();
|
| +}
|
| +
|
| bool ResourceDispatcher::OnMessageReceived(const IPC::Message& message) {
|
| if (!IsResourceDispatcherMessage(message)) {
|
| return false;
|
| @@ -566,6 +582,12 @@ int ResourceDispatcher::AddPendingRequest(RequestPeer* callback,
|
| int id = MakeRequestID();
|
| pending_requests_[id] = PendingRequestInfo(
|
| callback, resource_type, origin_pid, frame_origin, request_url);
|
| + {
|
| + if (resource_type == ResourceType::FONT_RESOURCE) {
|
| + base::AutoLock lock(font_lock_);
|
| + font_requests_.insert(id);
|
| + }
|
| + }
|
| return id;
|
| }
|
|
|
| @@ -575,6 +597,12 @@ bool ResourceDispatcher::RemovePendingRequest(int request_id) {
|
| return false;
|
|
|
| PendingRequestInfo& request_info = it->second;
|
| +
|
| + {
|
| + base::AutoLock lock(font_lock_);
|
| + font_requests_.erase(request_id);
|
| + }
|
| +
|
| ReleaseResourcesInMessageQueue(&request_info.deferred_message_queue);
|
| pending_requests_.erase(it);
|
|
|
|
|