From 2b2a314fb6c3c2c1a947fa1686e79557503b97f4 Mon Sep 17 00:00:00 2001 From: sashab Date: Fri, 16 Jan 2015 22:42:21 -0800 Subject: [PATCH] Split the Media permission into Camera/Microphone in Origin Info bubble Split the 'Media' permission into two separate permissions ('Camera' and 'Microphone') in the Origin Info bubble for Android and Desktop. Also deprecated the _MEDIASTREAM content setting, which was a way of storing this 'grouped' permission setting. BUG=433170 Review URL: https://codereview.chromium.org/813183002 Cr-Commit-Position: refs/heads/master@{#312025} --- .../java/res/drawable-hdpi/permission_mic.png | Bin 0 -> 3441 bytes .../java/res/drawable-mdpi/permission_mic.png | Bin 0 -> 3111 bytes .../java/res/drawable-xhdpi/permission_mic.png | Bin 0 -> 3601 bytes .../java/res/drawable-xxhdpi/permission_mic.png | Bin 0 -> 4068 bytes .../java/res/drawable-xxxhdpi/permission_mic.png | Bin 0 -> 4652 bytes .../chrome/browser/WebsiteSettingsPopup.java | 4 +- chrome/app/generated_resources.grd | 6 ++ .../{ask_media.png => common/allowed_camera.png} | Bin .../default_100_percent/common/allowed_mic.png | Bin 0 -> 1268 bytes ...{blocked_mediastream.png => blocked_camera.png} | Bin .../default_100_percent/common/blocked_mic.png | Bin 0 -> 1485 bytes .../{ask_media.png => common/allowed_camera.png} | Bin .../default_200_percent/common/allowed_mic.png | Bin 0 -> 1466 bytes ...{blocked_mediastream.png => blocked_camera.png} | Bin .../default_200_percent/common/blocked_mic.png | Bin 0 -> 1969 bytes chrome/app/theme/theme_resources.grd | 8 +- .../ui/android/website_settings_popup_android.cc | 3 +- .../website_settings_bubble_controller_unittest.mm | 6 +- .../content_setting_image_model.cc | 4 +- .../ui/website_settings/website_settings.cc | 101 +++++---------------- .../ui/website_settings/website_settings_ui.cc | 20 +++- .../website_settings/website_settings_unittest.cc | 6 +- .../core/common/content_settings_types.h | 2 +- 23 files changed, 67 insertions(+), 93 deletions(-) create mode 100644 chrome/android/java/res/drawable-hdpi/permission_mic.png create mode 100644 chrome/android/java/res/drawable-mdpi/permission_mic.png create mode 100644 chrome/android/java/res/drawable-xhdpi/permission_mic.png create mode 100644 chrome/android/java/res/drawable-xxhdpi/permission_mic.png create mode 100644 chrome/android/java/res/drawable-xxxhdpi/permission_mic.png rename chrome/app/theme/default_100_percent/{ask_media.png => common/allowed_camera.png} (100%) create mode 100644 chrome/app/theme/default_100_percent/common/allowed_mic.png rename chrome/app/theme/default_100_percent/common/{blocked_mediastream.png => blocked_camera.png} (100%) create mode 100644 chrome/app/theme/default_100_percent/common/blocked_mic.png rename chrome/app/theme/default_200_percent/{ask_media.png => common/allowed_camera.png} (100%) create mode 100644 chrome/app/theme/default_200_percent/common/allowed_mic.png rename chrome/app/theme/default_200_percent/common/{blocked_mediastream.png => blocked_camera.png} (100%) create mode 100644 chrome/app/theme/default_200_percent/common/blocked_mic.png diff --git a/chrome/android/java/res/drawable-hdpi/permission_mic.png b/chrome/android/java/res/drawable-hdpi/permission_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..15d3cc29e950b99f00b441376678f7d41d01e443 GIT binary patch literal 3441 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 TB8z+$00000NkvXXu0mjfZO_1k literal 0 HcwPel00001 diff --git a/chrome/android/java/res/drawable-mdpi/permission_mic.png b/chrome/android/java/res/drawable-mdpi/permission_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..ce424e149f927d765c0b21af7be926c2024258c4 GIT binary patch literal 3111 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 B0-^u_ literal 0 HcwPel00001 diff --git a/chrome/android/java/res/drawable-xhdpi/permission_mic.png b/chrome/android/java/res/drawable-xhdpi/permission_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cefc66f50e14af9511f1f4ae16e7066e21aedb GIT binary patch literal 3601 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 XOsXE5qa}!Q00000NkvXXu0mjf`u+BD literal 0 HcwPel00001 diff --git a/chrome/android/java/res/drawable-xxhdpi/permission_mic.png b/chrome/android/java/res/drawable-xxhdpi/permission_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..deaf4d192bc32ac40f21dc26495aea11fbbe7798 GIT binary patch literal 4068 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 WJ+9}GDv#y>0000X+uL$Nkc;* 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 i2p9wm0tSJo5cnU_(_+ZxJ$H%#0000 Media + + Microphone + + + Camera + MIDI full control diff --git a/chrome/app/theme/default_100_percent/ask_media.png b/chrome/app/theme/default_100_percent/common/allowed_camera.png similarity index 100% rename from chrome/app/theme/default_100_percent/ask_media.png rename to chrome/app/theme/default_100_percent/common/allowed_camera.png diff --git a/chrome/app/theme/default_100_percent/common/allowed_mic.png b/chrome/app/theme/default_100_percent/common/allowed_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..bafc25bf9b2717697ab3b1f1eb6677975b2c70f4 GIT binary patch literal 1268 zcwU`UU2NM_6n5IK$~r2g3u6jMaB*M?h}gc46FXkAHjNXOiF8pKshP9~ocJcOTL08` zNgDN`p`r?~2Q&ne7!QlICmx1C+JuG>4+|4NlRz41qe6W^l@Qus+7P@9R_u~=2u*$9 zO7^|y`1{T|_x$+P+|=`pbpZ`)%YRSM1GarHaf|L^xQcAOqMa0mG2t;B$bcV2GqbBn$;1%~MexhCy%Pwl_nn z@OdHK^JPnMyk=QCPm=X|ov4Qh&8U(v8jX?^P11DGMg+}8)e;*))%5o*2*@lOvTn(m z3LIH1X$w{y$NN`M^lWz9uxj=aWv7g6h&l-gic}P`k2bA5s_cw53yV4;^T^Z|jIv#i zivM4(cBVQ&I~x9|A=^a}=LD_1pdi)C2yxv0LP)a2r(h~XvCJfl(o}?lkfXRzf(@|@ z6w(w$C;B!X#0|k@B*H~FHWj5IOfk^}n@XlwmJ6jPIf0@2+>B~kqFP3Mu6&=%?#Shn z1`;jJC}`STzXNhL&C<-8ri0{k1O&2TSymmzGfsheu_8l$2}x-~Q@~b+dHDemBqC5? zX@TY@@86sYrxIL3fC3c`;XSVOf3il}!I1xHm%hsGLFc&L{I;+?K1j7^#;}Lu%eD8e zVVDcg2#G>tt@P*S=J?=w%saTxwdW${_xs$I(zQl=@3;K|o!j8ZFn)>y@*sSv(%A}@*bCWN={5M)@ Bo)G{5 literal 0 HcwPel00001 diff --git a/chrome/app/theme/default_100_percent/common/blocked_mediastream.png b/chrome/app/theme/default_100_percent/common/blocked_camera.png similarity index 100% rename from chrome/app/theme/default_100_percent/common/blocked_mediastream.png rename to chrome/app/theme/default_100_percent/common/blocked_camera.png diff --git a/chrome/app/theme/default_100_percent/common/blocked_mic.png b/chrome/app/theme/default_100_percent/common/blocked_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..73575eafdc498ece831611f0f3985eea9c5ab963 GIT binary patch literal 1485 zcwXxa@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%o&*>5hW46K32*3xq68pHF_1f1q>iyV_#8_n4FzjqL7rD zo|$K>^nUk#C56lsTcvPQUjyF)=hTc$kE){7;3~h6MhI|Z8xE1&_nsU?XD z6}dTi#a0!zN?>!XfNYSkzLEl1NlCV?62wsvz5xo(`9-M;rh2Bj$p(fd3g(u2hNgxl z7KSRtPXWYFOv*1U zu~kxnc_FvJ*B5SZUNJPFfI+5TkyxN_sAr&`o2w5~U0f2BnucF>aY$uBs(w&vaeir0 zGB7^Ul##5$uN9;a=o%~kqD)|IV>x5UYm2**QVo82cNPd0}ECmE)ATTyPmdP_Ts9J_xch9&UvN>u@&Ob-D;pM?_qlN4rET&&RKm{+8^_lNqFxZmPOg86Ji zG+R>~eZ*KY4Vx5}irjka74Sj8z^v)kwX|QgiqX?HWODp^ko;`#&F{0#t@Ec`i;_EK z^Qqz4TON(2|IU8?`Nx7iL&~ZtE@ku0$?HtyE^97lEW7Zq{?+PDe6v{(>}=l0@AEL? zRN&3M3AT*22Y;)hJ*dA=vbz;@HyY_rV^ZMNOhLp{k z`+9jJXUu-wyS~6yf=BN4?dZ>0rKX>E$LI;ZV9Rz2e*3e~L~81>XUj}@ob`+(85csQ{XfAPQe0frN&BkOx?kDG!DSWj0!mvv4FO#q$>C1wBs literal 0 HcwPel00001 diff --git a/chrome/app/theme/default_200_percent/ask_media.png b/chrome/app/theme/default_200_percent/common/allowed_camera.png similarity index 100% rename from chrome/app/theme/default_200_percent/ask_media.png rename to chrome/app/theme/default_200_percent/common/allowed_camera.png diff --git a/chrome/app/theme/default_200_percent/common/allowed_mic.png b/chrome/app/theme/default_200_percent/common/allowed_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..a4037ddd45099e44928968865da73769c0fc50b4 GIT binary patch literal 1466 zcwXxa@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtBi9%9p zdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tbhjOrj{fs zROII56l+yB8yf2x8d(`wS{a%uK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xG?WUP)qwZeFo6%mkOz;^d;tf|AVqJOvOxF)6>a z#8ycO=7rn>UthSvdBxCx0tT6WMPh-zp`L+$ZmvE|b#X~hY8rmk#UYgisro^w#rdU0 z$-wwXQ%151zgCb!plhuBi!y9hgb0Zfc3nzrnElgbefZOL#gu zlsb?7cTk-AK+th^hO*1`{0H1Tr#D5O%n?eJ|8v89bH1GX=KQ`RYcpr9mRfr(bm=pW z-)k$oSdS!aOj5K>klnJmmbdJ{(whqkEOK7=xE^4YV6ZbfvG1r??Wwp8+`Ag1+h5#H z_PN=*HmGG{X3h4b=-!zT?DIV*&p79GW`=)YPws8k3k!}lUES3`wdP!v0a{fh^ofBh~aILpU#D>h1_MwVzB%Zu1 zZw!1HJEgYpgUh2g-Cl*t3+C6&v-G~FCwD+`Msl_M9l=ENggYrU+7=UTxu02?(k#0A z<^~}0!j*2Azkx@S8*RbZ* z-2XB?8}0U7;=OuG_baoHVY_a6D$|ya>a#+{( zJaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtBi9%9p zdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tbhjOrj{fs zROII56l+yB8yf2x8d(`wS{a%uK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xG?WUP)qwZeFo6%mkOz;^d;tf|AVqJOvOxF)6>a z#8ycO=7rn>UthSvdBxCx0tT6WMPh-zp`L+$ZmvE|b#X~hY8rmk#UYgisro^w#rdU0 z$-wwXQ%151zgCb!plhuBi!y9hgb0Zfc3nzrnElgbAFY^}!Q>h3?C>-}SBqoI*Z-$<_)at3E)!hr_vyS}`u#J1tUf>6 z8>uS81PFYw;l{Cz_(Oo}HEW+Qvf7*fFiL>1Z4A~e-6(#`L`r;z!Xzg4s=f8s zl7RO;tj&KXE>qiPV|PwTPuw~(?3fJS@jVH_dROd)LUcrKU1>kYFeh63#+HC`&acq{ zb82$(^72$}-8~z2I8n@*+15V!(5ypF+VO>IY0SIt?sEx9QU2ChR;nr3=?p5*e- zo^Mrmj%WOzUvRNZ{fO=wUCopAot@KLbWIAMPrrTQ`-x{;&R?JZMf2#iS5b@BeL^K2O>FZ{!$!NtkP@bu6{&#xWnH@PhAAMDe7 zP{O!5YVE`*2V3SV;*4ERO~L_{42S%0t!lh;>Xe=OgB~WCua*C}&#je~nDpt5icouxMDsbN$CF889r+3lQT44J}`XuVr_#_e(R*<#|@GNYa4`rUs*om z$kr)=O&Nz>j{2!*-)8jUT>eH`{bS0MyPm5Wi>rV4W^cM?cy-;iSwWZTrp{;LVW + + @@ -51,7 +53,6 @@ - @@ -102,15 +103,16 @@ + - + - + diff --git a/chrome/browser/ui/android/website_settings_popup_android.cc b/chrome/browser/ui/android/website_settings_popup_android.cc index 3a1ba2fe755a..cf2ece7b5393 100644 --- a/chrome/browser/ui/android/website_settings_popup_android.cc +++ b/chrome/browser/ui/android/website_settings_popup_android.cc @@ -96,7 +96,8 @@ void WebsiteSettingsPopupAndroid::SetPermissionInfo( // particular order, but only if their value is different from the default. std::vector permissions_to_display; permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_GEOLOCATION); - permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_MEDIASTREAM); + permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); + permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING); permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_IMAGES); permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_JAVASCRIPT); diff --git a/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller_unittest.mm b/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller_unittest.mm index 92260a1ff7dc..605663f8c85d 100644 --- a/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller_unittest.mm @@ -99,7 +99,7 @@ const ContentSettingsType kTestPermissionTypes[] = { CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTINGS_TYPE_MOUSELOCK, - CONTENT_SETTINGS_TYPE_MEDIASTREAM, + CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC }; const ContentSetting kTestSettings[] = { @@ -111,7 +111,7 @@ const ContentSetting kTestSettings[] = { CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, CONTENT_SETTING_ALLOW, - CONTENT_SETTING_BLOCK, + CONTENT_SETTING_BLOCK }; const ContentSetting kTestDefaultSettings[] = { @@ -129,7 +129,7 @@ const content_settings::SettingSource kTestSettingSources[] = { content_settings::SETTING_SOURCE_POLICY, content_settings::SETTING_SOURCE_POLICY, content_settings::SETTING_SOURCE_EXTENSION, - content_settings::SETTING_SOURCE_EXTENSION, + content_settings::SETTING_SOURCE_EXTENSION }; class WebsiteSettingsBubbleControllerTest : public CocoaTest { diff --git a/chrome/browser/ui/content_settings/content_setting_image_model.cc b/chrome/browser/ui/content_settings/content_setting_image_model.cc index 3f2910486fe6..170545103338 100644 --- a/chrome/browser/ui/content_settings/content_setting_image_model.cc +++ b/chrome/browser/ui/content_settings/content_setting_image_model.cc @@ -260,11 +260,11 @@ void ContentSettingMediaImageModel::UpdateFromWebContents( int id = IDS_CAMERA_BLOCKED; if (state & (TabSpecificContentSettings::MICROPHONE_BLOCKED | TabSpecificContentSettings::CAMERA_BLOCKED)) { - set_icon(IDR_BLOCKED_MEDIA); + set_icon(IDR_BLOCKED_CAMERA); if (is_mic) id = is_cam ? IDS_MICROPHONE_CAMERA_BLOCKED : IDS_MICROPHONE_BLOCKED; } else { - set_icon(IDR_ASK_MEDIA); + set_icon(IDR_ALLOWED_CAMERA); id = IDS_CAMERA_ACCESSED; if (is_mic) id = is_cam ? IDS_MICROPHONE_CAMERA_ALLOWED : IDS_MICROPHONE_ACCESSED; diff --git a/chrome/browser/ui/website_settings/website_settings.cc b/chrome/browser/ui/website_settings/website_settings.cc index 8bb29e8bea93..2cb0a0982299 100644 --- a/chrome/browser/ui/website_settings/website_settings.cc +++ b/chrome/browser/ui/website_settings/website_settings.cc @@ -70,19 +70,20 @@ enum SSLCertificateDecisionsDidRevoke { // The list of content settings types to display on the Website Settings UI. ContentSettingsType kPermissionType[] = { - CONTENT_SETTINGS_TYPE_IMAGES, - CONTENT_SETTINGS_TYPE_JAVASCRIPT, - CONTENT_SETTINGS_TYPE_PLUGINS, - CONTENT_SETTINGS_TYPE_POPUPS, - CONTENT_SETTINGS_TYPE_GEOLOCATION, - CONTENT_SETTINGS_TYPE_NOTIFICATIONS, - CONTENT_SETTINGS_TYPE_FULLSCREEN, - CONTENT_SETTINGS_TYPE_MOUSELOCK, - CONTENT_SETTINGS_TYPE_MEDIASTREAM, - CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, - CONTENT_SETTINGS_TYPE_MIDI_SYSEX, + CONTENT_SETTINGS_TYPE_IMAGES, + CONTENT_SETTINGS_TYPE_JAVASCRIPT, + CONTENT_SETTINGS_TYPE_PLUGINS, + CONTENT_SETTINGS_TYPE_POPUPS, + CONTENT_SETTINGS_TYPE_GEOLOCATION, + CONTENT_SETTINGS_TYPE_NOTIFICATIONS, + CONTENT_SETTINGS_TYPE_FULLSCREEN, + CONTENT_SETTINGS_TYPE_MOUSELOCK, + CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, + CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, + CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, + CONTENT_SETTINGS_TYPE_MIDI_SYSEX, #if defined(OS_ANDROID) - CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, + CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, #endif }; @@ -280,54 +281,28 @@ void WebsiteSettings::OnSitePermissionChanged(ContentSettingsType type, primary_pattern = ContentSettingsPattern::FromURL(site_url_); secondary_pattern = ContentSettingsPattern::Wildcard(); break; - case CONTENT_SETTINGS_TYPE_MEDIASTREAM: { - // We need to use the same same patterns as other places like infobar code - // to override the existing rule instead of creating the new one. + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: primary_pattern = ContentSettingsPattern::FromURLNoWildcard(site_url_); secondary_pattern = ContentSettingsPattern::Wildcard(); - // Set permission for both microphone and camera. - content_settings_->SetContentSetting( - primary_pattern, - secondary_pattern, - CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, - std::string(), - setting); - - content_settings_->SetContentSetting( - primary_pattern, - secondary_pattern, - CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, - std::string(), - setting); break; - } default: NOTREACHED() << "ContentSettingsType " << type << "is not supported."; break; } - if (type != CONTENT_SETTINGS_TYPE_MEDIASTREAM) { // Permission settings are specified via rules. There exists always at least // one rule for the default setting. Get the rule that currently defines // the permission for the given permission |type|. Then test whether the // existing rule is more specific than the rule we are about to create. If // the existing rule is more specific, than change the existing rule instead // of creating a new rule that would be hidden behind the existing rule. - // This is not a concern for CONTENT_SETTINGS_TYPE_MEDIASTREAM since users - // can not create media settings exceptions by hand. content_settings::SettingInfo info; scoped_ptr v = content_settings_->GetWebsiteSettingWithoutOverride( site_url_, site_url_, type, std::string(), &info); content_settings_->SetNarrowestWebsiteSetting( primary_pattern, secondary_pattern, type, std::string(), setting, info); - } else { - base::Value* value = NULL; - if (setting != CONTENT_SETTING_DEFAULT) - value = new base::FundamentalValue(setting); - content_settings_->SetWebsiteSetting( - primary_pattern, secondary_pattern, type, std::string(), value); - } show_info_bar_ = true; @@ -696,49 +671,21 @@ void WebsiteSettings::PresentSitePermissions() { } content_settings::SettingInfo info; - if (permission_info.type == CONTENT_SETTINGS_TYPE_MEDIASTREAM) { - scoped_ptr mic_value = - content_settings_->GetWebsiteSettingWithoutOverride( - site_url_, - site_url_, - CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, - std::string(), - &info); - ContentSetting mic_setting = - content_settings::ValueToContentSetting(mic_value.get()); - - scoped_ptr camera_value = - content_settings_->GetWebsiteSettingWithoutOverride( - site_url_, - site_url_, - CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, - std::string(), - &info); - ContentSetting camera_setting = - content_settings::ValueToContentSetting(camera_value.get()); - - if (mic_setting != camera_setting || mic_setting == CONTENT_SETTING_ASK) - permission_info.setting = CONTENT_SETTING_DEFAULT; - else - permission_info.setting = mic_setting; + scoped_ptr value = + content_settings_->GetWebsiteSettingWithoutOverride( + site_url_, site_url_, permission_info.type, std::string(), &info); + DCHECK(value.get()); + if (value->GetType() == base::Value::TYPE_INTEGER) { + permission_info.setting = + content_settings::ValueToContentSetting(value.get()); } else { - scoped_ptr value = - content_settings_->GetWebsiteSettingWithoutOverride( - site_url_, site_url_, permission_info.type, std::string(), &info); - DCHECK(value.get()); - if (value->GetType() == base::Value::TYPE_INTEGER) { - permission_info.setting = - content_settings::ValueToContentSetting(value.get()); - } else { - NOTREACHED(); - } + NOTREACHED(); } permission_info.source = info.source; if (info.primary_pattern == ContentSettingsPattern::Wildcard() && - info.secondary_pattern == ContentSettingsPattern::Wildcard() && - permission_info.type != CONTENT_SETTINGS_TYPE_MEDIASTREAM) { + info.secondary_pattern == ContentSettingsPattern::Wildcard()) { permission_info.default_setting = permission_info.setting; permission_info.setting = CONTENT_SETTING_DEFAULT; } else { diff --git a/chrome/browser/ui/website_settings/website_settings_ui.cc b/chrome/browser/ui/website_settings/website_settings_ui.cc index 681d5c1e7529..e830eca5e5d2 100644 --- a/chrome/browser/ui/website_settings/website_settings_ui.cc +++ b/chrome/browser/ui/website_settings/website_settings_ui.cc @@ -129,6 +129,10 @@ base::string16 WebsiteSettingsUI::PermissionTypeToUIString( return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MOUSELOCK); case CONTENT_SETTINGS_TYPE_MEDIASTREAM: return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MEDIASTREAM); + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: + return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MIC); + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: + return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_CAMERA); case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS: return l10n_util::GetStringUTF16(IDS_AUTOMATIC_DOWNLOADS_TAB_LABEL); case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: @@ -162,9 +166,16 @@ base::string16 WebsiteSettingsUI::PermissionActionToUIString( ContentSetting default_setting, content_settings::SettingSource source) { ContentSetting effective_setting = setting; - if (effective_setting == CONTENT_SETTING_DEFAULT) + if (effective_setting == CONTENT_SETTING_DEFAULT) { effective_setting = default_setting; + // For Plugins, ASK is obsolete. Show as BLOCK to reflect actual behavior. + if (type == CONTENT_SETTINGS_TYPE_PLUGINS && + default_setting == CONTENT_SETTING_ASK) { + effective_setting = CONTENT_SETTING_BLOCK; + } + } + const int* button_text_ids = NULL; switch (source) { case content_settings::SETTING_SOURCE_USER: @@ -226,8 +237,11 @@ int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type, resource_id = use_blocked ? IDR_BLOCKED_MOUSE_CURSOR : IDR_ALLOWED_MOUSE_CURSOR; break; - case CONTENT_SETTINGS_TYPE_MEDIASTREAM: - resource_id = use_blocked ? IDR_BLOCKED_MEDIA : IDR_ASK_MEDIA; + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: + resource_id = use_blocked ? IDR_BLOCKED_MIC : IDR_ALLOWED_MIC; + break; + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: + resource_id = use_blocked ? IDR_BLOCKED_CAMERA : IDR_ALLOWED_CAMERA; break; case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS: resource_id = use_blocked ? IDR_BLOCKED_DOWNLOADS diff --git a/chrome/browser/ui/website_settings/website_settings_unittest.cc b/chrome/browser/ui/website_settings/website_settings_unittest.cc index 480cd89c37d6..e251de1d8f9f 100644 --- a/chrome/browser/ui/website_settings/website_settings_unittest.cc +++ b/chrome/browser/ui/website_settings/website_settings_unittest.cc @@ -184,7 +184,7 @@ TEST_F(WebsiteSettingsTest, OnPermissionsChanged) { // OnSitePermissionChanged() is called. // TODO(markusheintz): This is a temporary hack to fix issue: http://crbug.com/144203. #if defined(OS_MACOSX) - EXPECT_CALL(*mock_ui(), SetPermissionInfo(_)).Times(6); + EXPECT_CALL(*mock_ui(), SetPermissionInfo(_)).Times(7); #else EXPECT_CALL(*mock_ui(), SetPermissionInfo(_)).Times(1); #endif @@ -201,7 +201,9 @@ TEST_F(WebsiteSettingsTest, OnPermissionsChanged) { website_settings()->OnSitePermissionChanged( CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW); website_settings()->OnSitePermissionChanged( - CONTENT_SETTINGS_TYPE_MEDIASTREAM, CONTENT_SETTING_ALLOW); + CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, CONTENT_SETTING_ALLOW); + website_settings()->OnSitePermissionChanged( + CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, CONTENT_SETTING_ALLOW); // Verify that the site permissions were changed correctly. setting = content_settings->GetContentSetting( diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h index 0f138b41f6d6..d3722e669eb4 100644 --- a/components/content_settings/core/common/content_settings_types.h +++ b/components/content_settings/core/common/content_settings_types.h @@ -32,7 +32,7 @@ enum ContentSettingsType { CONTENT_SETTINGS_TYPE_FULLSCREEN, CONTENT_SETTINGS_TYPE_MOUSELOCK, CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, - CONTENT_SETTINGS_TYPE_MEDIASTREAM, // Default setting for MIC and CAMERA. + CONTENT_SETTINGS_TYPE_MEDIASTREAM, // Deprecated. CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, -- 2.11.4.GIT