Reland "DevTools: change Target.disposeBrowserContext to force-close WebContents""

This CL re-lands r555640 that was reverted since it was breaking
headless clients. The breakage is addressed separately:

https://chromium-review.googlesource.com/c/chromium/src/+/1048725

TBR=sky, dgozman, alexclarke, caseq

Bug: 836272
Change-Id: I9bf7e13f07ebdb7ffe1cfa52e1e000a336f43541
Reviewed-on: https://chromium-review.googlesource.com/1048838
Commit-Queue: Andrey Lushnikov <[email protected]>
Reviewed-by: Andrey Lushnikov <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#556881}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 3a17a2f6e5152bb6a717a9b243dba1769ae66dfe
diff --git a/front_end/Tests.js b/front_end/Tests.js
index add9616..572ba99 100644
--- a/front_end/Tests.js
+++ b/front_end/Tests.js
@@ -1125,13 +1125,12 @@
     this.assertEquals(await evalCode(target2, 'localStorage.getItem("page1")'), null);
     this.assertEquals(await evalCode(target2, 'localStorage.getItem("page2")'), 'page2');
 
-    this.assertEquals(await disposeBrowserContext(browserContextIds[0]), false);
-    this.assertEquals(await disposeBrowserContext(browserContextIds[1]), false);
-
-    await closeTarget(target1);
-    await closeTarget(target2);
-    this.assertEquals(await disposeBrowserContext(browserContextIds[0]), true);
-    this.assertEquals(await disposeBrowserContext(browserContextIds[1]), true);
+    const removedTargets = [];
+    SDK.targetManager.observeTargets({targetAdded: () => {}, targetRemoved: target => removedTargets.push(target)});
+    await Promise.all([disposeBrowserContext(browserContextIds[0]), disposeBrowserContext(browserContextIds[1])]);
+    this.assertEquals(removedTargets.length, 2);
+    this.assertEquals(removedTargets.indexOf(target1) !== -1, true);
+    this.assertEquals(removedTargets.indexOf(target2) !== -1, true);
 
     this.releaseControl();
 
@@ -1154,15 +1153,9 @@
       return target;
     }
 
-    async function closeTarget(target) {
-      const targetAgent = SDK.targetManager.mainTarget().targetAgent();
-      await targetAgent.invoke_closeTarget({targetId: target.id()});
-    }
-
     async function disposeBrowserContext(browserContextId) {
       const targetAgent = SDK.targetManager.mainTarget().targetAgent();
-      const {success} = await targetAgent.invoke_disposeBrowserContext({browserContextId});
-      return success;
+      await targetAgent.invoke_disposeBrowserContext({browserContextId});
     }
 
     async function evalCode(target, code) {