Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / ppapi / cpp / url_loader.cc
blob1be87a777b05b5f1f04f23b6a7717a5933a697a9
1 // Copyright (c) 2012 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.
5 #include "ppapi/cpp/url_loader.h"
7 #include "ppapi/c/ppb_url_loader.h"
8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/cpp/file_ref.h"
11 #include "ppapi/cpp/instance_handle.h"
12 #include "ppapi/cpp/module.h"
13 #include "ppapi/cpp/module_impl.h"
14 #include "ppapi/cpp/url_request_info.h"
15 #include "ppapi/cpp/url_response_info.h"
17 namespace pp {
19 namespace {
21 template <> const char* interface_name<PPB_URLLoader_1_0>() {
22 return PPB_URLLOADER_INTERFACE_1_0;
25 } // namespace
27 URLLoader::URLLoader(PP_Resource resource) : Resource(resource) {
30 URLLoader::URLLoader(const InstanceHandle& instance) {
31 if (!has_interface<PPB_URLLoader_1_0>())
32 return;
33 PassRefFromConstructor(get_interface<PPB_URLLoader_1_0>()->Create(
34 instance.pp_instance()));
37 URLLoader::URLLoader(const URLLoader& other) : Resource(other) {
40 int32_t URLLoader::Open(const URLRequestInfo& request_info,
41 const CompletionCallback& cc) {
42 if (!has_interface<PPB_URLLoader_1_0>())
43 return cc.MayForce(PP_ERROR_NOINTERFACE);
44 return get_interface<PPB_URLLoader_1_0>()->Open(pp_resource(),
45 request_info.pp_resource(),
46 cc.pp_completion_callback());
49 int32_t URLLoader::FollowRedirect(const CompletionCallback& cc) {
50 if (!has_interface<PPB_URLLoader_1_0>())
51 return cc.MayForce(PP_ERROR_NOINTERFACE);
52 return get_interface<PPB_URLLoader_1_0>()->FollowRedirect(
53 pp_resource(), cc.pp_completion_callback());
56 bool URLLoader::GetUploadProgress(int64_t* bytes_sent,
57 int64_t* total_bytes_to_be_sent) const {
58 if (!has_interface<PPB_URLLoader_1_0>())
59 return false;
60 return PP_ToBool(get_interface<PPB_URLLoader_1_0>()->GetUploadProgress(
61 pp_resource(), bytes_sent, total_bytes_to_be_sent));
64 bool URLLoader::GetDownloadProgress(
65 int64_t* bytes_received,
66 int64_t* total_bytes_to_be_received) const {
67 if (!has_interface<PPB_URLLoader_1_0>())
68 return false;
69 return PP_ToBool(get_interface<PPB_URLLoader_1_0>()->GetDownloadProgress(
70 pp_resource(), bytes_received, total_bytes_to_be_received));
73 URLResponseInfo URLLoader::GetResponseInfo() const {
74 if (!has_interface<PPB_URLLoader_1_0>())
75 return URLResponseInfo();
76 return URLResponseInfo(PASS_REF,
77 get_interface<PPB_URLLoader_1_0>()->GetResponseInfo(
78 pp_resource()));
81 int32_t URLLoader::ReadResponseBody(void* buffer,
82 int32_t bytes_to_read,
83 const CompletionCallback& cc) {
84 if (!has_interface<PPB_URLLoader_1_0>())
85 return cc.MayForce(PP_ERROR_NOINTERFACE);
86 return get_interface<PPB_URLLoader_1_0>()->ReadResponseBody(
87 pp_resource(), buffer, bytes_to_read, cc.pp_completion_callback());
90 int32_t URLLoader::FinishStreamingToFile(const CompletionCallback& cc) {
91 if (!has_interface<PPB_URLLoader_1_0>())
92 return cc.MayForce(PP_ERROR_NOINTERFACE);
93 return get_interface<PPB_URLLoader_1_0>()->FinishStreamingToFile(
94 pp_resource(), cc.pp_completion_callback());
97 void URLLoader::Close() {
98 if (!has_interface<PPB_URLLoader_1_0>())
99 return;
100 get_interface<PPB_URLLoader_1_0>()->Close(pp_resource());
103 } // namespace pp