Clean up picture-in-picture tests (#12115)

diff --git a/picture-in-picture/disable-picture-in-picture.html b/picture-in-picture/disable-picture-in-picture.html
index 1a59b7a..fdd8e97 100644
--- a/picture-in-picture/disable-picture-in-picture.html
+++ b/picture-in-picture/disable-picture-in-picture.html
@@ -33,7 +33,7 @@
 
 promise_test(async t => {
   const video = await loadVideo();
-  return callWithTrustedClick(async () => {
+  return test_driver.bless('request picture in picture', async () => {
     const promise = video.requestPictureInPicture();
     video.disablePictureInPicture = true;
     await promise_rejects(t, 'InvalidStateError', promise);
diff --git a/picture-in-picture/idlharness.window.js b/picture-in-picture/idlharness.window.js
index 6ada0fe..ac4c0bf 100644
--- a/picture-in-picture/idlharness.window.js
+++ b/picture-in-picture/idlharness.window.js
@@ -8,24 +8,19 @@
 
 // https://wicg.github.io/picture-in-picture/
 
-promise_test(async () => {
-  try {
+idl_test(
+  ['picture-in-picture'],
+  ['html', 'dom'],
+  async idl_array => {
+    idl_array.add_objects({
+      Document: ['document'],
+      DocumentOrShadowRoot: ['document'],
+      HTMLVideoElement: ['video'],
+      PictureInPictureWindow: ['pipw'],
+    });
+
     self.video = await loadVideo();
     self.pipw = await requestPictureInPictureWithTrustedClick(video);
-  } catch (e) {
-    // Will be surfaced when video/pipw are undefined below.
-  }
-
-  idl_test(
-    ['picture-in-picture'],
-    ['html', 'dom'],
-    idl_array => {
-      idl_array.add_objects({
-        Document: ['document'],
-        DocumentOrShadowRoot: ['document'],
-        HTMLVideoElement: ['video'],
-        PictureInPictureWindow: ['pipw'],
-      });
-    },
-    'picture-in-picture interfaces.');
-})
+  },
+  'picture-in-picture interfaces.'
+);
diff --git a/picture-in-picture/request-picture-in-picture-twice.html b/picture-in-picture/request-picture-in-picture-twice.html
index 7f1f81f..556cf83 100644
--- a/picture-in-picture/request-picture-in-picture-twice.html
+++ b/picture-in-picture/request-picture-in-picture-twice.html
@@ -10,13 +10,12 @@
 promise_test(async t => {
   const video1 = await loadVideo();
   const video2 = await loadVideo();
-  return callWithTrustedClick(() => {
-    const first = video1.requestPictureInPicture();
-    const second = video2.requestPictureInPicture();
-    return Promise.all([
-      first,
-      promise_rejects(t, 'NotAllowedError', second)
-    ]);
-  });
+  return test_driver.bless(
+    'request picture in picture',
+    async () => {
+      await video1.requestPictureInPicture();
+      promise_rejects(t, 'NotAllowedError', video2.requestPictureInPicture());
+    }
+  );
 }, 'request Picture-in-Picture consumes user gesture');
 </script>
diff --git a/picture-in-picture/resources/picture-in-picture-helpers.js b/picture-in-picture/resources/picture-in-picture-helpers.js
index 4514edf..86b9f29 100644
--- a/picture-in-picture/resources/picture-in-picture-helpers.js
+++ b/picture-in-picture/resources/picture-in-picture-helpers.js
@@ -4,38 +4,19 @@
   }
 }
 
-function callWithTrustedClick(callback) {
-  return new Promise((resolve, reject) => {
-    let button = document.createElement('button');
-    button.textContent = 'click to continue test';
-    button.style.display = 'block';
-    button.style.fontSize = '20px';
-    button.style.padding = '10px';
-    button.onclick = () => {
-      document.body.removeChild(button);
-      resolve(callback());
-    };
-    document.body.appendChild(button);
-    test_driver.click(button).catch(_ => reject('Click failed'));
-  });
-}
-
 function loadVideo(activeDocument, sourceUrl) {
   return new Promise((resolve, reject) => {
     const document = activeDocument || window.document;
     const video = document.createElement('video');
     video.src = sourceUrl || '/media/movie_5.ogv';
-    video.onloadedmetadata = () => {
-      resolve(video);
-    };
-    video.onerror = error => {
-      reject(error);
-    };
+    video.onloadedmetadata = () => { resolve(video); };
+    video.onerror = error => { reject(error); };
   });
 }
 
 // Calls requestPictureInPicture() in a context that's 'allowed to request PiP'.
 function requestPictureInPictureWithTrustedClick(videoElement) {
-  return callWithTrustedClick(
-      () => videoElement.requestPictureInPicture());
+  return test_driver.bless(
+    'request picture in picture',
+    () => videoElement.requestPictureInPicture());
 }