Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Side by Side Diff: Source/core/platform/chromium/support/WebHTTPBody.cpp

Issue 29123004: Move core/platform/network to platform/network (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: One more file Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
13 * distribution.
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 #include "config.h"
32 #include "public/platform/WebHTTPBody.h"
33
34 #include "core/platform/network/FormData.h"
35 #include "platform/FileMetadata.h"
36
37 using namespace WebCore;
38
39 namespace WebKit {
40
41 class WebHTTPBodyPrivate : public FormData {
42 };
43
44 void WebHTTPBody::initialize()
45 {
46 assign(static_cast<WebHTTPBodyPrivate*>(FormData::create().leakRef()));
47 }
48
49 void WebHTTPBody::reset()
50 {
51 assign(0);
52 }
53
54 void WebHTTPBody::assign(const WebHTTPBody& other)
55 {
56 WebHTTPBodyPrivate* p = const_cast<WebHTTPBodyPrivate*>(other.m_private);
57 if (p)
58 p->ref();
59 assign(p);
60 }
61
62 size_t WebHTTPBody::elementCount() const
63 {
64 ASSERT(!isNull());
65 return m_private->elements().size();
66 }
67
68 bool WebHTTPBody::elementAt(size_t index, Element& result) const
69 {
70 ASSERT(!isNull());
71
72 if (index >= m_private->elements().size())
73 return false;
74
75 const FormDataElement& element = m_private->elements()[index];
76
77 result.data.reset();
78 result.filePath.reset();
79 result.fileStart = 0;
80 result.fileLength = 0;
81 result.modificationTime = invalidFileTime();
82 result.blobUUID.reset();
83
84 switch (element.m_type) {
85 case FormDataElement::data:
86 result.type = Element::TypeData;
87 result.data.assign(element.m_data.data(), element.m_data.size());
88 break;
89 case FormDataElement::encodedFile:
90 result.type = Element::TypeFile;
91 result.filePath = element.m_filename;
92 result.fileStart = element.m_fileStart;
93 result.fileLength = element.m_fileLength;
94 result.modificationTime = element.m_expectedFileModificationTime;
95 break;
96 case FormDataElement::encodedBlob:
97 result.type = Element::TypeBlob;
98 result.blobUUID = element.m_blobUUID;
99 break;
100 case FormDataElement::encodedFileSystemURL:
101 result.type = Element::TypeFileSystemURL;
102 result.fileSystemURL = element.m_fileSystemURL;
103 result.fileStart = element.m_fileStart;
104 result.fileLength = element.m_fileLength;
105 result.modificationTime = element.m_expectedFileModificationTime;
106 break;
107 default:
108 ASSERT_NOT_REACHED();
109 return false;
110 }
111
112 return true;
113 }
114
115 void WebHTTPBody::appendData(const WebData& data)
116 {
117 ensureMutable();
118 // FIXME: FormDataElement::m_data should be a SharedBuffer<char>. Then we
119 // could avoid this buffer copy.
120 m_private->appendData(data.data(), data.size());
121 }
122
123 void WebHTTPBody::appendFile(const WebString& filePath)
124 {
125 ensureMutable();
126 m_private->appendFile(filePath);
127 }
128
129 void WebHTTPBody::appendFileRange(const WebString& filePath, long long fileStart , long long fileLength, double modificationTime)
130 {
131 ensureMutable();
132 m_private->appendFileRange(filePath, fileStart, fileLength, modificationTime );
133 }
134
135 void WebHTTPBody::appendFileSystemURLRange(const WebURL& url, long long start, l ong long length, double modificationTime)
136 {
137 // Currently we only support filesystem URL.
138 ASSERT(KURL(url).protocolIs("filesystem"));
139 ensureMutable();
140 m_private->appendFileSystemURLRange(url, start, length, modificationTime);
141 }
142
143 void WebHTTPBody::appendBlob(const WebString& uuid)
144 {
145 ensureMutable();
146 m_private->appendBlob(uuid, 0);
147 }
148
149 long long WebHTTPBody::identifier() const
150 {
151 ASSERT(!isNull());
152 return m_private->identifier();
153 }
154
155 void WebHTTPBody::setIdentifier(long long identifier)
156 {
157 ensureMutable();
158 return m_private->setIdentifier(identifier);
159 }
160
161 bool WebHTTPBody::containsPasswordData() const
162 {
163 return m_private->containsPasswordData();
164 }
165
166 void WebHTTPBody::setContainsPasswordData(bool containsPasswordData)
167 {
168 m_private->setContainsPasswordData(containsPasswordData);
169 }
170
171 WebHTTPBody::WebHTTPBody(const PassRefPtr<FormData>& data)
172 : m_private(static_cast<WebHTTPBodyPrivate*>(data.leakRef()))
173 {
174 }
175
176 WebHTTPBody& WebHTTPBody::operator=(const PassRefPtr<FormData>& data)
177 {
178 assign(static_cast<WebHTTPBodyPrivate*>(data.leakRef()));
179 return *this;
180 }
181
182 WebHTTPBody::operator PassRefPtr<FormData>() const
183 {
184 return m_private;
185 }
186
187 void WebHTTPBody::assign(WebHTTPBodyPrivate* p)
188 {
189 // p is already ref'd for us by the caller
190 if (m_private)
191 m_private->deref();
192 m_private = p;
193 }
194
195 void WebHTTPBody::ensureMutable()
196 {
197 ASSERT(!isNull());
198 if (!m_private->hasOneRef())
199 assign(static_cast<WebHTTPBodyPrivate*>(m_private->copy().leakRef()));
200 }
201
202 } // namespace WebKit
OLDNEW
« no previous file with comments | « Source/core/platform/CrossThreadCopier.cpp ('k') | Source/core/platform/chromium/support/WebHTTPLoadInfo.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698