diff options
author | aruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-23 22:02:21 +0000 |
---|---|---|
committer | aruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-23 22:02:21 +0000 |
commit | bad74669cd0485f8b7503cabdb5001ede7f113dd (patch) | |
tree | 920ff61ab6ca5e8ac949a830ccad544492fac0f9 | |
parent | ac0620bf7cdb1c396680bb98b40b78437ae885bd (diff) | |
download | chromium_src-bad74669cd0485f8b7503cabdb5001ede7f113dd.zip chromium_src-bad74669cd0485f8b7503cabdb5001ede7f113dd.tar.gz chromium_src-bad74669cd0485f8b7503cabdb5001ede7f113dd.tar.bz2 |
[Android] Use correct profile for the account management screen.
We don't need to use GetLastUsedProfile() here as we have
the web contents.
BUG=316637
Review URL: https://codereview.chromium.org/131103014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246696 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 20 insertions, 8 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementScreenHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementScreenHelper.java index 659eb78..044cc22 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementScreenHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementScreenHelper.java @@ -8,6 +8,7 @@ import android.content.Context; import org.chromium.base.CalledByNative; import org.chromium.base.ThreadUtils; +import org.chromium.chrome.browser.profiles.Profile; /** * Stub entry points and implementation interface for the account management screen. @@ -22,8 +23,9 @@ public class AccountManagementScreenHelper { /** * Opens the account management UI screen. * @param applicationContext The application context. + * @param profile The user profile. */ - void openAccountManagementScreen(Context applicationContext); + void openAccountManagementScreen(Context applicationContext, Profile profile); } /** @@ -36,10 +38,10 @@ public class AccountManagementScreenHelper { } @CalledByNative - private static void openAccountManagementScreen(Context applicationContext) { + private static void openAccountManagementScreen(Context applicationContext, Profile profile) { ThreadUtils.assertOnUiThread(); if (sManager == null) return; - sManager.openAccountManagementScreen(applicationContext); + sManager.openAccountManagementScreen(applicationContext, profile); } } diff --git a/chrome/browser/android/signin/account_management_screen_helper.cc b/chrome/browser/android/signin/account_management_screen_helper.cc index 6f15a36..5d62a6a 100644 --- a/chrome/browser/android/signin/account_management_screen_helper.cc +++ b/chrome/browser/android/signin/account_management_screen_helper.cc @@ -6,13 +6,20 @@ #include "base/android/jni_android.h" #include "base/android/jni_string.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_android.h" #include "jni/AccountManagementScreenHelper_jni.h" // static -void AccountManagementScreenHelper::OpenAccountManagementScreen() { +void AccountManagementScreenHelper::OpenAccountManagementScreen( + Profile* profile) { + DCHECK(profile); + DCHECK(ProfileAndroid::FromProfile(profile)); + Java_AccountManagementScreenHelper_openAccountManagementScreen( base::android::AttachCurrentThread(), - base::android::GetApplicationContext()); + base::android::GetApplicationContext(), + ProfileAndroid::FromProfile(profile)->GetJavaObject().obj()); } // static diff --git a/chrome/browser/android/signin/account_management_screen_helper.h b/chrome/browser/android/signin/account_management_screen_helper.h index 4312181..8640308 100644 --- a/chrome/browser/android/signin/account_management_screen_helper.h +++ b/chrome/browser/android/signin/account_management_screen_helper.h @@ -9,6 +9,8 @@ #include "base/basictypes.h" +class Profile; + // The glue for Java-side implementation of AccountManagementScreenHelper. class AccountManagementScreenHelper { public: @@ -16,7 +18,7 @@ class AccountManagementScreenHelper { static bool Register(JNIEnv* env); // Opens the account management screen. - static void OpenAccountManagementScreen(); + static void OpenAccountManagementScreen(Profile* profile); private: DISALLOW_COPY_AND_ASSIGN(AccountManagementScreenHelper); diff --git a/chrome/browser/signin/signin_header_helper.cc b/chrome/browser/signin/signin_header_helper.cc index 5469699..ca7ef18 100644 --- a/chrome/browser/signin/signin_header_helper.cc +++ b/chrome/browser/signin/signin_header_helper.cc @@ -30,18 +30,19 @@ const char kGaiaAuthExtensionID[] = "mfffpogegjflfpflabcdkioaeobkgjik"; void ShowAvatarBubbleUIThread(int child_id, int route_id) { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); -#if !defined(OS_ANDROID) content::WebContents* web_contents = tab_util::GetWebContentsByID(child_id, route_id); if (!web_contents) return; +#if !defined(OS_ANDROID) Browser* browser = chrome::FindBrowserWithWebContents(web_contents); if (browser) browser->window()->ShowAvatarBubbleFromAvatarButton(); // TODO(guohui): need to handle the case when avatar button is not available. #else // defined(OS_ANDROID) - AccountManagementScreenHelper::OpenAccountManagementScreen(); + AccountManagementScreenHelper::OpenAccountManagementScreen( + Profile::FromBrowserContext(web_contents->GetBrowserContext())); #endif // OS_ANDROID } |