Home | History | Annotate | Download | only in url_request
      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 
     11 namespace net {
     12 
     13 URLRequestDataJob::URLRequestDataJob(URLRequest* request)
     14     : URLRequestSimpleJob(request) {
     15 }
     16 
     17 // static
     18 URLRequestJob* URLRequestDataJob::Factory(URLRequest* request,
     19                                           const std::string& scheme) {
     20   return new URLRequestDataJob(request);
     21 }
     22 
     23 bool 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 
     34 URLRequestDataJob::~URLRequestDataJob() {
     35 }
     36 
     37 }  // namespace net
     38