mock_blob_url_request_context.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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
3// found in the LICENSE file.
4
5#include "content/public/test/mock_blob_url_request_context.h"
6
7#include "webkit/browser/blob/blob_storage_context.h"
8#include "webkit/browser/blob/blob_url_request_job.h"
9#include "webkit/browser/blob/blob_url_request_job_factory.h"
10#include "webkit/common/blob/blob_data.h"
11
12
13namespace content {
14
15MockBlobURLRequestContext::MockBlobURLRequestContext(
16    fileapi::FileSystemContext* file_system_context)
17    : blob_storage_context_(new webkit_blob::BlobStorageContext) {
18  // Job factory owns the protocol handler.
19  job_factory_.SetProtocolHandler(
20      "blob", new webkit_blob::BlobProtocolHandler(blob_storage_context_.get(),
21                                      file_system_context,
22                                      base::MessageLoopProxy::current()));
23  set_job_factory(&job_factory_);
24}
25
26MockBlobURLRequestContext::~MockBlobURLRequestContext() {
27  AssertNoURLRequests();
28}
29
30ScopedTextBlob::ScopedTextBlob(
31    const MockBlobURLRequestContext& request_context,
32    const std::string& blob_id,
33    const std::string& data)
34    : blob_id_(blob_id),
35      context_(request_context.blob_storage_context()) {
36  DCHECK(context_);
37  scoped_refptr<webkit_blob::BlobData> blob_data(
38      new webkit_blob::BlobData(blob_id_));
39  if (!data.empty())
40    blob_data->AppendData(data);
41  handle_ = context_->AddFinishedBlob(blob_data);
42}
43
44ScopedTextBlob::~ScopedTextBlob() {
45}
46
47scoped_ptr<webkit_blob::BlobDataHandle> ScopedTextBlob::GetBlobDataHandle() {
48  return context_->GetBlobDataFromUUID(blob_id_);
49}
50
51}  // namespace content
52