| Index: content/public/test/browser_test_utils.cc | 
| diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc | 
| index 052ffca5772fabc52cc6e6cfd336c9c52f51db39..b9a3011b3e9321b4dd11c57cc67f7c085808a229 100644 | 
| --- a/content/public/test/browser_test_utils.cc | 
| +++ b/content/public/test/browser_test_utils.cc | 
| @@ -471,6 +471,18 @@ bool WaitForLoadStop(WebContents* web_contents) { | 
| return IsLastCommittedEntryOfPageType(web_contents, PAGE_TYPE_NORMAL); | 
| } | 
|  | 
| +void PrepContentsForBeforeUnloadTest(WebContents* web_contents) { | 
| +  for (auto* frame : web_contents->GetAllFrames()) { | 
| +    // JavaScript onbeforeunload dialogs are ignored unless the frame received a | 
| +    // user gesture. Make sure the frames have user gestures. | 
| +    frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); | 
| + | 
| +    // Disable the hang monitor, otherwise there will be a race between the | 
| +    // beforeunload dialog and the beforeunload hang timer. | 
| +    frame->DisableBeforeUnloadHangMonitorForTesting(); | 
| +  } | 
| +} | 
| + | 
| bool IsLastCommittedEntryOfPageType(WebContents* web_contents, | 
| content::PageType page_type) { | 
| NavigationEntry* last_entry = | 
|  |