1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Simple implementation of about: protocol handler that treats everything as 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// about:blank. No other about: features should be available to web content, 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// so they're not implemented here. 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/url_request/url_request_about_job.h" 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/compiler_specific.h" 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/message_loop.h" 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsennamespace net { 1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenURLRequestAboutJob::URLRequestAboutJob(URLRequest* request) 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen : URLRequestJob(request), 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// static 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottURLRequestJob* URLRequestAboutJob::Factory(URLRequest* request, 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const std::string& scheme) { 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return new URLRequestAboutJob(request); 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid URLRequestAboutJob::Start() { 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Start reading asynchronously so that all error reporting and data 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // callbacks happen as they would for network requests. 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MessageLoop::current()->PostTask( 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FROM_HERE, 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen method_factory_.NewRunnableMethod(&URLRequestAboutJob::StartAsync)); 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbool URLRequestAboutJob::GetMimeType(std::string* mime_type) const { 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *mime_type = "text/html"; 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return true; 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 403345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickURLRequestAboutJob::~URLRequestAboutJob() { 413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid URLRequestAboutJob::StartAsync() { 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NotifyHeadersComplete(); 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} // namespace net 48