1// Copyright (c) 2010 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// Simple implementation of a data: protocol handler.
6
7#include "net/url_request/url_request_data_job.h"
8
9#include "net/base/data_url.h"
10
11namespace net {
12
13URLRequestDataJob::URLRequestDataJob(URLRequest* request)
14    : URLRequestSimpleJob(request) {
15}
16
17// static
18URLRequestJob* URLRequestDataJob::Factory(URLRequest* request,
19                                          const std::string& scheme) {
20  return new URLRequestDataJob(request);
21}
22
23bool URLRequestDataJob::GetData(std::string* mime_type,
24                                std::string* charset,
25                                std::string* data) const {
26  // Check if data URL is valid. If not, don't bother to try to extract data.
27  // Otherwise, parse the data from the data URL.
28  const GURL& url = request_->url();
29  if (!url.is_valid())
30    return false;
31  return DataURL::Parse(url, mime_type, charset, data);
32}
33
34URLRequestDataJob::~URLRequestDataJob() {
35}
36
37}  // namespace net
38