DevTools: implement Target.getBrowserContexts() method

This patch implements Target.getBrowserContexts() method that
returns all the contexts created with Target.createBrowserContext()
calls.

R=dgozman, alexclarke, caseq

BUG: 836272
Change-Id: Ib39f947c5591ddb2d6158d8417bc1c8b82561d15
Reviewed-on: https://chromium-review.googlesource.com/1049266
Commit-Queue: Andrey Lushnikov <[email protected]>
Reviewed-by: Dmitry Gozman <[email protected]>
Reviewed-by: Alex Clarke <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#556977}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 7c173628db963ab1e459e5b857273fe41f2a81c2
diff --git a/front_end/Tests.js b/front_end/Tests.js
index 572ba99..3fbff04 100644
--- a/front_end/Tests.js
+++ b/front_end/Tests.js
@@ -1113,10 +1113,16 @@
   TestSuite.prototype.testCreateBrowserContext = async function(url) {
     this.takeControl();
     const browserContextIds = [];
+    const targetAgent = SDK.targetManager.mainTarget().targetAgent();
 
     const target1 = await createIsolatedTarget(url);
     const target2 = await createIsolatedTarget(url);
 
+    const response = await targetAgent.invoke_getBrowserContexts();
+    this.assertEquals(response.browserContextIds.length, 2);
+    this.assertTrue(response.browserContextIds.includes(browserContextIds[0]));
+    this.assertTrue(response.browserContextIds.includes(browserContextIds[1]));
+
     await evalCode(target1, 'localStorage.setItem("page1", "page1")');
     await evalCode(target2, 'localStorage.setItem("page2", "page2")');
 
@@ -1139,7 +1145,6 @@
      * @return {!Promise<!SDK.Target>}
      */
     async function createIsolatedTarget(url) {
-      const targetAgent = SDK.targetManager.mainTarget().targetAgent();
       const {browserContextId} = await targetAgent.invoke_createBrowserContext();
       browserContextIds.push(browserContextId);