1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/content_setting_image_model.h" 6 #include "chrome/browser/content_settings/host_content_settings_map.h" 7 #include "chrome/browser/prerender/prerender_manager.h" 8 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/test/testing_profile.h" 10 #include "content/browser/browser_thread.h" 11 #include "content/browser/renderer_host/test_render_view_host.h" 12 #include "content/browser/tab_contents/test_tab_contents.h" 13 #include "net/base/cookie_options.h" 14 #include "testing/gtest/include/gtest/gtest.h" 15 16 class ContentSettingImageModelTest : public RenderViewHostTestHarness { 17 public: 18 ContentSettingImageModelTest() 19 : RenderViewHostTestHarness(), 20 ui_thread_(BrowserThread::UI, &message_loop_) {} 21 22 private: 23 BrowserThread ui_thread_; 24 25 DISALLOW_COPY_AND_ASSIGN(ContentSettingImageModelTest); 26 }; 27 28 TEST_F(ContentSettingImageModelTest, UpdateFromTabContents) { 29 TestTabContents tab_contents(profile_.get(), NULL); 30 TabSpecificContentSettings* content_settings = 31 tab_contents.GetTabSpecificContentSettings(); 32 scoped_ptr<ContentSettingImageModel> content_setting_image_model( 33 ContentSettingImageModel::CreateContentSettingImageModel( 34 CONTENT_SETTINGS_TYPE_IMAGES)); 35 EXPECT_FALSE(content_setting_image_model->is_visible()); 36 EXPECT_EQ(0, content_setting_image_model->get_icon()); 37 EXPECT_TRUE(content_setting_image_model->get_tooltip().empty()); 38 39 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, 40 std::string()); 41 content_setting_image_model->UpdateFromTabContents(&tab_contents); 42 43 EXPECT_TRUE(content_setting_image_model->is_visible()); 44 EXPECT_NE(0, content_setting_image_model->get_icon()); 45 EXPECT_FALSE(content_setting_image_model->get_tooltip().empty()); 46 } 47 48 TEST_F(ContentSettingImageModelTest, CookieAccessed) { 49 TestTabContents tab_contents(profile_.get(), NULL); 50 TabSpecificContentSettings* content_settings = 51 tab_contents.GetTabSpecificContentSettings(); 52 profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( 53 CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_BLOCK); 54 scoped_ptr<ContentSettingImageModel> content_setting_image_model( 55 ContentSettingImageModel::CreateContentSettingImageModel( 56 CONTENT_SETTINGS_TYPE_COOKIES)); 57 EXPECT_FALSE(content_setting_image_model->is_visible()); 58 EXPECT_EQ(0, content_setting_image_model->get_icon()); 59 EXPECT_TRUE(content_setting_image_model->get_tooltip().empty()); 60 61 net::CookieOptions options; 62 content_settings->OnCookieChanged( 63 GURL("http://google.com"), "A=B", options, false); 64 content_setting_image_model->UpdateFromTabContents(&tab_contents); 65 EXPECT_TRUE(content_setting_image_model->is_visible()); 66 EXPECT_NE(0, content_setting_image_model->get_icon()); 67 EXPECT_FALSE(content_setting_image_model->get_tooltip().empty()); 68 } 69 70 TEST_F(ContentSettingImageModelTest, Prerender) { 71 prerender::PrerenderManager::SetMode( 72 prerender::PrerenderManager::PRERENDER_MODE_ENABLED); 73 TestTabContents tab_contents(profile_.get(), NULL); 74 scoped_ptr<ContentSettingImageModel> content_setting_image_model( 75 ContentSettingImageModel::CreateContentSettingImageModel( 76 CONTENT_SETTINGS_TYPE_PRERENDER)); 77 EXPECT_FALSE(content_setting_image_model->is_visible()); 78 EXPECT_NE(0, content_setting_image_model->get_icon()); 79 EXPECT_FALSE(content_setting_image_model->get_tooltip().empty()); 80 81 // Make the tab_contents prerendered 82 tab_contents.profile()->GetPrerenderManager()->MarkTabContentsAsPrerendered( 83 &tab_contents); 84 content_setting_image_model->UpdateFromTabContents(&tab_contents); 85 EXPECT_TRUE(content_setting_image_model->is_visible()); 86 EXPECT_NE(0, content_setting_image_model->get_icon()); 87 EXPECT_FALSE(content_setting_image_model->get_tooltip().empty()); 88 } 89