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

Side by Side Diff: third_party/WebKit/Source/core/loader/BaseFetchContext.h

Issue 2823213002: Implement CanRequest in BaseFetchContext (Closed)
Patch Set: make it work with non-document Created 3 years, 8 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 #ifndef BaseFetchContext_h 5 #ifndef BaseFetchContext_h
6 #define BaseFetchContext_h 6 #define BaseFetchContext_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/dom/ExecutionContext.h" 9 #include "core/frame/UseCounter.h"
10 #include "core/frame/csp/ContentSecurityPolicy.h"
10 #include "platform/heap/Handle.h" 11 #include "platform/heap/Handle.h"
11 #include "platform/loader/fetch/FetchContext.h" 12 #include "platform/loader/fetch/FetchContext.h"
12 #include "platform/loader/fetch/ResourceRequest.h" 13 #include "platform/loader/fetch/ResourceRequest.h"
13 14
14 namespace blink { 15 namespace blink {
15 16
17 class ContentSettingsClient;
18 class ExecutionContext;
19 class SecurityContext;
20 class Settings;
21 class SubresourceFilter;
22
23 // A core-level implementaiton of FetchContext that does not depend on
24 // Frame. This class provides basic default implementation for some methods.
16 class CORE_EXPORT BaseFetchContext : public FetchContext { 25 class CORE_EXPORT BaseFetchContext : public FetchContext {
17 public: 26 public:
18 explicit BaseFetchContext(ExecutionContext*); 27 explicit BaseFetchContext(ExecutionContext*);
19 ~BaseFetchContext() override { execution_context_ = nullptr; } 28 ~BaseFetchContext() override { execution_context_ = nullptr; }
20 29
21 void AddAdditionalRequestHeaders(ResourceRequest&, 30 void AddAdditionalRequestHeaders(ResourceRequest&,
22 FetchResourceType) override; 31 FetchResourceType) override;
32 ResourceRequestBlockedReason CanRequest(
33 Resource::Type,
34 const ResourceRequest&,
35 const KURL&,
36 const ResourceLoaderOptions&,
37 SecurityViolationReportingPolicy,
38 FetchParameters::OriginRestriction) const override;
39 ResourceRequestBlockedReason CanFollowRedirect(
40 Resource::Type,
41 const ResourceRequest&,
42 const KURL&,
43 const ResourceLoaderOptions&,
44 SecurityViolationReportingPolicy,
45 FetchParameters::OriginRestriction) const override;
46 ResourceRequestBlockedReason AllowResponse(
47 Resource::Type,
48 const ResourceRequest&,
49 const KURL&,
50 const ResourceLoaderOptions&) const override;
23 SecurityOrigin* GetSecurityOrigin() const override; 51 SecurityOrigin* GetSecurityOrigin() const override;
24 52
25 DECLARE_VIRTUAL_TRACE(); 53 DECLARE_VIRTUAL_TRACE();
26 54
27 protected: 55 protected:
56 // Used for security checks. It is valid that they return nullptr,
57 // while returning nullptr may result in disable some security checks.
58 virtual ContentSettingsClient* GetContentSettingsClient() const = 0;
59 virtual Settings* GetSettings() const = 0;
60 virtual SubresourceFilter* GetSubresourceFilter() const = 0;
61 virtual SecurityContext* GetMainResourceSecurityContext() const = 0;
62
63 // Note: subclasses are expected to override following methods.
64 // Used in the default implementation for CanRequest, CanFollowRedirect
65 // and AllowResponse.
66 virtual bool ShouldBlockRequestByInspector(const ResourceRequest&) const = 0;
67 virtual void DispatchDidBlockRequest(const ResourceRequest&,
68 const FetchInitiatorInfo&,
69 ResourceRequestBlockedReason) const = 0;
70 // TODO(kinuko): Consider implementing this on ExecutionContext and
71 // remove this virtual method.
72 virtual void ReportLocalLoadFailed(const KURL&) const = 0;
73 virtual bool ShouldBypassMainWorldCSP() const = 0;
74 virtual bool IsSVGImageChromeClient() const = 0;
75 virtual void CountUsage(UseCounter::Feature) const = 0;
76 virtual void CountDeprecation(UseCounter::Feature) const = 0;
77 virtual bool ShouldBlockFetchByMixedContentCheck(
78 const ResourceRequest&,
79 const KURL&,
80 SecurityViolationReportingPolicy) const = 0;
81
82 // Utility method that can be used to implement other methods.
28 void PrintAccessDeniedMessage(const KURL&) const; 83 void PrintAccessDeniedMessage(const KURL&) const;
29 void AddCSPHeaderIfNecessary(Resource::Type, ResourceRequest&); 84 void AddCSPHeaderIfNecessary(Resource::Type, ResourceRequest&);
85 ResourceRequestBlockedReason CheckCSPForRequest(
86 const ResourceRequest&,
87 const KURL&,
88 const ResourceLoaderOptions&,
89 SecurityViolationReportingPolicy,
90 ResourceRequest::RedirectStatus,
91 ContentSecurityPolicy::CheckHeaderType) const;
92
93 // Utility methods that are used in default implement for CanRequest,
94 // CanFollowRedirect and AllowResponse.
95 ResourceRequestBlockedReason CanRequestInternal(
96 Resource::Type,
97 const ResourceRequest&,
98 const KURL&,
99 const ResourceLoaderOptions&,
100 SecurityViolationReportingPolicy,
101 FetchParameters::OriginRestriction,
102 ResourceRequest::RedirectStatus) const;
30 103
31 // FIXME: Oilpan: Ideally this should just be a traced Member but that will 104 // FIXME: Oilpan: Ideally this should just be a traced Member but that will
32 // currently leak because ComputedStyle and its data are not on the heap. 105 // currently leak because ComputedStyle and its data are not on the heap.
33 // See crbug.com/383860 for details. 106 // See crbug.com/383860 for details.
34 WeakMember<ExecutionContext> execution_context_; 107 WeakMember<ExecutionContext> execution_context_;
35 }; 108 };
36 109
37 } // namespace blink 110 } // namespace blink
38 111
39 #endif // BaseFetchContext_h 112 #endif // BaseFetchContext_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698