1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/content_setting_bubble_model.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/auto_reset.h" 8731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/command_line.h" 921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/content_settings/host_content_settings_map.h" 1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h" 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/geolocation/geolocation_content_settings_map.h" 12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/common/chrome_switches.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/testing_profile.h" 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/browser_thread.h" 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/renderer_host/test_render_view_host.h" 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/test_tab_contents.h" 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ContentSettingBubbleModelTest : public RenderViewHostTestHarness { 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ContentSettingBubbleModelTest() 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : ui_thread_(BrowserThread::UI, MessageLoop::current()) { 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CheckGeolocationBubble(size_t expected_domains, 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool expect_clear_link, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool expect_reload_hint) { 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ContentSettingBubbleModel::CreateContentSettingBubbleModel( 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch contents(), profile_.get(), CONTENT_SETTINGS_TYPE_GEOLOCATION)); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const ContentSettingBubbleModel::BubbleContent& bubble_content = 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_setting_bubble_model->bubble_content(); 3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_TRUE(bubble_content.title.empty()); 3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_TRUE(bubble_content.radio_group.radio_items.empty()); 3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_TRUE(bubble_content.popup_items.empty()); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(expected_domains, bubble_content.domain_lists.size()); 3721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_NE(expect_clear_link || expect_reload_hint, 3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen bubble_content.custom_link.empty()); 3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_EQ(expect_clear_link, bubble_content.custom_link_enabled); 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.manage_link.empty()); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick BrowserThread ui_thread_; 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ContentSettingBubbleModelTest, ImageRadios) { 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TabSpecificContentSettings* content_settings = 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch contents()->GetTabSpecificContentSettings(); 493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, 503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick std::string()); 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ContentSettingBubbleModel::CreateContentSettingBubbleModel( 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch contents(), profile_.get(), CONTENT_SETTINGS_TYPE_IMAGES)); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const ContentSettingBubbleModel::BubbleContent& bubble_content = 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_setting_bubble_model->bubble_content(); 5721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.title.empty()); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, bubble_content.radio_group.default_item); 6021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_TRUE(bubble_content.custom_link.empty()); 6121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.manage_link.empty()); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ContentSettingBubbleModelTest, Cookies) { 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TabSpecificContentSettings* content_settings = 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch contents()->GetTabSpecificContentSettings(); 673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, 683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick std::string()); 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ContentSettingBubbleModel::CreateContentSettingBubbleModel( 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch contents(), profile_.get(), CONTENT_SETTINGS_TYPE_COOKIES)); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const ContentSettingBubbleModel::BubbleContent& bubble_content = 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_setting_bubble_model->bubble_content(); 7521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.title.empty()); 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_FALSE(bubble_content.radio_group.radio_items.empty()); 7721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.custom_link.empty()); 7821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_TRUE(bubble_content.custom_link_enabled); 7921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.manage_link.empty()); 803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 823345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(ContentSettingBubbleModelTest, Plugins) { 833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick TabSpecificContentSettings* content_settings = 843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick contents()->GetTabSpecificContentSettings(); 853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS, 863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick std::string()); 873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( 893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ContentSettingBubbleModel::CreateContentSettingBubbleModel( 903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick contents(), profile_.get(), CONTENT_SETTINGS_TYPE_PLUGINS)); 913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const ContentSettingBubbleModel::BubbleContent& bubble_content = 923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick content_setting_bubble_model->bubble_content(); 9321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.title.empty()); 943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); 9521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.custom_link.empty()); 9621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_TRUE(bubble_content.custom_link_enabled); 9721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_FALSE(bubble_content.manage_link.empty()); 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 100731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickTEST_F(ContentSettingBubbleModelTest, MultiplePlugins) { 101731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CommandLine* cmd = CommandLine::ForCurrentProcess(); 102731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick AutoReset<CommandLine> auto_reset(cmd, *cmd); 103731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick cmd->AppendSwitch(switches::kEnableResourceContentSettings); 1044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch cmd->AppendSwitch(switches::kEnableClickToPlay); 105731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 106731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick HostContentSettingsMap* map = profile_->GetHostContentSettingsMap(); 107731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick std::string fooPlugin = "foo"; 108731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick std::string barPlugin = "bar"; 109731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick GURL url = contents()->GetURL(); 110731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick map->AddExceptionForURL(url, 111731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTINGS_TYPE_PLUGINS, 112731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick fooPlugin, 113731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTING_ALLOW); 114731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick map->AddExceptionForURL(url, 115731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTINGS_TYPE_PLUGINS, 116731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick barPlugin, 117731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTING_ASK); 118731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 119731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick TabSpecificContentSettings* content_settings = 120731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick contents()->GetTabSpecificContentSettings(); 121731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS, 122731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick fooPlugin); 123731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS, 124731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick barPlugin); 125731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 126731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( 127731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ContentSettingBubbleModel::CreateContentSettingBubbleModel( 128731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick contents(), profile_.get(), CONTENT_SETTINGS_TYPE_PLUGINS)); 129731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const ContentSettingBubbleModel::BubbleContent& bubble_content = 130731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick content_setting_bubble_model->bubble_content(); 131731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_EQ(2U, bubble_content.radio_group.radio_items.size()); 132731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_EQ(1, bubble_content.radio_group.default_item); 133731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 134731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick content_setting_bubble_model->OnRadioClicked(0); 135dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Nothing should have changed. 136731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_EQ(CONTENT_SETTING_ALLOW, 137731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick map->GetContentSetting(url, 138731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTINGS_TYPE_PLUGINS, 139731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick fooPlugin)); 140dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_EQ(CONTENT_SETTING_ASK, 141731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick map->GetContentSetting(url, 142731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTINGS_TYPE_PLUGINS, 143731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick barPlugin)); 144731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 145dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen content_setting_bubble_model.reset(); 146731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Both plug-ins should be click-to-play now. 147dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_EQ(CONTENT_SETTING_ALLOW, 148731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick map->GetContentSetting(url, 149731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTINGS_TYPE_PLUGINS, 150731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick fooPlugin)); 151dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_EQ(CONTENT_SETTING_ALLOW, 152731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick map->GetContentSetting(url, 153731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CONTENT_SETTINGS_TYPE_PLUGINS, 154731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick barPlugin)); 155731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 156731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ContentSettingBubbleModelTest, Geolocation) { 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL page_url("http://toplevel.example/"); 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL frame1_url("http://host1.example/"); 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL frame2_url("http://host2.example:999/"); 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NavigateAndCommit(page_url); 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TabSpecificContentSettings* content_settings = 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch contents()->GetTabSpecificContentSettings(); 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // One permitted frame, but not in the content map: requires reload. 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_settings->OnGeolocationPermissionSet(frame1_url, true); 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CheckGeolocationBubble(1, false, true); 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Add it to the content map, should now have a clear link. 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GeolocationContentSettingsMap* setting_map = 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile_->GetGeolocationContentSettingsMap(); 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch setting_map->SetContentSetting(frame1_url, page_url, CONTENT_SETTING_ALLOW); 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CheckGeolocationBubble(1, true, false); 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Change the default to allow: no message needed. 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch setting_map->SetDefaultContentSetting(CONTENT_SETTING_ALLOW); 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CheckGeolocationBubble(1, false, false); 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Second frame denied, but not stored in the content map: requires reload. 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_settings->OnGeolocationPermissionSet(frame2_url, false); 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CheckGeolocationBubble(2, false, true); 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Change the default to block: offer a clear link for the persisted frame 1. 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch setting_map->SetDefaultContentSetting(CONTENT_SETTING_BLOCK); 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CheckGeolocationBubble(2, true, false); 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 188dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 189dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ContentSettingBubbleModelTest, FileURL) { 190dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string file_url("file:///tmp/test.html"); 191dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen NavigateAndCommit(GURL(file_url)); 192dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_ptr<ContentSettingBubbleModel> content_setting_bubble_model( 193dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ContentSettingBubbleModel::CreateContentSettingBubbleModel( 194dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen contents(), profile_.get(), CONTENT_SETTINGS_TYPE_IMAGES)); 195dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string title = 196dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen content_setting_bubble_model->bubble_content().radio_group.radio_items[0]; 197dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_NE(std::string::npos, title.find(file_url)); 198dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 199