summaryrefslogtreecommitdiffstats
path: root/chrome/browser/content_settings/content_settings_provider_unittest.cc
blob: e0857b3292a9ffa36983b3d45f4cf14fe4d5eab0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "testing/gtest/include/gtest/gtest.h"

#include "base/memory/scoped_ptr.h"
#include "chrome/browser/content_settings/content_settings_mock_provider.h"
#include "chrome/browser/content_settings/content_settings_utils.h"
#include "googleurl/src/gurl.h"

namespace content_settings {

TEST(ContentSettingsProviderTest, Mock) {
  ContentSettingsPattern pattern =
      ContentSettingsPattern::FromString("[*.]youtube.com");
  GURL url("http://www.youtube.com");

  MockProvider mock_provider(false);
  mock_provider.SetWebsiteSetting(
      pattern,
      pattern,
      CONTENT_SETTINGS_TYPE_PLUGINS,
      "java_plugin",
      Value::CreateIntegerValue(CONTENT_SETTING_BLOCK));


  EXPECT_EQ(CONTENT_SETTING_BLOCK,
            GetContentSetting(&mock_provider, url, url,
                              CONTENT_SETTINGS_TYPE_PLUGINS, "java_plugin",
                              false));
  scoped_ptr<Value> value_ptr(
            GetContentSettingValue(&mock_provider, url, url,
                                   CONTENT_SETTINGS_TYPE_PLUGINS,
                                   "java_plugin", false));
  int int_value = -1;
  value_ptr->GetAsInteger(&int_value);
  EXPECT_EQ(CONTENT_SETTING_BLOCK, IntToContentSetting(int_value));

  EXPECT_EQ(CONTENT_SETTING_DEFAULT,
            GetContentSetting(&mock_provider, url, url,
                              CONTENT_SETTINGS_TYPE_PLUGINS, "flash_plugin",
                              false));
  EXPECT_EQ(NULL,
            GetContentSettingValue(&mock_provider, url, url,
                                   CONTENT_SETTINGS_TYPE_PLUGINS,
                                   "flash_plugin", false));
  EXPECT_EQ(CONTENT_SETTING_DEFAULT,
            GetContentSetting(&mock_provider, url, url,
                              CONTENT_SETTINGS_TYPE_GEOLOCATION, "", false));
  EXPECT_EQ(NULL,
            GetContentSettingValue(&mock_provider, url, url,
                                   CONTENT_SETTINGS_TYPE_GEOLOCATION, "",
                                   false));

  bool owned = mock_provider.SetWebsiteSetting(
      pattern,
      pattern,
      CONTENT_SETTINGS_TYPE_PLUGINS,
      "java_plugin",
      Value::CreateIntegerValue(CONTENT_SETTING_ALLOW));
  EXPECT_TRUE(owned);
  EXPECT_EQ(CONTENT_SETTING_ALLOW,
            GetContentSetting(&mock_provider, url, url,
                              CONTENT_SETTINGS_TYPE_PLUGINS, "java_plugin",
                              false));

  mock_provider.set_read_only(true);
  scoped_ptr<base::Value> value(
      Value::CreateIntegerValue(CONTENT_SETTING_BLOCK));
  owned = mock_provider.SetWebsiteSetting(
      pattern,
      pattern,
      CONTENT_SETTINGS_TYPE_PLUGINS,
      "java_plugin",
      value.get());
  EXPECT_FALSE(owned);
  EXPECT_EQ(CONTENT_SETTING_ALLOW,
            GetContentSetting(&mock_provider, url, url,
                              CONTENT_SETTINGS_TYPE_PLUGINS, "java_plugin",
                              false));

  EXPECT_TRUE(mock_provider.read_only());

  mock_provider.set_read_only(false);
  owned = mock_provider.SetWebsiteSetting(
      pattern,
      pattern,
      CONTENT_SETTINGS_TYPE_PLUGINS,
      "java_plugin",
      Value::CreateIntegerValue(CONTENT_SETTING_BLOCK));
  EXPECT_TRUE(owned);
  EXPECT_EQ(CONTENT_SETTING_BLOCK,
            GetContentSetting(&mock_provider, url, url,
                              CONTENT_SETTINGS_TYPE_PLUGINS, "java_plugin",
                              false));
}

}  // namespace content_settings