testHandleRemoteEvent() {
    mockHTML5LocalStorageCtor().$returns(mockHtml5LocalStorage);
    const foo = mockControl.createFunctionMock();
    foo('x', 'y').$times(2);

    const context = {'foo': 'bar'};
    const bar = recordFunction();

    mockControl.$replayAll();
    broadcastPubSub = new BroadcastPubSub();
    log.setLevel(broadcastPubSub.logger_, Level.OFF);
    const eventData = {
      'args': ['someTopic', 'x', 'y'],
      'timestamp': Date.now()
    };

    broadcastPubSub.subscribe('someTopic', foo);
    broadcastPubSub.subscribe('someTopic', bar, context);

    remoteStorageEvent(eventData);
    mockClock.tick();

    assertEquals(1, bar.getCallCount());
    assertEquals(context, bar.getLastCall().getThis());
    assertArrayEquals(['x', 'y'], bar.getLastCall().getArguments());

    broadcastPubSub.unsubscribe('someTopic', foo);
    eventData['timestamp'] = Date.now();
    remoteStorageEvent(eventData);
    mockClock.tick();

    assertEquals(2, bar.getCallCount());
    assertEquals(context, bar.getLastCall().getThis());
    assertArrayEquals(['x', 'y'], bar.getLastCall().getArguments());

    broadcastPubSub.subscribe('someTopic', foo);
    broadcastPubSub.unsubscribe('someTopic', bar, context);
    eventData['timestamp'] = Date.now();
    remoteStorageEvent(eventData);
    mockClock.tick();

    assertEquals(2, bar.getCallCount());
    broadcastPubSub.dispose();
    mockControl.$verifyAll();
  }
Tests related to remote events that an instance of BroadcastChannel
should handle.
@suppress {checkTypes,visibility} suppression added to enable type checking