@CalledByNative
  private void onPolicyCheckedBeforeSignIn(String managementDomain) {
    if (managementDomain == null) {
      Log.d(TAG, "Account doesn't have policy");
      doSignIn();
      return;
    }

    if (mSignInActivity.isDestroyed()) {
      // The activity is no longer running, cancel sign in.
      cancelSignIn();
      return;
    }

    if (mPassive) {
      // If this is a passive interaction (e.g. auto signin) then don't show the confirmation
      // dialog.
      nativeFetchPolicyBeforeSignIn(mNativeSigninManagerAndroid);
      return;
    }

    Log.d(TAG, "Account has policy management");
    AlertDialog.Builder builder = new AlertDialog.Builder(mSignInActivity);
    builder.setTitle(R.string.policy_dialog_title);
    builder.setMessage(
        mContext.getResources().getString(R.string.policy_dialog_message, managementDomain));
    builder.setPositiveButton(
        R.string.policy_dialog_proceed,
        new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int id) {
            Log.d(TAG, "Accepted policy management, proceeding with sign-in");
            // This will call back to onPolicyFetchedBeforeSignIn.
            nativeFetchPolicyBeforeSignIn(mNativeSigninManagerAndroid);
            mPolicyConfirmationDialog = null;
          }
        });
    builder.setNegativeButton(
        R.string.policy_dialog_cancel,
        new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int id) {
            Log.d(TAG, "Cancelled sign-in");
            cancelSignIn();
            mPolicyConfirmationDialog = null;
          }
        });
    builder.setOnDismissListener(
        new DialogInterface.OnDismissListener() {
          @Override
          public void onDismiss(DialogInterface dialog) {
            if (mPolicyConfirmationDialog != null) {
              Log.d(TAG, "Policy dialog dismissed, cancelling sign-in.");
              cancelSignIn();
              mPolicyConfirmationDialog = null;
            }
          }
        });
    mPolicyConfirmationDialog = builder.create();
    mPolicyConfirmationDialog.show();
  }