facebook-gamingservices/src/main/java/com/facebook/gamingservices/ContextCreateDialog.java [153:249]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  @Override
  protected void registerCallbackImpl(
      final CallbackManagerImpl callbackManager, final FacebookCallback callback) {
    mCallback = callback;
    final ResultProcessor resultProcessor =
        (callback == null)
            ? null
            : new ResultProcessor(callback) {
              @Override
              public void onSuccess(AppCall appCall, Bundle results) {
                if (results != null) {
                  if (results.getString("error_message") != null) {
                    callback.onError(new FacebookException(results.getString("error_message")));
                    return;
                  }
                  if (results.getString(SDKConstants.PARAM_CONTEXT_ID) != null) {
                    GamingContext.setCurrentGamingContext(
                        new GamingContext(results.getString(SDKConstants.PARAM_CONTEXT_ID)));
                    callback.onSuccess(
                        new Result(results.getString(SDKConstants.PARAM_CONTEXT_ID)));
                  } else if (results.getString(SDKConstants.PARAM_CONTEXT_CONTEXT_ID) != null) {
                    GamingContext.setCurrentGamingContext(
                        new GamingContext(
                            results.getString(SDKConstants.PARAM_CONTEXT_CONTEXT_ID)));
                    callback.onSuccess(
                        new Result(results.getString(SDKConstants.PARAM_CONTEXT_CONTEXT_ID)));
                  }
                  callback.onError(
                      new FacebookException(
                          results.getString("Invalid response received from server.")));
                } else {
                  onCancel(appCall);
                }
              }
            };

    callbackManager.registerCallback(
        getRequestCode(),
        new CallbackManagerImpl.Callback() {
          @Override
          public boolean onActivityResult(int resultCode, Intent data) {
            return ShareInternalUtility.handleActivityResult(
                getRequestCode(), resultCode, data, resultProcessor);
          }
        });
  }

  @Override
  protected List<ModeHandler> getOrderedModeHandlers() {
    ArrayList<ModeHandler> handlers = new ArrayList<>();
    handlers.add(new FacebookAppHandler());
    handlers.add(new WebHandler());

    return handlers;
  }

  @Override
  protected AppCall createBaseAppCall() {
    return new AppCall(getRequestCode());
  }

  /*
   * Describes the result of a Context Create Dialog.
   */
  public static final class Result {
    @Nullable String contextID;

    private Result(String contextID) {
      this.contextID = contextID;
    }

    private Result(GraphResponse response) {
      try {
        JSONObject data = response.getJSONObject();
        if (data == null) {
          this.contextID = null;
          return;
        }
        JSONObject nestedData = data.optJSONObject("data");
        this.contextID = nestedData != null ? nestedData.getString("id") : null;
      } catch (JSONException e) {
        this.contextID = null;
      }
    }

    /**
     * Returns the context ID.
     *
     * @return the context ID.
     */
    public @Nullable String getContextID() {
      return contextID;
    }
  }

  private class WebHandler extends ModeHandler {
    @Override
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



facebook-gamingservices/src/main/java/com/facebook/gamingservices/ContextSwitchDialog.java [160:256]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  @Override
  protected void registerCallbackImpl(
      final CallbackManagerImpl callbackManager, final FacebookCallback callback) {
    mCallback = callback;
    final ResultProcessor resultProcessor =
        (callback == null)
            ? null
            : new ResultProcessor(callback) {
              @Override
              public void onSuccess(AppCall appCall, Bundle results) {
                if (results != null) {
                  if (results.getString("error_message") != null) {
                    callback.onError(new FacebookException(results.getString("error_message")));
                    return;
                  }
                  if (results.getString(SDKConstants.PARAM_CONTEXT_ID) != null) {
                    GamingContext.setCurrentGamingContext(
                        new GamingContext(results.getString(SDKConstants.PARAM_CONTEXT_ID)));
                    callback.onSuccess(
                        new Result(results.getString(SDKConstants.PARAM_CONTEXT_ID)));
                  } else if (results.getString(SDKConstants.PARAM_CONTEXT_CONTEXT_ID) != null) {
                    GamingContext.setCurrentGamingContext(
                        new GamingContext(
                            results.getString(SDKConstants.PARAM_CONTEXT_CONTEXT_ID)));
                    callback.onSuccess(
                        new Result(results.getString(SDKConstants.PARAM_CONTEXT_CONTEXT_ID)));
                  }
                  callback.onError(
                      new FacebookException(
                          results.getString("Invalid response received from server.")));
                } else {
                  onCancel(appCall);
                }
              }
            };

    callbackManager.registerCallback(
        getRequestCode(),
        new CallbackManagerImpl.Callback() {
          @Override
          public boolean onActivityResult(int resultCode, Intent data) {
            return ShareInternalUtility.handleActivityResult(
                getRequestCode(), resultCode, data, resultProcessor);
          }
        });
  }

  @Override
  protected List<ModeHandler> getOrderedModeHandlers() {
    ArrayList<ModeHandler> handlers = new ArrayList<>();
    handlers.add(new FacebookAppHandler());
    handlers.add(new WebHandler());

    return handlers;
  }

  @Override
  protected AppCall createBaseAppCall() {
    return new AppCall(getRequestCode());
  }

  /*
   * Describes the result of a Context Switch Dialog.
   */
  public static final class Result {
    @Nullable String contextID;

    private Result(String contextID) {
      this.contextID = contextID;
    }

    private Result(GraphResponse response) {
      try {
        JSONObject data = response.getJSONObject();
        if (data == null) {
          this.contextID = null;
          return;
        }
        JSONObject nestedData = data.optJSONObject("data");
        this.contextID = nestedData != null ? nestedData.getString("id") : null;
      } catch (JSONException e) {
        this.contextID = null;
      }
    }

    /**
     * Returns the context ID.
     *
     * @return the context ID.
     */
    public @Nullable String getContextID() {
      return contextID;
    }
  }

  private class WebHandler extends ModeHandler {
    @Override
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



