diff options
| author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-09-10 16:57:07 +0200 | 
|---|---|---|
| committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-09-10 16:57:07 +0200 | 
| commit | cb9a66e2463768342415e36648a57f27ff797f99 (patch) | |
| tree | 518b9174a8af1f1f0643968e92e97ee421f4a020 | |
| parent | 9ac150eae020f57b0e776ec2622ddf444e4e2e4e (diff) | |
| download | open-keychain-cb9a66e2463768342415e36648a57f27ff797f99.tar.gz open-keychain-cb9a66e2463768342415e36648a57f27ff797f99.tar.bz2 open-keychain-cb9a66e2463768342415e36648a57f27ff797f99.zip  | |
linked: improve fragment robustness, save cookies through destroyed fragment
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateGithubFragment.java | 54 | 
1 files changed, 40 insertions, 14 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateGithubFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateGithubFragment.java index c2898bf4a..ccb20a764 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateGithubFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateGithubFragment.java @@ -85,6 +85,7 @@ import org.sufficientlysecure.keychain.util.Log;  public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKeyringParcel,EditKeyResult> { +    public static final String ARG_GITHUB_COOKIE = "github_cookie";      private Button mRetryButton;      enum State { @@ -229,18 +230,18 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe              protected void onPostExecute(JSONObject result) {                  super.onPostExecute(result); +                Activity activity = getActivity(); +                if (activity == null) { +                    // we couldn't show an error anyways +                    return; +                } +                  Log.d(Constants.TAG, "response: " + result);                  if (result == null || result.optString("access_token", null) == null) {                      setState(State.AUTH_ERROR);                      showRetryForOAuth(); -                    Activity activity = getActivity(); -                    if (activity == null) { -                        // we couldn't show an error anyways -                        return; -                    } -                      if (result != null) {                          Notify.create(activity, R.string.linked_error_auth_failed, Style.ERROR).show();                          return; @@ -317,16 +318,16 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe                  Log.d(Constants.TAG, "response: " + result); +                Activity activity = getActivity(); +                if (activity == null) { +                    // we couldn't show an error anyways +                    return; +                } +                  if (result == null) {                      setState(State.POST_ERROR);                      showRetryForOAuth(); -                    Activity activity = getActivity(); -                    if (activity == null) { -                        // we couldn't show an error anyways -                        return; -                    } -                      if (mException instanceof SocketTimeoutException) {                          Notify.create(activity, R.string.linked_error_timeout, Style.ERROR).show();                      } else if (mException instanceof HttpResultException) { @@ -458,9 +459,29 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe      }      @Override -    public void onStop() { -        super.onStop(); +    public void onSaveInstanceState(Bundle outState) { +        super.onSaveInstanceState(outState); + +        // cookies are automatically saved, we don't want that +        CookieManager cookieManager = CookieManager.getInstance(); +        String cookie = cookieManager.getCookie("https://github.com/"); +        outState.putString(ARG_GITHUB_COOKIE, cookie); +    } + +    @Override +    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { +        super.onViewCreated(view, savedInstanceState); +        if (savedInstanceState != null) { +            String cookie = savedInstanceState.getString(ARG_GITHUB_COOKIE); +            CookieManager cookieManager = CookieManager.getInstance(); +            cookieManager.setCookie("https://github.com/", cookie); +        } +    } + +    @Override +    public void onDestroyView() { +        super.onDestroyView();          try {              // cookies are automatically saved, we don't want that              CookieManager cookieManager = CookieManager.getInstance(); @@ -469,6 +490,11 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe          } catch (Exception e) {              // no biggie if this fails          } +    } + +    @Override +    public void onStop() { +        super.onStop();          if (mFinishOnStop) {              Activity activity = getActivity();  | 
