function remoteStorageEvent(data) {
  if (!isIe8) {
    const event = new GoogTestingEvent('storage', window);
    /**
     * @suppress {strictMissingProperties,visibility} suppression added to
     * enable type checking
     */
    event.key = BroadcastPubSub.STORAGE_KEY_;
    /**
     * @suppress {strictMissingProperties} suppression added to enable type
     * checking
     */
    event.newValue = googJson.serialize(data);
    events.fireBrowserEvent(event);
  } else {
    /** @suppress {visibility} suppression added to enable type checking */
    const uniqueKey = BroadcastPubSub.IE8_EVENTS_KEY_PREFIX_ + '1234567890';
    let ie8Events = mockHtml5LocalStorage.get(uniqueKey);
    if (ie8Events != null) {
      ie8Events = JSON.parse(ie8Events);
      // Events should never overlap in IE8 mode.
      if (ie8Events.length > 0 &&
          ie8Events[ie8Events.length - 1]['timestamp'] >= data['timestamp']) {
        /**
         * @suppress {strictMissingProperties,visibility} suppression added to
         * enable type checking
         */
        data['timestamp'] = ie8Events[ie8Events.length - 1]['timestamp'] +
            BroadcastPubSub.IE8_TIMESTAMP_UNIQUE_OFFSET_MS_;
      }
    } else {
      ie8Events = [];
    }
    ie8Events.push(data);
    // This will cause an event.
    mockHtml5LocalStorage.set(uniqueKey, googJson.serialize(ie8Events));
  }
}
Sends a remote storage event with special handling for IE8. With IE8 an
event is pushed to the event queue stored in local storage as a result of
behaviour by the mockHtml5LocalStorage instanciated when using IE8 an event
is automatically generated in the local browser context. For other browsers
this simply creates a new browser event.
@param {{'args': !Array<string>, 'timestamp': number}} data Value stored in
    localStorage which generated the remote event.
@suppress {strictMissingProperties} suppression added to enable type checking