15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h"
6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/tab_specific_content_settings.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/chrome_render_view_host_test_harness.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/canonical_cookie.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/cookie_options.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/parsed_cookie.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h"
15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockSiteDataObserver
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : public TabSpecificContentSettings::SiteDataObserver {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit MockSiteDataObserver(
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TabSpecificContentSettings* tab_specific_content_settings)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      : SiteDataObserver(tab_specific_content_settings) {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockSiteDataObserver() {}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(OnSiteDataAccessed, void());
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockSiteDataObserver);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabSpecificContentSettingsTest : public ChromeRenderViewHostTestHarness {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetUp() OVERRIDE {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ChromeRenderViewHostTestHarness::SetUp();
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TabSpecificContentSettings::CreateForWebContents(web_contents());
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(TabSpecificContentSettingsTest, BlockedContent) {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TabSpecificContentSettings* content_settings =
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TabSpecificContentSettings::FromWebContents(web_contents());
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::CookieOptions options;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Check that after initializing, nothing is blocked.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES));
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_JAVASCRIPT));
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS));
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_POPUPS));
637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(content_settings->IsContentBlocked(
647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(content_settings->IsContentBlocked(
667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Set a cookie, block access to images, block mediastream access and block a
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // popup.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookieChanged(GURL("http://google.com"),
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    GURL("http://google.com"),
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    "A=B",
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    options,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    false);
75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES);
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->SetPopupsBlocked(true);
7734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
7834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Check that only the respective content types are affected.
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES));
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_JAVASCRIPT));
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS));
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_POPUPS));
897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_TRUE(content_settings->IsContentBlocked(
907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_TRUE(content_settings->IsContentBlocked(
927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookieChanged(GURL("http://google.com"),
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    GURL("http://google.com"),
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    "A=B",
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    options,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    false);
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Block a cookie.
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookieChanged(GURL("http://google.com"),
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    GURL("http://google.com"),
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    "C=D",
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    options,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    true);
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Reset blocked content settings.
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->ClearBlockedContentSettingsExceptForCookies();
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES));
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_JAVASCRIPT));
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS));
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_POPUPS));
1207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(content_settings->IsContentBlocked(
1217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
1227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(content_settings->IsContentBlocked(
1237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->ClearCookieSpecificContentSettings();
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES));
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_JAVASCRIPT));
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS));
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_POPUPS));
1367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(content_settings->IsContentBlocked(
1377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
1387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(content_settings->IsContentBlocked(
1397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(TabSpecificContentSettingsTest, BlockedFileSystems) {
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TabSpecificContentSettings* content_settings =
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TabSpecificContentSettings::FromWebContents(web_contents());
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Access a file system.
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnFileSystemAccessed(GURL("http://google.com"), false);
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Block access to a file system.
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnFileSystemAccessed(GURL("http://google.com"), true);
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(TabSpecificContentSettingsTest, AllowedContent) {
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TabSpecificContentSettings* content_settings =
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TabSpecificContentSettings::FromWebContents(web_contents());
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::CookieOptions options;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Test default settings.
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_IMAGES));
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES));
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
1707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
1717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
1727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Record a cookie.
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookieChanged(GURL("http://google.com"),
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    GURL("http://google.com"),
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    "A=B",
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    options,
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    false);
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES));
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Record a blocked cookie.
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookieChanged(GURL("http://google.com"),
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    GURL("http://google.com"),
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    "C=D",
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    options,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    true);
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ASSERT_TRUE(
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES));
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
1953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST_F(TabSpecificContentSettingsTest, AllowedBlockedMediaContent) {
1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  TabSpecificContentSettings* content_settings =
1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      TabSpecificContentSettings::FromWebContents(web_contents());
2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_CAMERA_NOT_ACCESSED,
2027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
2037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request and allow microphone access.
2053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  GURL security_origin("http://google.com");
20668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  MediaStreamDevicesController::MediaStreamTypeSettingsMap
2073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      request_permissions;
20868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
2093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_ALLOWED;
2103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
2113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
2127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentAllowed(
2137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
2147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentBlocked(
2157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
2167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED,
2177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
2187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request and allow camera access.
2203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  request_permissions.clear();
22168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission =
2223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_ALLOWED;
2233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
2243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
2257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentAllowed(
2267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
2277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentBlocked(
2287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
22934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_CAMERA_ACCESSED,
2307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
2317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request and block microphone access.
2333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  request_permissions.clear();
23468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
2353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER;
2363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
2373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
2387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
2397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
2407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentBlocked(
2417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
24234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::CAMERA_ACCESSED,
2433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
2447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request and block camera access.
2463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  request_permissions.clear();
24768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission =
2483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER;
2493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
2503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
2517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
2527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
2537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentBlocked(
2547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
25534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_CAMERA_BLOCKED,
2563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
2577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request and allow microphone and camera access.
25968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
2603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_ALLOWED;
26168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission =
2623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_ALLOWED;
2633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
2643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
2653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentAllowed(
2663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
2673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentBlocked(
2683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
2693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentAllowed(
2703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
2713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentBlocked(
2723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
27334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_CAMERA_ACCESSED,
2743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
2757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request and block microphone and camera access.
27768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
2783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER;
27968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission =
2803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER;
2813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
2823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
2837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
2847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
2857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentBlocked(
2867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
2873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
2883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
2893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentBlocked(
2903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
29134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_CAMERA_BLOCKED,
2923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
2937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request microphone and camera access. Allow microphone, block camera.
29568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
2963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_ALLOWED;
2973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
2983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
2993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentAllowed(
3003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
3013551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentBlocked(
3023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
3037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
3047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
3057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentBlocked(
3067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
30734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED,
3083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
3093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
3103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Request microphone and camera access. Block microphone, allow camera.
31168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
3123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER;
31368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission =
3143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      MediaStreamDevicesController::MEDIA_ALLOWED;
3153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content_settings->OnMediaStreamPermissionSet(security_origin,
3163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                               request_permissions);
3173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentAllowed(
3183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
3193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentBlocked(
3203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
3213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content_settings->IsContentAllowed(
3223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
3233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_FALSE(content_settings->IsContentBlocked(
3243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
32534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)  ASSERT_EQ(TabSpecificContentSettings::CAMERA_ACCESSED,
3263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)            content_settings->GetMicrophoneCameraState());
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(TabSpecificContentSettingsTest, EmptyCookieList) {
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TabSpecificContentSettings* content_settings =
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TabSpecificContentSettings::FromWebContents(web_contents());
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES));
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookiesRead(GURL("http://google.com"),
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  GURL("http://google.com"),
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  net::CookieList(),
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  true);
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES));
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES));
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(TabSpecificContentSettingsTest, SiteDataObserver) {
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TabSpecificContentSettings* content_settings =
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TabSpecificContentSettings::FromWebContents(web_contents());
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockSiteDataObserver mock_observer(content_settings);
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_CALL(mock_observer, OnSiteDataAccessed()).Times(6);
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool blocked_by_policy = false;
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookieChanged(GURL("http://google.com"),
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    GURL("http://google.com"),
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    "A=B",
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    net::CookieOptions(),
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    blocked_by_policy);
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::CookieList cookie_list;
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<net::CanonicalCookie> cookie(
3612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      net::CanonicalCookie::Create(GURL("http://google.com"),
3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   "CookieName=CookieValue",
3632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   base::Time::Now(), net::CookieOptions()));
3642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cookie_list.push_back(*cookie);
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnCookiesRead(GURL("http://google.com"),
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  GURL("http://google.com"),
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  cookie_list,
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  blocked_by_policy);
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnFileSystemAccessed(GURL("http://google.com"),
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                              blocked_by_policy);
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnIndexedDBAccessed(GURL("http://google.com"),
3735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                        base::UTF8ToUTF16("text"),
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        blocked_by_policy);
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnLocalStorageAccessed(GURL("http://google.com"),
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           true,
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           blocked_by_policy);
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content_settings->OnWebDatabaseAccessed(GURL("http://google.com"),
3795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                          base::UTF8ToUTF16("name"),
3805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                          base::UTF8ToUTF16("display_name"),
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          blocked_by_policy);
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
383