Skip to content
This repository has been archived by the owner on Apr 3, 2020. It is now read-only.

Commit

Permalink
Merge "Make resetting notification settings actually work on Android."
Browse files Browse the repository at this point in the history
The current code expect that DEFAULT is -1 instead of 0. Thus, the
permission is never actually reset and the NOTREACHED is hit on Debug
builds.

This CL tries to do the ContentSetting -> jint / jint -> ContentSetting
conversions as close to the JNI layer as possible to prevent further
confusions.

BUG=554838
[email protected]

Review URL: https://codereview.chromium.org/1439933002

Cr-Commit-Position: refs/heads/master@{#359763}
(cherry picked from commit c717aee)

Review URL: https://codereview.chromium.org/1460483004 .

Cr-Commit-Position: refs/branch-heads/2564@{#53}
Cr-Branched-From: 1283eca-refs/heads/master@{#359700}
  • Loading branch information
mounirlamouri committed Nov 19, 2015
1 parent 0322627 commit 1897e42
Show file tree
Hide file tree
Showing 10 changed files with 38 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i
}

protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetCameraSettingForOrigin(
origin, embedder, value, isIncognito);
origin, embedder, value.toInt(), isIncognito);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i
}

protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetCookieSettingForOrigin(
origin, embedder, value, isIncognito);
origin, embedder, value.toInt(), isIncognito);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i

@Override
protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetFullscreenSettingForOrigin(
origin, embedder, value, isIncognito);
origin, embedder, value.toInt(), isIncognito);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i

@Override
protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetGeolocationSettingForOrigin(
origin, embedder, value, isIncognito);
origin, embedder, value.toInt(), isIncognito);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i
}

protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetMicrophoneSettingForOrigin(
origin, embedder, value, isIncognito);
origin, embedder, value.toInt(), isIncognito);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i
}

protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetMidiSettingForOrigin(origin, embedder, value, isIncognito);
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetMidiSettingForOrigin(
origin, embedder, value.toInt(), isIncognito);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,12 @@ public ContentSetting getContentSetting() {
* Sets the native ContentSetting value for this origin.
*/
public void setContentSetting(ContentSetting value) {
setNativePreferenceValue(
mOrigin, getEmbedderSafe(), value.toInt(), mIsIncognito);
setNativePreferenceValue(mOrigin, getEmbedderSafe(), value, mIsIncognito);
}

protected abstract int getNativePreferenceValue(
String origin, String embedder, boolean isIncognito);

protected abstract void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito);
String origin, String embedder, ContentSetting value, boolean isIncognito);
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i

@Override
protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetProtectedMediaIdentifierSettingForOrigin(
origin, embedder, value, isIncognito);
origin, embedder, value.toInt(), isIncognito);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ protected int getNativePreferenceValue(String origin, String embedder, boolean i

@Override
protected void setNativePreferenceValue(
String origin, String embedder, int value, boolean isIncognito) {
String origin, String embedder, ContentSetting value, boolean isIncognito) {
WebsitePreferenceBridge.nativeSetPushNotificationSettingForOrigin(
origin, embedder, value, isIncognito);
origin, embedder, value.toInt(), isIncognito);
}
}
48 changes: 19 additions & 29 deletions chrome/browser/android/preferences/website_preference_bridge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,11 @@ static void GetOrigins(JNIEnv* env,
}
}

