13f50c38dc070f4bb515c1b64450dae14f316474eKristian 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// This file's dependencies should be kept to a minimum so that it can be 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// included in WebKit code that doesn't rely on much of common. 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NET_URL_REQUEST_URL_REQUEST_STATUS_H_ 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define NET_URL_REQUEST_URL_REQUEST_STATUS_H_ 103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsennamespace net { 133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Represents the result of a URL request. It encodes errors and various 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// types of success. 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass URLRequestStatus { 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott public: 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott enum Status { 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Request succeeded, os_error() will be 0. 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott SUCCESS = 0, 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // An IO request is pending, and the caller will be informed when it is 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // completed. 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IO_PENDING, 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Request was successful but was handled by an external program, so there 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // is no response data. This usually means the current page should not be 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // navigated, but no error should be displayed. os_error will be 0. 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott HANDLED_EXTERNALLY, 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Request was cancelled programatically. 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott CANCELED, 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // The request failed for some reason. os_error may have more information. 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott FAILED, 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott }; 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott URLRequestStatus() : status_(SUCCESS), os_error_(0) {} 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott URLRequestStatus(Status s, int e) : status_(s), os_error_(e) {} 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Status status() const { return status_; } 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott void set_status(Status s) { status_ = s; } 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int os_error() const { return os_error_; } 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott void set_os_error(int e) { os_error_ = e; } 46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Returns true if the status is success, which makes some calling code more 48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // convenient because this is the most common test. Note that we do NOT treat 49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // HANDLED_EXTERNALLY as success. For everything except user notifications, 50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // this value should be handled like an error (processing should stop). 51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott bool is_success() const { 52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return status_ == SUCCESS || status_ == IO_PENDING; 53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Returns true if the request is waiting for IO. 56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott bool is_io_pending() const { 57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return status_ == IO_PENDING; 58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott private: 61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Application level status 62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Status status_; 63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Error code from the operating system network layer if an error was 65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // encountered 66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int os_error_; 67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 693f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} // namespace net 703f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 71c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // NET_URL_REQUEST_URL_REQUEST_STATUS_H_ 72