| Index: chrome/browser/renderer_host/blob_dispatcher_host.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/blob_dispatcher_host.cc (revision 68877)
|
| +++ chrome/browser/renderer_host/blob_dispatcher_host.cc (working copy)
|
| @@ -1,88 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/renderer_host/blob_dispatcher_host.h"
|
| -
|
| -#include "chrome/browser/browser_thread.h"
|
| -#include "chrome/browser/child_process_security_policy.h"
|
| -#include "chrome/browser/chrome_blob_storage_context.h"
|
| -#include "chrome/common/render_messages.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "ipc/ipc_message.h"
|
| -#include "webkit/blob/blob_data.h"
|
| -#include "webkit/blob/blob_storage_controller.h"
|
| -
|
| -BlobDispatcherHost::BlobDispatcherHost(
|
| - int process_id,
|
| - ChromeBlobStorageContext* blob_storage_context)
|
| - : process_id_(process_id),
|
| - blob_storage_context_(blob_storage_context) {
|
| -}
|
| -
|
| -BlobDispatcherHost::~BlobDispatcherHost() {
|
| -}
|
| -
|
| -void BlobDispatcherHost::Shutdown() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - // Unregister all the blob URLs that are previously registered in this
|
| - // process.
|
| - for (base::hash_set<std::string>::const_iterator iter = blob_urls_.begin();
|
| - iter != blob_urls_.end(); ++iter) {
|
| - blob_storage_context_->controller()->UnregisterBlobUrl(GURL(*iter));
|
| - }
|
| -}
|
| -
|
| -bool BlobDispatcherHost::OnMessageReceived(const IPC::Message& message,
|
| - bool* msg_is_ok) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - *msg_is_ok = true;
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP_EX(BlobDispatcherHost, message, *msg_is_ok)
|
| - IPC_MESSAGE_HANDLER(ViewHostMsg_RegisterBlobUrl, OnRegisterBlobUrl)
|
| - IPC_MESSAGE_HANDLER(ViewHostMsg_RegisterBlobUrlFrom, OnRegisterBlobUrlFrom)
|
| - IPC_MESSAGE_HANDLER(ViewHostMsg_UnregisterBlobUrl, OnUnregisterBlobUrl)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - return handled;
|
| -}
|
| -
|
| -// Check if the child process has been granted permission to register the files.
|
| -bool BlobDispatcherHost::CheckPermission(
|
| - webkit_blob::BlobData* blob_data) const {
|
| - ChildProcessSecurityPolicy* policy =
|
| - ChildProcessSecurityPolicy::GetInstance();
|
| - for (std::vector<webkit_blob::BlobData::Item>::const_iterator iter =
|
| - blob_data->items().begin();
|
| - iter != blob_data->items().end(); ++iter) {
|
| - if (iter->type() == webkit_blob::BlobData::TYPE_FILE) {
|
| - if (!policy->CanReadFile(process_id_, iter->file_path()))
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -void BlobDispatcherHost::OnRegisterBlobUrl(
|
| - const GURL& url, const scoped_refptr<webkit_blob::BlobData>& blob_data) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - if (!CheckPermission(blob_data.get()))
|
| - return;
|
| - blob_storage_context_->controller()->RegisterBlobUrl(url, blob_data);
|
| - blob_urls_.insert(url.spec());
|
| -}
|
| -
|
| -void BlobDispatcherHost::OnRegisterBlobUrlFrom(
|
| - const GURL& url, const GURL& src_url) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - blob_storage_context_->controller()->RegisterBlobUrlFrom(url, src_url);
|
| - blob_urls_.insert(url.spec());
|
| -}
|
| -
|
| -void BlobDispatcherHost::OnUnregisterBlobUrl(const GURL& url) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - blob_storage_context_->controller()->UnregisterBlobUrl(url);
|
| - blob_urls_.erase(url.spec());
|
| -}
|
|
|