blob: 93151ddaf8fe2b5a71650cd0091d835947477d74 [file] [log] [blame]
// Copyright 2015 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 "content/browser/cache_storage/cache_storage_dispatcher_host.h"
#include "base/logging.h"
#include "content/browser/cache_storage/cache_storage_context_impl.h"
#include "content/browser/cache_storage/cache_storage_listener.h"
#include "content/common/cache_storage/cache_storage_messages.h"
#include "content/public/browser/content_browser_client.h"
namespace content {
namespace {
const uint32 kFilteredMessageClasses[] = {CacheStorageMsgStart};
} // namespace
CacheStorageDispatcherHost::CacheStorageDispatcherHost()
: BrowserMessageFilter(kFilteredMessageClasses,
arraysize(kFilteredMessageClasses)) {
}
CacheStorageDispatcherHost::~CacheStorageDispatcherHost() {
}
void CacheStorageDispatcherHost::Init(CacheStorageContextImpl* context) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(&CacheStorageDispatcherHost::CreateCacheListener, this,
make_scoped_refptr(context)));
}
void CacheStorageDispatcherHost::OnDestruct() const {
BrowserThread::DeleteOnIOThread::Destruct(this);
}
bool CacheStorageDispatcherHost::OnMessageReceived(
const IPC::Message& message) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK(cache_listener_);
bool handled = cache_listener_->OnMessageReceived(message);
if (!handled)
BadMessageReceived();
return handled;
}
void CacheStorageDispatcherHost::CreateCacheListener(
CacheStorageContextImpl* context) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
cache_listener_.reset(new CacheStorageListener(this, context));
}
} // namespace content