summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/loader/frame_load_request.cc
blob: 0b30b8daa1204b9ea8d9408a09aa17722aee1eca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "third_party/blink/renderer/core/loader/frame_load_request.h"

#include "third_party/blink/public/common/blob/blob_utils.h"
#include "third_party/blink/public/platform/web_url_request.h"
#include "third_party/blink/renderer/core/fileapi/public_url_manager.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_request.h"
#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"

namespace blink {

FrameLoadRequest::FrameLoadRequest(Document* origin_document)
    : FrameLoadRequest(origin_document, ResourceRequest()) {}

FrameLoadRequest::FrameLoadRequest(Document* origin_document,
                                   const ResourceRequest& resource_request)
    : FrameLoadRequest(origin_document, resource_request, AtomicString()) {}

FrameLoadRequest::FrameLoadRequest(Document* origin_document,
                                   const ResourceRequest& resource_request,
                                   const AtomicString& frame_name)
    : FrameLoadRequest(origin_document,
                       resource_request,
                       frame_name,
                       kCheckContentSecurityPolicy,
                       base::UnguessableToken::Create()) {}

FrameLoadRequest::FrameLoadRequest(Document* origin_document,
                                   const ResourceRequest& resource_request,
                                   const SubstituteData& substitute_data)
    : FrameLoadRequest(origin_document,
                       resource_request,
                       AtomicString(),
                       substitute_data,
                       kCheckContentSecurityPolicy,
                       base::UnguessableToken::Create()) {}

FrameLoadRequest::FrameLoadRequest(
    Document* origin_document,
    const ResourceRequest& resource_request,
    const AtomicString& frame_name,
    ContentSecurityPolicyDisposition
        should_check_main_world_content_security_policy)
    : FrameLoadRequest(origin_document,
                       resource_request,
                       frame_name,
                       should_check_main_world_content_security_policy,
                       base::UnguessableToken::Create()) {}

FrameLoadRequest::FrameLoadRequest(
    Document* origin_document,
    const ResourceRequest& resource_request,
    const AtomicString& frame_name,
    ContentSecurityPolicyDisposition
        should_check_main_world_content_security_policy,
    const base::UnguessableToken& devtools_navigation_token)
    : FrameLoadRequest(origin_document,
                       resource_request,
                       frame_name,
                       SubstituteData(),
                       should_check_main_world_content_security_policy,
                       devtools_navigation_token) {}

FrameLoadRequest::FrameLoadRequest(
    Document* origin_document,
    const ResourceRequest& resource_request,
    const AtomicString& frame_name,
    const SubstituteData& substitute_data,
    ContentSecurityPolicyDisposition
        should_check_main_world_content_security_policy,
    const base::UnguessableToken& devtools_navigation_token)
    : origin_document_(origin_document),
      resource_request_(resource_request),
      frame_name_(frame_name),
      substitute_data_(substitute_data),
      replaces_current_item_(false),
      client_redirect_(ClientRedirectPolicy::kNotClientRedirect),
      should_send_referrer_(kMaybeSendReferrer),
      should_set_opener_(kMaybeSetOpener),
      should_check_main_world_content_security_policy_(
          should_check_main_world_content_security_policy),
      devtools_navigation_token_(devtools_navigation_token) {
  // These flags are passed to a service worker which controls the page.
  resource_request_.SetFetchRequestMode(
      network::mojom::FetchRequestMode::kNavigate);
  resource_request_.SetFetchCredentialsMode(
      network::mojom::FetchCredentialsMode::kInclude);
  resource_request_.SetFetchRedirectMode(
      network::mojom::FetchRedirectMode::kManual);

  if (origin_document) {
    DCHECK(!resource_request_.RequestorOrigin());
    resource_request_.SetRequestorOrigin(
        SecurityOrigin::Create(origin_document->Url()));

    if (resource_request.Url().ProtocolIs("blob") &&
        BlobUtils::MojoBlobURLsEnabled()) {
      blob_url_token_ = base::MakeRefCounted<
          base::RefCountedData<mojom::blink::BlobURLTokenPtr>>();
      origin_document->GetPublicURLManager().Resolve(
          resource_request.Url(), MakeRequest(&blob_url_token_->data));
    }
  }
}

}  // namespace blink