summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 21:36:14 +0000
committerpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 21:36:14 +0000
commitf23d4da9135be3862d1b9a209628876987961d5e (patch)
tree9fee5c50212fbb8dea025a27443f82033d6a5f54 /chrome/browser/renderer_host
parentadc49f878ad08747893df60843f332f471397c5e (diff)
downloadchromium_src-f23d4da9135be3862d1b9a209628876987961d5e.zip
chromium_src-f23d4da9135be3862d1b9a209628876987961d5e.tar.gz
chromium_src-f23d4da9135be3862d1b9a209628876987961d5e.tar.bz2
Implemented IPC message to check whether cookies are enabled.
If you want to test this simply load some page in the browser. Go to settings and disable cookies. Then type in the address bar : javascript:alert(navigator.cookieEnabled); You should see a box saying "false" if you see true or even worse don't see anything at all the test has failed. BUG=63309 TEST=Disable cookies and try alert(navigator.cookieEnabled); should be false. Review URL: http://codereview.chromium.org/5091006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67319 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/resource_message_filter.cc40
-rw-r--r--chrome/browser/renderer_host/resource_message_filter.h16
2 files changed, 56 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc
index 017b2c3..3ebeb17 100644
--- a/chrome/browser/renderer_host/resource_message_filter.cc
+++ b/chrome/browser/renderer_host/resource_message_filter.cc
@@ -443,6 +443,8 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetRawCookies,
OnGetRawCookies)
IPC_MESSAGE_HANDLER(ViewHostMsg_DeleteCookie, OnDeleteCookie)
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_CookiesEnabled,
+ OnCookiesEnabled)
#if defined(OS_MACOSX)
IPC_MESSAGE_HANDLER(ViewHostMsg_LoadFont, OnLoadFont)
#endif
@@ -752,6 +754,28 @@ void ResourceMessageFilter::OnDeleteCookie(const GURL& url,
context->cookie_store()->DeleteCookie(url, cookie_name);
}
+void ResourceMessageFilter::OnCookiesEnabled(
+ const GURL& url,
+ const GURL& first_party_for_cookies,
+ IPC::Message* reply_msg) {
+ URLRequestContext* context = GetRequestContextForURL(url);
+ CookiesEnabledCompletion* callback =
+ new CookiesEnabledCompletion(reply_msg, this);
+ int policy = net::OK;
+ // TODO(ananta): If this render view is associated with an automation channel,
+ // aka ChromeFrame then we need to retrieve cookie settings from the external
+ // host.
+ if (context->cookie_policy()) {
+ policy = context->cookie_policy()->CanGetCookies(
+ url, first_party_for_cookies, callback);
+ if (policy == net::ERR_IO_PENDING) {
+ Send(new ViewMsg_SignalCookiePromptEvent());
+ return; // CanGetCookies will take care to call our callback in this case.
+ }
+ }
+ callback->Run(policy);
+}
+
#if defined(OS_MACOSX)
void ResourceMessageFilter::OnLoadFont(const FontDescriptor& font,
uint32* handle_size,
@@ -1796,3 +1820,19 @@ void GetCookiesCompletion::RunWithParams(const Tuple1<int>& params) {
void GetCookiesCompletion::set_cookie_store(CookieStore* cookie_store) {
cookie_store_ = cookie_store;
}
+
+CookiesEnabledCompletion::CookiesEnabledCompletion(
+ IPC::Message* reply_msg,
+ ResourceMessageFilter* filter)
+ : reply_msg_(reply_msg),
+ filter_(filter) {
+}
+
+CookiesEnabledCompletion::~CookiesEnabledCompletion() {}
+
+void CookiesEnabledCompletion::RunWithParams(const Tuple1<int>& params) {
+ bool result = params.a != net::ERR_ACCESS_DENIED;
+ ViewHostMsg_CookiesEnabled::WriteReplyParams(reply_msg_, result);
+ filter_->Send(reply_msg_);
+ delete this;
+}
diff --git a/chrome/browser/renderer_host/resource_message_filter.h b/chrome/browser/renderer_host/resource_message_filter.h
index 9266277..38f8f15 100644
--- a/chrome/browser/renderer_host/resource_message_filter.h
+++ b/chrome/browser/renderer_host/resource_message_filter.h
@@ -158,6 +158,9 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
IPC::Message* reply_msg);
void OnDeleteCookie(const GURL& url,
const std::string& cookieName);
+ void OnCookiesEnabled(const GURL& url,
+ const GURL& first_party_for_cookies,
+ IPC::Message* reply_msg);
void OnPluginFileDialog(const IPC::Message& msg,
bool multiple_files,
const std::wstring& title,
@@ -575,4 +578,17 @@ class GetCookiesCompletion : public net::CompletionCallback {
scoped_refptr<net::CookieStore> cookie_store_;
};
+class CookiesEnabledCompletion : public net::CompletionCallback {
+ public:
+ CookiesEnabledCompletion(IPC::Message* reply_msg,
+ ResourceMessageFilter* filter);
+ virtual ~CookiesEnabledCompletion();
+
+ virtual void RunWithParams(const Tuple1<int>& params);
+
+ private:
+ IPC::Message* reply_msg_;
+ scoped_refptr<ResourceMessageFilter> filter_;
+};
+
#endif // CHROME_BROWSER_RENDERER_HOST_RESOURCE_MESSAGE_FILTER_H_