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

Side by Side Diff: chrome/browser/extensions/api/web_request/web_request_api.cc

Issue 11419034: net: Move ownership of UploadDataStream from URLRequestHttpJob to URLRequest (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Remove a local variable Created 8 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/web_request/web_request_api.h" 5 #include "chrome/browser/extensions/api/web_request/web_request_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 #include "content/public/browser/browser_message_filter.h" 45 #include "content/public/browser/browser_message_filter.h"
46 #include "content/public/browser/browser_thread.h" 46 #include "content/public/browser/browser_thread.h"
47 #include "content/public/browser/render_process_host.h" 47 #include "content/public/browser/render_process_host.h"
48 #include "content/public/browser/resource_request_info.h" 48 #include "content/public/browser/resource_request_info.h"
49 #include "extensions/common/error_utils.h" 49 #include "extensions/common/error_utils.h"
50 #include "extensions/common/url_pattern.h" 50 #include "extensions/common/url_pattern.h"
51 #include "googleurl/src/gurl.h" 51 #include "googleurl/src/gurl.h"
52 #include "grit/generated_resources.h" 52 #include "grit/generated_resources.h"
53 #include "net/base/auth.h" 53 #include "net/base/auth.h"
54 #include "net/base/net_errors.h" 54 #include "net/base/net_errors.h"
55 #include "net/base/upload_data.h" 55 #include "net/base/upload_data_stream.h"
56 #include "net/base/upload_element.h"
57 #include "net/http/http_response_headers.h" 56 #include "net/http/http_response_headers.h"
58 #include "net/url_request/url_request.h" 57 #include "net/url_request/url_request.h"
59 #include "ui/base/l10n/l10n_util.h" 58 #include "ui/base/l10n/l10n_util.h"
60 59
61 using base::DictionaryValue; 60 using base::DictionaryValue;
62 using base::ListValue; 61 using base::ListValue;
63 using base::StringValue; 62 using base::StringValue;
64 using chrome::VersionInfo; 63 using chrome::VersionInfo;
65 using content::BrowserMessageFilter; 64 using content::BrowserMessageFilter;
66 using content::BrowserThread; 65 using content::BrowserThread;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 out->SetInteger(keys::kFrameIdKey, frame_id_for_extension); 175 out->SetInteger(keys::kFrameIdKey, frame_id_for_extension);
177 out->SetInteger(keys::kParentFrameIdKey, parent_frame_id_for_extension); 176 out->SetInteger(keys::kParentFrameIdKey, parent_frame_id_for_extension);
178 out->SetInteger(keys::kTabIdKey, tab_id); 177 out->SetInteger(keys::kTabIdKey, tab_id);
179 out->SetString(keys::kTypeKey, helpers::ResourceTypeToString(resource_type)); 178 out->SetString(keys::kTypeKey, helpers::ResourceTypeToString(resource_type));
180 out->SetDouble(keys::kTimeStampKey, base::Time::Now().ToDoubleT() * 1000); 179 out->SetDouble(keys::kTimeStampKey, base::Time::Now().ToDoubleT() * 1000);
181 } 180 }
182 181
183 // Extracts the body from |request| and writes the data into |out|. 182 // Extracts the body from |request| and writes the data into |out|.
184 void ExtractRequestInfoBody(const net::URLRequest* request, 183 void ExtractRequestInfoBody(const net::URLRequest* request,
185 DictionaryValue* out) { 184 DictionaryValue* out) {
186 const net::UploadData* upload_data = request->get_upload(); 185 const net::UploadDataStream* upload_data = request->get_upload();
187 if (!upload_data || 186 if (!upload_data ||
188 (request->method() != "POST" && request->method() != "PUT")) 187 (request->method() != "POST" && request->method() != "PUT"))
189 return; // Need to exit without "out->Set(keys::kRequestBodyKey, ...);" . 188 return; // Need to exit without "out->Set(keys::kRequestBodyKey, ...);" .
190 189
191 DictionaryValue* requestBody = new DictionaryValue(); 190 DictionaryValue* requestBody = new DictionaryValue();
192 out->Set(keys::kRequestBodyKey, requestBody); 191 out->Set(keys::kRequestBodyKey, requestBody);
193 192
194 // Get the data presenters, ordered by how specific they are. 193 // Get the data presenters, ordered by how specific they are.
195 extensions::ParsedDataPresenter parsed_data_presenter(*request); 194 extensions::ParsedDataPresenter parsed_data_presenter(*request);
196 extensions::RawDataPresenter raw_data_presenter; 195 extensions::RawDataPresenter raw_data_presenter;
197 extensions::UploadDataPresenter* const presenters[] = { 196 extensions::UploadDataPresenter* const presenters[] = {
198 &parsed_data_presenter, // 1: any parseable forms? (Specific to forms.) 197 &parsed_data_presenter, // 1: any parseable forms? (Specific to forms.)
199 &raw_data_presenter // 2: any data at all? (Non-specific.) 198 &raw_data_presenter // 2: any data at all? (Non-specific.)
200 }; 199 };
201 // Keys for the results of the corresponding presenters. 200 // Keys for the results of the corresponding presenters.
202 static const char* const kKeys[] = { 201 static const char* const kKeys[] = {
203 keys::kRequestBodyFormDataKey, 202 keys::kRequestBodyFormDataKey,
204 keys::kRequestBodyRawKey 203 keys::kRequestBodyRawKey
205 }; 204 };
206 205
207 const ScopedVector<net::UploadElement>& elements = upload_data->elements(); 206 const ScopedVector<net::UploadElementReader>& readers =
207 upload_data->element_readers();
208 bool some_succeeded = false; 208 bool some_succeeded = false;
209 for (size_t i = 0; !some_succeeded && i < arraysize(presenters); ++i) { 209 for (size_t i = 0; !some_succeeded && i < arraysize(presenters); ++i) {
210 ScopedVector<net::UploadElement>::const_iterator element; 210 ScopedVector<net::UploadElementReader>::const_iterator reader;
211 for (element = elements.begin(); element != elements.end(); ++element) 211 for (reader = readers.begin(); reader != readers.end(); ++reader)
212 presenters[i]->FeedNext(**element); 212 presenters[i]->FeedNext(**reader);
213 if (presenters[i]->Succeeded()) { 213 if (presenters[i]->Succeeded()) {
214 requestBody->Set(kKeys[i], presenters[i]->Result().release()); 214 requestBody->Set(kKeys[i], presenters[i]->Result().release());
215 some_succeeded = true; 215 some_succeeded = true;
216 } 216 }
217 } 217 }
218 if (!some_succeeded) 218 if (!some_succeeded)
219 requestBody->SetString(keys::kRequestBodyErrorKey, "Unknown error."); 219 requestBody->SetString(keys::kRequestBodyErrorKey, "Unknown error.");
220 } 220 }
221 221
222 // Converts a HttpHeaders dictionary to a |name|, |value| pair. Returns 222 // Converts a HttpHeaders dictionary to a |name|, |value| pair. Returns
(...skipping 1690 matching lines...) Expand 10 before | Expand all | Expand 10 after
1913 } else if ((*it)->name().find("AdBlock") != std::string::npos) { 1913 } else if ((*it)->name().find("AdBlock") != std::string::npos) {
1914 adblock = true; 1914 adblock = true;
1915 } else { 1915 } else {
1916 other = true; 1916 other = true;
1917 } 1917 }
1918 } 1918 }
1919 } 1919 }
1920 1920
1921 host->Send(new ExtensionMsg_UsingWebRequestAPI(adblock, adblock_plus, other)); 1921 host->Send(new ExtensionMsg_UsingWebRequestAPI(adblock, adblock_plus, other));
1922 } 1922 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698