| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "modules/fetch/Request.h" | 5 #include "modules/fetch/Request.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/Dictionary.h" | 7 #include "bindings/core/v8/Dictionary.h" |
| 8 #include "bindings/core/v8/V8PrivateProperty.h" | 8 #include "bindings/core/v8/V8PrivateProperty.h" |
| 9 #include "core/dom/Document.h" | 9 #include "core/dom/Document.h" |
| 10 #include "core/dom/ExecutionContext.h" | 10 #include "core/dom/ExecutionContext.h" |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 // Headers object whose guard is "request"." | 313 // Headers object whose guard is "request"." |
| 314 Request* r = Request::Create(script_state, request); | 314 Request* r = Request::Create(script_state, request); |
| 315 // Perform the following steps: | 315 // Perform the following steps: |
| 316 // - "Let |headers| be a copy of |r|'s Headers object." | 316 // - "Let |headers| be a copy of |r|'s Headers object." |
| 317 // - "If |init|'s headers member is present, set |headers| to |init|'s | 317 // - "If |init|'s headers member is present, set |headers| to |init|'s |
| 318 // headers member." | 318 // headers member." |
| 319 // | 319 // |
| 320 // We don't create a copy of r's Headers object when init's headers member | 320 // We don't create a copy of r's Headers object when init's headers member |
| 321 // is present. | 321 // is present. |
| 322 Headers* headers = nullptr; | 322 Headers* headers = nullptr; |
| 323 if (!init.headers) { | 323 if (init.headers.isNull()) { |
| 324 headers = r->getHeaders()->Clone(); | 324 headers = r->getHeaders()->Clone(); |
| 325 } | 325 } |
| 326 // "Empty |r|'s request's header list." | 326 // "Empty |r|'s request's header list." |
| 327 r->request_->HeaderList()->ClearList(); | 327 r->request_->HeaderList()->ClearList(); |
| 328 // "If |r|'s request's mode is "no-cors", run these substeps: | 328 // "If |r|'s request's mode is "no-cors", run these substeps: |
| 329 if (r->GetRequest()->Mode() == WebURLRequest::kFetchRequestModeNoCORS) { | 329 if (r->GetRequest()->Mode() == WebURLRequest::kFetchRequestModeNoCORS) { |
| 330 // "If |r|'s request's method is not a simple method, throw a | 330 // "If |r|'s request's method is not a simple method, throw a |
| 331 // TypeError." | 331 // TypeError." |
| 332 if (!FetchUtils::IsSimpleMethod(r->GetRequest()->Method())) { | 332 if (!FetchUtils::IsSimpleMethod(r->GetRequest()->Method())) { |
| 333 exception_state.ThrowTypeError("'" + r->GetRequest()->Method() + | 333 exception_state.ThrowTypeError("'" + r->GetRequest()->Method() + |
| 334 "' is unsupported in no-cors mode."); | 334 "' is unsupported in no-cors mode."); |
| 335 return nullptr; | 335 return nullptr; |
| 336 } | 336 } |
| 337 // "If |request|'s integrity metadata is not the empty string, throw a | 337 // "If |request|'s integrity metadata is not the empty string, throw a |
| 338 // TypeError." | 338 // TypeError." |
| 339 if (!request->Integrity().IsEmpty()) { | 339 if (!request->Integrity().IsEmpty()) { |
| 340 exception_state.ThrowTypeError( | 340 exception_state.ThrowTypeError( |
| 341 "The integrity attribute is unsupported in no-cors mode."); | 341 "The integrity attribute is unsupported in no-cors mode."); |
| 342 return nullptr; | 342 return nullptr; |
| 343 } | 343 } |
| 344 // "Set |r|'s Headers object's guard to "request-no-cors"." | 344 // "Set |r|'s Headers object's guard to "request-no-cors"." |
| 345 r->getHeaders()->SetGuard(Headers::kRequestNoCORSGuard); | 345 r->getHeaders()->SetGuard(Headers::kRequestNoCORSGuard); |
| 346 } | 346 } |
| 347 // "Fill |r|'s Headers object with |headers|. Rethrow any exceptions." | 347 // "Fill |r|'s Headers object with |headers|. Rethrow any exceptions." |
| 348 if (init.headers) { | 348 if (!init.headers.isNull()) { |
| 349 r->getHeaders()->FillWith(init.headers.Get(), exception_state); | 349 r->getHeaders()->FillWith(init.headers, exception_state); |
| 350 } else { | 350 } else { |
| 351 DCHECK(headers); | 351 DCHECK(headers); |
| 352 r->getHeaders()->FillWith(headers, exception_state); | 352 r->getHeaders()->FillWith(headers, exception_state); |
| 353 } | 353 } |
| 354 if (exception_state.HadException()) | 354 if (exception_state.HadException()) |
| 355 return nullptr; | 355 return nullptr; |
| 356 | 356 |
| 357 // "If either |init|'s body member is present or |temporaryBody| is | 357 // "If either |init|'s body member is present or |temporaryBody| is |
| 358 // non-null, and |request|'s method is `GET` or `HEAD`, throw a TypeError. | 358 // non-null, and |request|'s method is `GET` or `HEAD`, throw a TypeError. |
| 359 if (init.body || temporary_body || | 359 if (init.body || temporary_body || |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 767 .Set(request.As<v8::Object>(), body_buffer); | 767 .Set(request.As<v8::Object>(), body_buffer); |
| 768 } | 768 } |
| 769 | 769 |
| 770 DEFINE_TRACE(Request) { | 770 DEFINE_TRACE(Request) { |
| 771 Body::Trace(visitor); | 771 Body::Trace(visitor); |
| 772 visitor->Trace(request_); | 772 visitor->Trace(request_); |
| 773 visitor->Trace(headers_); | 773 visitor->Trace(headers_); |
| 774 } | 774 } |
| 775 | 775 |
| 776 } // namespace blink | 776 } // namespace blink |
| OLD | NEW |