constructor(app) {
    super();
    this.user_ = {};
    this['app'] = app;
    this['currentUser'] = null;
    this['emulatorConfig'] = null;
    var asyncMethods = {};
    // Populate auth async methods.
    for (var key in FakeAuthClient.AuthAsyncMethod) {
      asyncMethods[key] = {
        'context': this,
        'name': FakeAuthClient.AuthAsyncMethod[key]
      };
    }
    // Populate user async methods.
    for (var key in FakeAuthClient.UserAsyncMethod) {
      asyncMethods[key] = {
        'context': this.user_,
        'name': FakeAuthClient.UserAsyncMethod[key]
      };
    }
    // Pass async methods enum to base class.
    this.asyncMethods = asyncMethods;
    this.authObservers_ = [];
    this.idTokenObservers_ = [];
    /** @private {!Array<string>} The list of frameworks logged. */
    this.frameworks_ = [];
    var self = this;
    this['INTERNAL'] = {
      logFramework: function(framework) {
        self.frameworks_.push(framework);
      }
    };
  }
@param {!firebaseui.auth.testing.FakeAppClient} app The app instance
    associated with the fake Auth client.