Expand NavigationDiscardReason and expose to PLMO

To help determine the reason a navigation gets abandoned, we now
save the NavigationDiscardReason that's passed in to functions that
can cancel navigations, and expand it to be more informative. This
value will also now be saved in PageLoadMetricsObserver's
FailedProvisionalLoadInfo, to later be passed in to observers.
Example usage: crrev.com/c/5631386.

Bug: 347706997
Change-Id: I7698ed8f5d8f7527ad5006b5ceec8f98d85696a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5631388
Commit-Queue: Rakina Zata Amni <[email protected]>
Reviewed-by: Alex Moshchuk <[email protected]>
Reviewed-by: Takashi Toyoshima <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1318957}
diff --git a/content/browser/renderer_host/frame_tree_node.h b/content/browser/renderer_host/frame_tree_node.h
index ba7e306..52a6dc7 100644
--- a/content/browser/renderer_host/frame_tree_node.h
+++ b/content/browser/renderer_host/frame_tree_node.h
@@ -19,13 +19,13 @@
 #include "base/observer_list.h"
 #include "base/task/cancelable_task_tracker.h"
 #include "base/time/time.h"
-#include "content/browser/renderer_host/navigation_discard_reason.h"
 #include "content/browser/renderer_host/navigator.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
 #include "content/browser/renderer_host/render_frame_host_manager.h"
 #include "content/browser/renderer_host/render_frame_host_owner.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/frame_type.h"
+#include "content/public/browser/navigation_discard_reason.h"
 #include "services/network/public/mojom/content_security_policy.mojom-forward.h"
 #include "services/network/public/mojom/referrer_policy.mojom-forward.h"
 #include "third_party/blink/public/common/frame/frame_owner_element_type.h"
@@ -349,7 +349,7 @@
 
   // Similar to `ResetNavigationRequest()`, but keeps the state created by the
   // NavigationRequest (e.g. speculative RenderFrameHost, loading state).
-  void ResetNavigationRequestButKeepState();
+  void ResetNavigationRequestButKeepState(NavigationDiscardReason reason);
 
   // The load progress for a RenderFrameHost in this node was updated to
   // |load_progress|. This will notify the FrameTree which will in turn notify
@@ -727,7 +727,7 @@
       const GURL& original_url,
       std::unique_ptr<CrossOriginEmbedderPolicyReporter> coep_reporter,
       int http_response_code) override;
-  void CancelNavigation() override;
+  void CancelNavigation(NavigationDiscardReason reason) override;
   bool Credentialless() const override;
 #if !BUILDFLAG(IS_ANDROID)
   void GetVirtualAuthenticatorManager(