static jint GetSettingForOrigin(JNIEnv* env,
ContentSettingsType content_type,
jstring origin,
jstring embedder,
jboolean is_incognito) {
static ContentSetting GetSettingForOrigin(JNIEnv* env,
ContentSettingsType content_type,
jstring origin,
jstring embedder,
jboolean is_incognito) {
GURL url(ConvertJavaStringToUTF8(env, origin));
GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
ContentSetting setting =
Expand All @@ -156,19 +156,9 @@ static void SetSettingForOrigin(JNIEnv* env,
ContentSettingsType content_type,
jstring origin,
ContentSettingsPattern secondary_pattern,
jint value,
ContentSetting setting,
jboolean is_incognito) {
GURL url(ConvertJavaStringToUTF8(env, origin));
ContentSetting setting = CONTENT_SETTING_DEFAULT;
switch (value) {
case -1: break;
case 0: setting = CONTENT_SETTING_DEFAULT; break;
case 1: setting = CONTENT_SETTING_ALLOW; break;
case 2: setting = CONTENT_SETTING_BLOCK; break;
default:
// Note: CONTENT_SETTINGS_ASK is not and should not be supported.
NOTREACHED();
}
GetHostContentSettingsMap(is_incognito)
->SetContentSetting(ContentSettingsPattern::FromURLNoWildcard(url),
secondary_pattern, content_type, std::string(),
Expand Down Expand Up @@ -201,7 +191,7 @@ static void SetFullscreenSettingForOrigin(JNIEnv* env,
GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin,
ContentSettingsPattern::FromURLNoWildcard(embedder_url),
value, is_incognito);
(ContentSetting) value, is_incognito);
}

static void GetGeolocationOrigins(JNIEnv* env,
Expand Down Expand Up @@ -231,7 +221,7 @@ static void SetGeolocationSettingForOrigin(
GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin,
ContentSettingsPattern::FromURLNoWildcard(embedder_url),
value, is_incognito);
(ContentSetting) value, is_incognito);
}

static void GetMidiOrigins(JNIEnv* env,
Expand All @@ -258,7 +248,7 @@ static void SetMidiSettingForOrigin(JNIEnv* env,
GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin,
ContentSettingsPattern::FromURLNoWildcard(embedder_url),
value, is_incognito);
(ContentSetting) value, is_incognito);
}

static void GetProtectedMediaIdentifierOrigins(
Expand Down Expand Up @@ -291,7 +281,7 @@ static void SetProtectedMediaIdentifierSettingForOrigin(
SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
origin,
ContentSettingsPattern::FromURLNoWildcard(embedder_url),
value, is_incognito);
(ContentSetting) value, is_incognito);
}

static void GetPushNotificationOrigins(JNIEnv* env,
Expand Down Expand Up @@ -322,19 +312,17 @@ static void SetPushNotificationSettingForOrigin(
// permission types. See https://crbug.com/416894.
Profile* profile = GetActiveUserProfile(is_incognito);
GURL url = GURL(ConvertJavaStringToUTF8(env, origin));
ContentSetting setting = CONTENT_SETTING_DEFAULT;
switch (value) {
case -1:
ContentSetting setting = (ContentSetting) value;
switch (setting) {
case CONTENT_SETTING_DEFAULT:
DesktopNotificationProfileUtil::ClearSetting(
profile, ContentSettingsPattern::FromURLNoWildcard(url));
break;
case 1:
case CONTENT_SETTING_ALLOW:
DesktopNotificationProfileUtil::GrantPermission(profile, url);
setting = CONTENT_SETTING_ALLOW;
break;
case 2:
case CONTENT_SETTING_BLOCK:
DesktopNotificationProfileUtil::DenyPermission(profile, url);
setting = CONTENT_SETTING_BLOCK;
break;
default:
NOTREACHED();
Expand Down Expand Up @@ -382,7 +370,8 @@ static void SetMicrophoneSettingForOrigin(JNIEnv* env,
jint value,
jboolean is_incognito) {
SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin,
ContentSettingsPattern::Wildcard(), value, is_incognito);
ContentSettingsPattern::Wildcard(),
(ContentSetting) value, is_incognito);
}

static void SetCameraSettingForOrigin(JNIEnv* env,
Expand All @@ -392,7 +381,8 @@ static void SetCameraSettingForOrigin(JNIEnv* env,
jint value,
jboolean is_incognito) {
SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, origin,
ContentSettingsPattern::Wildcard(), value, is_incognito);
ContentSettingsPattern::Wildcard(),
(ContentSetting) value, is_incognito);
}

static scoped_refptr<content_settings::CookieSettings> GetCookieSettings() {
Expand Down

0 comments on commit 1897e42

Please sign in to comment.