Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(416)

Side by Side Diff: content/shell/shell_message_filter.cc

Issue 23316003: [content shell] move browser process stuff into browser/ subdir (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/shell/shell_message_filter.h ('k') | content/shell/shell_net_log.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013 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 "content/shell/shell_message_filter.h"
6
7 #include "base/file_util.h"
8 #include "base/threading/thread_restrictions.h"
9 #include "content/public/browser/child_process_security_policy.h"
10 #include "content/shell/common/shell_messages.h"
11 #include "content/shell/shell_browser_context.h"
12 #include "content/shell/shell_content_browser_client.h"
13 #include "content/shell/shell_network_delegate.h"
14 #include "net/base/net_errors.h"
15 #include "net/cookies/cookie_monster.h"
16 #include "net/url_request/url_request_context.h"
17 #include "net/url_request/url_request_context_getter.h"
18 #include "webkit/browser/database/database_tracker.h"
19 #include "webkit/browser/fileapi/isolated_context.h"
20 #include "webkit/browser/quota/quota_manager.h"
21
22 namespace content {
23
24 ShellMessageFilter::ShellMessageFilter(
25 int render_process_id,
26 webkit_database::DatabaseTracker* database_tracker,
27 quota::QuotaManager* quota_manager,
28 net::URLRequestContextGetter* request_context_getter)
29 : render_process_id_(render_process_id),
30 database_tracker_(database_tracker),
31 quota_manager_(quota_manager),
32 request_context_getter_(request_context_getter) {
33 }
34
35 ShellMessageFilter::~ShellMessageFilter() {
36 }
37
38 void ShellMessageFilter::OverrideThreadForMessage(const IPC::Message& message,
39 BrowserThread::ID* thread) {
40 if (message.type() == ShellViewHostMsg_ClearAllDatabases::ID)
41 *thread = BrowserThread::FILE;
42 }
43
44 bool ShellMessageFilter::OnMessageReceived(const IPC::Message& message,
45 bool* message_was_ok) {
46 bool handled = true;
47 IPC_BEGIN_MESSAGE_MAP_EX(ShellMessageFilter, message, *message_was_ok)
48 IPC_MESSAGE_HANDLER(ShellViewHostMsg_ReadFileToString, OnReadFileToString)
49 IPC_MESSAGE_HANDLER(ShellViewHostMsg_RegisterIsolatedFileSystem,
50 OnRegisterIsolatedFileSystem)
51 IPC_MESSAGE_HANDLER(ShellViewHostMsg_ClearAllDatabases, OnClearAllDatabases)
52 IPC_MESSAGE_HANDLER(ShellViewHostMsg_SetDatabaseQuota, OnSetDatabaseQuota)
53 IPC_MESSAGE_HANDLER(ShellViewHostMsg_AcceptAllCookies, OnAcceptAllCookies)
54 IPC_MESSAGE_HANDLER(ShellViewHostMsg_DeleteAllCookies, OnDeleteAllCookies)
55 IPC_MESSAGE_UNHANDLED(handled = false)
56 IPC_END_MESSAGE_MAP()
57
58 return handled;
59 }
60
61 void ShellMessageFilter::OnReadFileToString(const base::FilePath& local_file,
62 std::string* contents) {
63 base::ThreadRestrictions::ScopedAllowIO allow_io;
64 file_util::ReadFileToString(local_file, contents);
65 }
66
67 void ShellMessageFilter::OnRegisterIsolatedFileSystem(
68 const std::vector<base::FilePath>& absolute_filenames,
69 std::string* filesystem_id) {
70 fileapi::IsolatedContext::FileInfoSet files;
71 ChildProcessSecurityPolicy* policy =
72 ChildProcessSecurityPolicy::GetInstance();
73 for (size_t i = 0; i < absolute_filenames.size(); ++i) {
74 files.AddPath(absolute_filenames[i], NULL);
75 if (!policy->CanReadFile(render_process_id_, absolute_filenames[i]))
76 policy->GrantReadFile(render_process_id_, absolute_filenames[i]);
77 }
78 *filesystem_id =
79 fileapi::IsolatedContext::GetInstance()->RegisterDraggedFileSystem(files);
80 policy->GrantReadFileSystem(render_process_id_, *filesystem_id);
81 }
82
83 void ShellMessageFilter::OnClearAllDatabases() {
84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
85 database_tracker_->DeleteDataModifiedSince(
86 base::Time(), net::CompletionCallback());
87 }
88
89 void ShellMessageFilter::OnSetDatabaseQuota(int quota) {
90 quota_manager_->SetTemporaryGlobalOverrideQuota(
91 quota * quota::QuotaManager::kPerHostTemporaryPortion,
92 quota::QuotaCallback());
93 }
94
95 void ShellMessageFilter::OnAcceptAllCookies(bool accept) {
96 ShellNetworkDelegate::SetAcceptAllCookies(accept);
97 }
98
99 void ShellMessageFilter::OnDeleteAllCookies() {
100 request_context_getter_->GetURLRequestContext()->cookie_store()
101 ->GetCookieMonster()
102 ->DeleteAllAsync(net::CookieMonster::DeleteCallback());
103 }
104
105 } // namespace content
OLDNEW
« no previous file with comments | « content/shell/shell_message_filter.h ('k') | content/shell/shell_net_log.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698