Allow-building-without-enable_reporting.patch 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. From: Zoraver Kang <Zoraver@users.noreply.github.com>
  2. Date: Fri, 22 May 2020 22:43:27 -0400
  3. Subject: Allow building without enable_reporting
  4. ---
  5. .../browser/devtools/protocol/network_handler.cc | 2 ++
  6. .../net/cross_origin_embedder_policy_reporter.cc | 4 +++-
  7. .../net/cross_origin_opener_policy_reporter.cc | 16 +++++++---------
  8. content/browser/net/reporting_service_proxy.cc | 3 +++
  9. .../renderer_host/render_frame_host_impl.cc | 2 ++
  10. .../web_package/signed_exchange_reporter.cc | 2 ++
  11. ...content_switch_dependent_feature_overrides.cc | 1 +
  12. net/reporting/reporting_service.cc | 6 ++++++
  13. services/network/network_context.h | 4 ++--
  14. services/network/public/mojom/BUILD.gn | 1 -
  15. .../network/public/mojom/network_context.mojom | 2 ++
  16. .../blink/renderer/core/frame/local_frame.cc | 3 +++
  17. .../blink/renderer/core/frame/local_frame.h | 6 +++---
  18. .../renderer/core/frame/reporting_context.cc | 9 +++++++++
  19. .../renderer/core/frame/reporting_context.h | 7 +++++--
  20. 15 files changed, 50 insertions(+), 18 deletions(-)
  21. diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
  22. --- a/content/browser/devtools/protocol/network_handler.cc
  23. +++ b/content/browser/devtools/protocol/network_handler.cc
  24. @@ -1289,6 +1289,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
  25. }
  26. }
  27. +#if BUILDFLAG(ENABLE_REPORTING)
  28. std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
  29. std::vector<GURL> urls;
  30. base::queue<FrameTreeNode*> queue;
  31. @@ -1306,6 +1307,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
  32. }
  33. return urls;
  34. }
  35. +#endif // BUILDFLAG(ENABLE_REPORTING)
  36. } // namespace
  37. diff --git a/content/browser/net/cross_origin_embedder_policy_reporter.cc b/content/browser/net/cross_origin_embedder_policy_reporter.cc
  38. --- a/content/browser/net/cross_origin_embedder_policy_reporter.cc
  39. +++ b/content/browser/net/cross_origin_embedder_policy_reporter.cc
  40. @@ -4,6 +4,7 @@
  41. #include "content/browser/net/cross_origin_embedder_policy_reporter.h"
  42. +#include "net/base/features.h"
  43. #include "base/strings/string_piece.h"
  44. #include "base/values.h"
  45. #include "content/public/browser/storage_partition.h"
  46. @@ -112,6 +113,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
  47. kType, context_url_, blink::mojom::ReportBody::New(std::move(list))));
  48. }
  49. if (endpoint) {
  50. +#if BUILDFLAG(ENABLE_REPORTING)
  51. base::DictionaryValue body_to_pass;
  52. for (const auto& pair : body) {
  53. body_to_pass.SetString(pair.first, pair.second);
  54. @@ -123,7 +125,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
  55. kType, *endpoint, context_url_, reporting_source_,
  56. network_isolation_key_,
  57. /*user_agent=*/absl::nullopt, std::move(body_to_pass));
  58. - }
  59. +#endif
  60. }
  61. }
  62. diff --git a/content/browser/net/cross_origin_opener_policy_reporter.cc b/content/browser/net/cross_origin_opener_policy_reporter.cc
  63. --- a/content/browser/net/cross_origin_opener_policy_reporter.cc
  64. +++ b/content/browser/net/cross_origin_opener_policy_reporter.cc
  65. @@ -17,25 +17,17 @@
  66. #include "services/network/public/mojom/network_context.mojom.h"
  67. #include "services/network/public/mojom/source_location.mojom.h"
  68. #include "url/origin.h"
  69. +#include "build/build_config.h"
  70. namespace content {
  71. namespace {
  72. // Report attribute names (camelCase):
  73. -constexpr char kColumnNumber[] = "columnNumber";
  74. constexpr char kDisposition[] = "disposition";
  75. -constexpr char kEffectivePolicy[] = "effectivePolicy";
  76. -constexpr char kInitialPopupURL[] = "initialPopupURL";
  77. -constexpr char kLineNumber[] = "lineNumber";
  78. constexpr char kNextURL[] = "nextResponseURL";
  79. -constexpr char kOpeneeURL[] = "openeeURL";
  80. -constexpr char kOpenerURL[] = "openerURL";
  81. -constexpr char kOtherDocumentURL[] = "otherDocumentURL";
  82. constexpr char kPreviousURL[] = "previousResponseURL";
  83. -constexpr char kProperty[] = "property";
  84. constexpr char kReferrer[] = "referrer";
  85. -constexpr char kSourceFile[] = "sourceFile";
  86. constexpr char kType[] = "type";
  87. // Report attribute values:
  88. @@ -44,6 +36,7 @@ constexpr char kDispositionReporting[] = "reporting";
  89. constexpr char kTypeFromResponse[] = "navigation-from-response";
  90. constexpr char kTypeToResponse[] = "navigation-to-response";
  91. +#if BUILDFLAG(ENABLE_REPORTING)
  92. std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
  93. switch (coop_value) {
  94. case network::mojom::CrossOriginOpenerPolicyValue::kUnsafeNone:
  95. @@ -59,6 +52,7 @@ std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
  96. return "same-origin-allow-popups-plus-coep";
  97. }
  98. }
  99. +#endif
  100. FrameTreeNode* TopLevelOpener(FrameTreeNode* frame) {
  101. FrameTreeNode* opener = frame->original_opener();
  102. @@ -229,6 +223,7 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
  103. network::mojom::SourceLocationPtr source_location,
  104. const std::string& reported_window_url,
  105. const std::string& initial_popup_url) const {
  106. +#if BUILDFLAG(ENABLE_REPORTING)
  107. // Cross-Origin-Opener-Policy-Report-Only is not required to provide
  108. // endpoints.
  109. if (!coop_.report_only_reporting_endpoint)
  110. @@ -277,12 +272,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
  111. storage_partition_->GetNetworkContext()->QueueReport(
  112. "coop", endpoint, context_url_, reporting_source_, network_isolation_key_,
  113. absl::nullopt, std::move(body));
  114. +#endif
  115. }
  116. void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
  117. base::DictionaryValue body,
  118. const std::string& endpoint,
  119. bool is_report_only) {
  120. +#if BUILDFLAG(ENABLE_REPORTING)
  121. body.SetString(kDisposition,
  122. is_report_only ? kDispositionReporting : kDispositionEnforce);
  123. body.SetString(
  124. @@ -291,6 +288,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
  125. storage_partition_->GetNetworkContext()->QueueReport(
  126. "coop", endpoint, context_url_, reporting_source_, network_isolation_key_,
  127. /*user_agent=*/absl::nullopt, std::move(body));
  128. +#endif
  129. }
  130. } // namespace content
  131. diff --git a/content/browser/net/reporting_service_proxy.cc b/content/browser/net/reporting_service_proxy.cc
  132. --- a/content/browser/net/reporting_service_proxy.cc
  133. +++ b/content/browser/net/reporting_service_proxy.cc
  134. @@ -11,6 +11,7 @@
  135. #include "base/memory/ref_counted.h"
  136. #include "base/unguessable_token.h"
  137. #include "base/values.h"
  138. +#include "net/base/features.h"
  139. #include "content/browser/service_worker/service_worker_host.h"
  140. #include "content/browser/worker_host/dedicated_worker_host.h"
  141. #include "content/browser/worker_host/shared_worker_host.h"
  142. @@ -173,6 +174,7 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
  143. const std::string& group,
  144. const std::string& type,
  145. std::unique_ptr<base::Value> body) {
  146. +#if BUILDFLAG(ENABLE_REPORTING)
  147. auto* rph = RenderProcessHost::FromID(render_process_id_);
  148. if (!rph)
  149. return;
  150. @@ -180,6 +182,7 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
  151. type, group, url, reporting_source_, network_isolation_key_,
  152. /*user_agent=*/absl::nullopt,
  153. base::Value::FromUniquePtrValue(std::move(body)));
  154. +#endif
  155. }
  156. const int render_process_id_;
  157. diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
  158. --- a/content/browser/renderer_host/render_frame_host_impl.cc
  159. +++ b/content/browser/renderer_host/render_frame_host_impl.cc
  160. @@ -11437,6 +11437,7 @@ void RenderFrameHostImpl::OnSameDocumentCommitProcessed(
  161. void RenderFrameHostImpl::MaybeGenerateCrashReport(
  162. base::TerminationStatus status,
  163. int exit_code) {
  164. +#if BUILDFLAG(ENABLE_REPORTING)
  165. if (!last_committed_url_.SchemeIsHTTPOrHTTPS())
  166. return;
  167. @@ -11486,6 +11487,7 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
  168. /*type=*/"crash", /*group=*/"default", last_committed_url_,
  169. GetReportingSource(), isolation_info_.network_isolation_key(),
  170. absl::nullopt /* user_agent */, std::move(body));
  171. +#endif
  172. }
  173. void RenderFrameHostImpl::SendCommitNavigation(
  174. diff --git a/content/browser/web_package/signed_exchange_reporter.cc b/content/browser/web_package/signed_exchange_reporter.cc
  175. --- a/content/browser/web_package/signed_exchange_reporter.cc
  176. +++ b/content/browser/web_package/signed_exchange_reporter.cc
  177. @@ -127,6 +127,7 @@ bool ShouldDowngradeReport(const char* result_string,
  178. void ReportResult(int frame_tree_node_id,
  179. network::mojom::SignedExchangeReportPtr report,
  180. const net::NetworkIsolationKey& network_isolation_key) {
  181. +#if BUILDFLAG(ENABLE_REPORTING)
  182. FrameTreeNode* frame_tree_node =
  183. FrameTreeNode::GloballyFindByID(frame_tree_node_id);
  184. if (!frame_tree_node)
  185. @@ -141,6 +142,7 @@ void ReportResult(int frame_tree_node_id,
  186. DCHECK(partition);
  187. partition->GetNetworkContext()->QueueSignedExchangeReport(
  188. std::move(report), network_isolation_key);
  189. +#endif
  190. }
  191. } // namespace
  192. diff --git a/content/public/common/content_switch_dependent_feature_overrides.cc b/content/public/common/content_switch_dependent_feature_overrides.cc
  193. --- a/content/public/common/content_switch_dependent_feature_overrides.cc
  194. +++ b/content/public/common/content_switch_dependent_feature_overrides.cc
  195. @@ -7,6 +7,7 @@
  196. #include "content/public/common/content_features.h"
  197. #include "content/public/common/content_switches.h"
  198. #include "net/base/features.h"
  199. +#include "net/net_buildflags.h"
  200. #include "services/network/public/cpp/features.h"
  201. #include "services/network/public/cpp/network_switches.h"
  202. #include "third_party/blink/public/common/features.h"
  203. diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
  204. --- a/net/reporting/reporting_service.cc
  205. +++ b/net/reporting/reporting_service.cc
  206. @@ -212,6 +212,12 @@ class ReportingServiceImpl : public ReportingService {
  207. std::unique_ptr<const base::Value> body,
  208. int depth,
  209. base::TimeTicks queued_ticks) {
  210. +#if BUILDFLAG(ENABLE_REPORTING)
  211. + if ((true))
  212. + return;
  213. +#else
  214. +#error Attempting to build with enable_reporting
  215. +#endif
  216. DCHECK(initialized_);
  217. context_->cache()->AddReport(
  218. reporting_source, network_isolation_key, sanitized_url, user_agent,
  219. diff --git a/services/network/network_context.h b/services/network/network_context.h
  220. --- a/services/network/network_context.h
  221. +++ b/services/network/network_context.h
  222. @@ -459,10 +459,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
  223. const absl::optional<base::UnguessableToken>& reporting_source,
  224. const net::NetworkIsolationKey& network_isolation_key,
  225. const absl::optional<std::string>& user_agent,
  226. - base::Value body) override;
  227. + base::Value body);
  228. void QueueSignedExchangeReport(
  229. mojom::SignedExchangeReportPtr report,
  230. - const net::NetworkIsolationKey& network_isolation_key) override;
  231. + const net::NetworkIsolationKey& network_isolation_key);
  232. void AddDomainReliabilityContextForTesting(
  233. const GURL& origin,
  234. const GURL& upload_url,
  235. diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
  236. --- a/services/network/public/mojom/BUILD.gn
  237. +++ b/services/network/public/mojom/BUILD.gn
  238. @@ -963,7 +963,6 @@ mojom("mojom") {
  239. export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
  240. export_header_blink = "third_party/blink/public/platform/web_common.h"
  241. if (enable_reporting) {
  242. - enabled_features += [ "enable_reporting" ]
  243. }
  244. }
  245. diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
  246. --- a/services/network/public/mojom/network_context.mojom
  247. +++ b/services/network/public/mojom/network_context.mojom
  248. @@ -1043,6 +1043,7 @@ interface NetworkContext {
  249. // provided |network_isolation_key|.
  250. //
  251. // Spec: https://w3c.github.io/reporting/#concept-reports
  252. + [EnableIf=enable_reporting]
  253. QueueReport(string type,
  254. string group,
  255. url.mojom.Url url,
  256. @@ -1056,6 +1057,7 @@ interface NetworkContext {
  257. // Note that this queued report will never be delivered if no reporting
  258. // endpoint matching is registered for with the provided
  259. // |network_isolation_key|.
  260. + [EnableIf=enable_reporting]
  261. QueueSignedExchangeReport(SignedExchangeReport report,
  262. NetworkIsolationKey network_isolation_key);
  263. diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
  264. --- a/third_party/blink/renderer/core/frame/local_frame.cc
  265. +++ b/third_party/blink/renderer/core/frame/local_frame.cc
  266. @@ -40,6 +40,7 @@
  267. #include "build/build_config.h"
  268. #include "mojo/public/cpp/bindings/self_owned_receiver.h"
  269. #include "mojo/public/cpp/system/message_pipe.h"
  270. +#include "net/net_buildflags.h"
  271. #include "services/data_decoder/public/mojom/resource_snapshot_for_web_bundle.mojom-blink.h"
  272. #include "services/network/public/cpp/features.h"
  273. #include "services/network/public/mojom/content_security_policy.mojom-blink.h"
  274. @@ -2334,9 +2335,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
  275. return base::UnguessableToken::Null();
  276. }
  277. +#if BUILDFLAG(ENABLE_REPORTING)
  278. mojom::blink::ReportingServiceProxy* LocalFrame::GetReportingService() {
  279. return mojo_handler_->ReportingService();
  280. }
  281. +#endif
  282. // static
  283. void LocalFrame::NotifyUserActivation(
  284. diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
  285. --- a/third_party/blink/renderer/core/frame/local_frame.h
  286. +++ b/third_party/blink/renderer/core/frame/local_frame.h
  287. @@ -35,9 +35,9 @@
  288. #include "base/time/default_tick_clock.h"
  289. #include "base/time/time.h"
  290. #include "base/unguessable_token.h"
  291. -#include "build/build_config.h"
  292. #include "mojo/public/cpp/bindings/pending_associated_receiver.h"
  293. #include "mojo/public/cpp/bindings/pending_receiver.h"
  294. +#include "net/net_buildflags.h"
  295. #include "services/device/public/mojom/device_posture_provider.mojom-blink-forward.h"
  296. #include "services/network/public/mojom/fetch_api.mojom-blink-forward.h"
  297. #include "third_party/blink/public/common/frame/frame_ad_evidence.h"
  298. @@ -561,9 +561,9 @@ class CORE_EXPORT LocalFrame final
  299. }
  300. SmoothScrollSequencer& GetSmoothScrollSequencer();
  301. -
  302. +#if BUILDFLAG(ENABLE_REPORTING)
  303. mojom::blink::ReportingServiceProxy* GetReportingService();
  304. -
  305. +#endif
  306. // Returns the frame host ptr. The interface returned is backed by an
  307. // associated interface with the legacy Chrome IPC channel.
  308. mojom::blink::LocalFrameHost& GetLocalFrameHostRemote() const;
  309. diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_party/blink/renderer/core/frame/reporting_context.cc
  310. --- a/third_party/blink/renderer/core/frame/reporting_context.cc
  311. +++ b/third_party/blink/renderer/core/frame/reporting_context.cc
  312. @@ -4,6 +4,7 @@
  313. #include "third_party/blink/renderer/core/frame/reporting_context.h"
  314. +#include "net/net_buildflags.h"
  315. #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
  316. #include "third_party/blink/public/platform/platform.h"
  317. #include "third_party/blink/public/platform/task_type.h"
  318. @@ -53,7 +54,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext";
  319. ReportingContext::ReportingContext(ExecutionContext& context)
  320. : Supplement<ExecutionContext>(context),
  321. execution_context_(context),
  322. +#if BUILDFLAG(ENABLE_REPORTING)
  323. reporting_service_(&context),
  324. +#endif
  325. receiver_(this, &context) {}
  326. // static
  327. @@ -117,7 +120,9 @@ void ReportingContext::Trace(Visitor* visitor) const {
  328. visitor->Trace(observers_);
  329. visitor->Trace(report_buffer_);
  330. visitor->Trace(execution_context_);
  331. +#if BUILDFLAG(ENABLE_REPORTING)
  332. visitor->Trace(reporting_service_);
  333. +#endif
  334. visitor->Trace(receiver_);
  335. Supplement<ExecutionContext>::Trace(visitor);
  336. }
  337. @@ -139,6 +144,7 @@ void ReportingContext::CountReport(Report* report) {
  338. UseCounter::Count(execution_context_, feature);
  339. }
  340. +#if BUILDFLAG(ENABLE_REPORTING)
  341. const HeapMojoRemote<mojom::blink::ReportingServiceProxy>&
  342. ReportingContext::GetReportingService() const {
  343. if (!reporting_service_.is_bound()) {
  344. @@ -148,6 +154,7 @@ ReportingContext::GetReportingService() const {
  345. }
  346. return reporting_service_;
  347. }
  348. +#endif
  349. void ReportingContext::NotifyInternal(Report* report) {
  350. // Buffer the report.
  351. @@ -170,6 +177,7 @@ void ReportingContext::NotifyInternal(Report* report) {
  352. void ReportingContext::SendToReportingAPI(Report* report,
  353. const String& endpoint) const {
  354. +#if BUILDFLAG(ENABLE_REPORTING)
  355. const String& type = report->type();
  356. if (!(type == ReportType::kCSPViolation || type == ReportType::kDeprecation ||
  357. type == ReportType::kPermissionsPolicyViolation ||
  358. @@ -227,6 +235,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
  359. url, endpoint, body->featureId(), body->disposition(), body->message(),
  360. body->sourceFile(), line_number, column_number);
  361. }
  362. +#endif
  363. }
  364. } // namespace blink
  365. diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_party/blink/renderer/core/frame/reporting_context.h
  366. --- a/third_party/blink/renderer/core/frame/reporting_context.h
  367. +++ b/third_party/blink/renderer/core/frame/reporting_context.h
  368. @@ -5,6 +5,7 @@
  369. #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_REPORTING_CONTEXT_H_
  370. #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_REPORTING_CONTEXT_H_
  371. +#include "net/net_buildflags.h"
  372. #include "third_party/blink/public/mojom/frame/reporting_observer.mojom-blink.h"
  373. #include "third_party/blink/public/mojom/reporting/reporting.mojom-blink.h"
  374. #include "third_party/blink/renderer/core/core_export.h"
  375. @@ -55,10 +56,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected<ReportingContext>,
  376. private:
  377. // Counts the use of a report type via UseCounter.
  378. void CountReport(Report*);
  379. -
  380. +#if BUILDFLAG(ENABLE_REPORTING)
  381. const HeapMojoRemote<mojom::blink::ReportingServiceProxy>&
  382. GetReportingService() const;
  383. -
  384. +#endif
  385. void NotifyInternal(Report* report);
  386. // Send |report| via the Reporting API to |endpoint|.
  387. void SendToReportingAPI(Report* report, const String& endpoint) const;
  388. @@ -69,8 +70,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected<ReportingContext>,
  389. // This is declared mutable so that the service endpoint can be cached by
  390. // const methods.
  391. +#if BUILDFLAG(ENABLE_REPORTING)
  392. mutable HeapMojoRemote<mojom::blink::ReportingServiceProxy>
  393. reporting_service_;
  394. +#endif
  395. HeapMojoReceiver<mojom::blink::ReportingObserver, ReportingContext> receiver_;
  396. };
  397. --
  398. 2.25.1