chrome_render_message_filter.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
1ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat// Use of this source code is governed by a BSD-style license that can be 3ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat// found in the LICENSE file. 4ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 5ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/renderer_host/chrome_render_message_filter.h" 6ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 7ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include <string> 8ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 9ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "base/bind.h" 10ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "base/bind_helpers.h" 11ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "base/metrics/histogram.h" 12ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/chrome_notification_types.h" 13ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/content_settings/cookie_settings.h" 14ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/content_settings/tab_specific_content_settings.h" 15ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/extensions/extension_renderer_state.h" 16ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 17ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_EXTENSIONS) 18ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/guest_view/web_view/web_view_guest.h" 19ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif 20ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 21ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" 22ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/net/predictor.h" 23ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/profiles/profile.h" 24ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/profiles/profile_manager.h" 25ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/renderer_host/web_cache_manager.h" 26ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/common/extensions/api/i18n/default_locale_handler.h" 27ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/common/render_messages.h" 28ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "content/public/browser/notification_service.h" 29ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "content/public/browser/render_process_host.h" 30ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 31ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_TASK_MANAGER) 32ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/task_manager/task_manager.h" 33ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif 34ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 35ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(USE_TCMALLOC) 36ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#include "chrome/browser/browser_about_handler.h" 37ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif 38ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 39ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatusing content::BrowserThread; 40ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatusing blink::WebCache; 41ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 42ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatnamespace { 43ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 44ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatconst uint32 kFilteredMessageClasses[] = { 45ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ChromeMsgStart, 46ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat}; 47ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 48ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} // namespace 49ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 50ffd68729961f7383f2e35494a03ccdef20f86c98San MehatChromeRenderMessageFilter::ChromeRenderMessageFilter( 51ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat int render_process_id, 52ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat Profile* profile) 53ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat : BrowserMessageFilter(kFilteredMessageClasses, 54ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat arraysize(kFilteredMessageClasses)), 55ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_(render_process_id), 56ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat profile_(profile), 57ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat predictor_(profile_->GetNetworkPredictor()), 58ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat cookie_settings_(CookieSettings::Factory::GetForProfile(profile)) { 59ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 60ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 61ffd68729961f7383f2e35494a03ccdef20f86c98San MehatChromeRenderMessageFilter::~ChromeRenderMessageFilter() { 62ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 63ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 64ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatbool ChromeRenderMessageFilter::OnMessageReceived(const IPC::Message& message) { 65ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool handled = true; 66ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_BEGIN_MESSAGE_MAP(ChromeRenderMessageFilter, message) 67ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DnsPrefetch, OnDnsPrefetch) 68ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_Preconnect, OnPreconnect) 69ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ResourceTypeStats, 70ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat OnResourceTypeStats) 71ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_UpdatedCacheStats, 72ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat OnUpdatedCacheStats) 73ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_V8HeapStats, OnV8HeapStats) 74ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_AllowDatabase, OnAllowDatabase) 75ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_AllowDOMStorage, OnAllowDOMStorage) 76ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER_DELAY_REPLY( 77ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ChromeViewHostMsg_RequestFileSystemAccessSync, 78ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat OnRequestFileSystemAccessSync) 79ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_RequestFileSystemAccessAsync, 80ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat OnRequestFileSystemAccessAsync) 81ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_AllowIndexedDB, OnAllowIndexedDB) 82ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_PLUGINS) 83ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_HANDLER(ChromeViewHostMsg_IsCrashReportingEnabled, 84ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat OnIsCrashReportingEnabled) 85ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif 86ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC_MESSAGE_UNHANDLED(handled = false) 8741cd7ed80eb5e97ef9893633d05f0877da7d6d0cRobert Greenwalt IPC_END_MESSAGE_MAP() 88ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 89ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat return handled; 90ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 91ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 92ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OverrideThreadForMessage( 93ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const IPC::Message& message, BrowserThread::ID* thread) { 94ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat switch (message.type()) { 95ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat case ChromeViewHostMsg_ResourceTypeStats::ID: 96ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat case ChromeViewHostMsg_UpdatedCacheStats::ID: 97ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat *thread = BrowserThread::UI; 98ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat break; 99ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat default: 100ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat break; 101ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat } 102ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 103ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 104ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnDnsPrefetch( 105ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const std::vector<std::string>& hostnames) { 106ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat if (predictor_) 107ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat predictor_->DnsPrefetchList(hostnames); 108ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 109ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 110ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnPreconnect(const GURL& url) { 111ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat if (predictor_) 112ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat predictor_->PreconnectUrl( 113ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat url, GURL(), chrome_browser_net::UrlInfo::MOUSE_OVER_MOTIVATED, 1); 114ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 115ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 116ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnResourceTypeStats( 117ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const WebCache::ResourceTypeStats& stats) { 118ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat HISTOGRAM_COUNTS("WebCoreCache.ImagesSizeKB", 119ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat static_cast<int>(stats.images.size / 1024)); 120ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat HISTOGRAM_COUNTS("WebCoreCache.CSSStylesheetsSizeKB", 121ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat static_cast<int>(stats.cssStyleSheets.size / 1024)); 122ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat HISTOGRAM_COUNTS("WebCoreCache.ScriptsSizeKB", 123ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat static_cast<int>(stats.scripts.size / 1024)); 124ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat HISTOGRAM_COUNTS("WebCoreCache.XSLStylesheetsSizeKB", 125ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat static_cast<int>(stats.xslStyleSheets.size / 1024)); 126ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat HISTOGRAM_COUNTS("WebCoreCache.FontsSizeKB", 127ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat static_cast<int>(stats.fonts.size / 1024)); 128ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 129ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 130ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_TASK_MANAGER) 131ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat TaskManager::GetInstance()->model()->NotifyResourceTypeStats(peer_pid(), 132ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat stats); 133ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif // defined(ENABLE_TASK_MANAGER) 134ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 135ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 136ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnUpdatedCacheStats( 137ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const WebCache::UsageStats& stats) { 138ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat WebCacheManager::GetInstance()->ObserveStats(render_process_id_, stats); 139ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 140ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 141ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnV8HeapStats(int v8_memory_allocated, 142ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat int v8_memory_used) { 143ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { 144ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask( 145ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::UI, FROM_HERE, 146ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&ChromeRenderMessageFilter::OnV8HeapStats, this, 147ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat v8_memory_allocated, v8_memory_used)); 148ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat return; 149ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat } 150ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 151ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::ProcessId renderer_id = peer_pid(); 152ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 153ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_TASK_MANAGER) 154ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat TaskManager::GetInstance()->model()->NotifyV8HeapStats( 155ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat renderer_id, 156ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat static_cast<size_t>(v8_memory_allocated), 157ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat static_cast<size_t>(v8_memory_used)); 158ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif // defined(ENABLE_TASK_MANAGER) 159ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 160ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat V8HeapStatsDetails details(v8_memory_allocated, v8_memory_used); 161ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat content::NotificationService::current()->Notify( 162ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat chrome::NOTIFICATION_RENDERER_V8_HEAP_STATS_COMPUTED, 163ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat content::Source<const base::ProcessId>(&renderer_id), 164ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat content::Details<const V8HeapStatsDetails>(&details)); 165ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 166ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 167ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnAllowDatabase( 168ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat int render_frame_id, 169ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& origin_url, 170ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& top_origin_url, 171ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const base::string16& name, 172ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const base::string16& display_name, 173ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool* allowed) { 174ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat *allowed = 175ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat cookie_settings_->IsSettingCookieAllowed(origin_url, top_origin_url); 176ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask( 177ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::UI, FROM_HERE, 178ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&TabSpecificContentSettings::WebDatabaseAccessed, 179ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_, render_frame_id, origin_url, name, 180ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat display_name, !*allowed)); 181ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 182ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 183ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnAllowDOMStorage(int render_frame_id, 184ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& origin_url, 185ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& top_origin_url, 186ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool local, 187ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool* allowed) { 188ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat *allowed = 189ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat cookie_settings_->IsSettingCookieAllowed(origin_url, top_origin_url); 190ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat // Record access to DOM storage for potential display in UI. 191ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask( 192ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::UI, FROM_HERE, 193ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&TabSpecificContentSettings::DOMStorageAccessed, 194ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_, render_frame_id, origin_url, local, 195ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat !*allowed)); 196ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 197ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 198ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnRequestFileSystemAccessSync( 199ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat int render_frame_id, 200ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& origin_url, 201ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& top_origin_url, 202ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat IPC::Message* reply_msg) { 203ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool allowed = 204ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat cookie_settings_->IsSettingCookieAllowed(origin_url, top_origin_url); 205ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 206ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_EXTENSIONS) 207ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool is_web_view_guest = 208ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ExtensionRendererState::GetInstance()->IsWebViewRenderer( 209ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_); 210ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat if (is_web_view_guest) { 211ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat // Record access to file system for potential display in UI. 212ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask(BrowserThread::UI, 213ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat FROM_HERE, 214ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&WebViewGuest::FileSystemAccessedSync, 215ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_, 216ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_frame_id, 217ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat origin_url, 218ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat !allowed, 219ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat reply_msg)); 220ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat return; 221ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat } 222ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif 223ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ChromeViewHostMsg_RequestFileSystemAccessSync::WriteReplyParams(reply_msg, 224ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat allowed); 225ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat Send(reply_msg); 226ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat // Record access to file system for potential display in UI. 227ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask( 228ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::UI, 229ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat FROM_HERE, 230ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&TabSpecificContentSettings::FileSystemAccessed, 231ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_, 232ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_frame_id, 233ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat origin_url, 234ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat !allowed)); 235ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 236ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 237ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnRequestFileSystemAccessAsync( 238ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat int render_frame_id, 239ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat int request_id, 240ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& origin_url, 241ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& top_origin_url) { 242ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 243ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 244ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool allowed = 245ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat cookie_settings_->IsSettingCookieAllowed(origin_url, top_origin_url); 246ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 247ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_EXTENSIONS) 248ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool is_web_view_guest = 249ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ExtensionRendererState::GetInstance()->IsWebViewRenderer( 250ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_); 251ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat if (is_web_view_guest) { 252ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat // Record access to file system for potential display in UI. 253ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask(BrowserThread::UI, 254ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat FROM_HERE, 255ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&WebViewGuest::FileSystemAccessedAsync, 256ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_, 257ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_frame_id, 258ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat request_id, 259ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat origin_url, 260ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat !allowed)); 261ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat return; 262ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat } 263ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif 264ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat Send(new ChromeViewMsg_RequestFileSystemAccessAsyncResponse(render_frame_id, 265ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat request_id, 266ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat allowed)); 267ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat // Record access to file system for potential display in UI. 268ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask( 269ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::UI, 270ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat FROM_HERE, 271ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&TabSpecificContentSettings::FileSystemAccessed, 272ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_, 273ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_frame_id, 274ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat origin_url, 275ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat !allowed)); 276ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 277ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 278ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnAllowIndexedDB(int render_frame_id, 279ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& origin_url, 280ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const GURL& top_origin_url, 281ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat const base::string16& name, 282ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat bool* allowed) { 283ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat *allowed = 284ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat cookie_settings_->IsSettingCookieAllowed(origin_url, top_origin_url); 285ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::PostTask( 286ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat BrowserThread::UI, FROM_HERE, 287ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat base::Bind(&TabSpecificContentSettings::IndexedDBAccessed, 288ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat render_process_id_, render_frame_id, origin_url, name, 289ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat !*allowed)); 290ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 291ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 292ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#if defined(ENABLE_PLUGINS) 293ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatvoid ChromeRenderMessageFilter::OnIsCrashReportingEnabled(bool* enabled) { 294ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat *enabled = ChromeMetricsServiceAccessor::IsCrashReportingEnabled(); 295ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat} 296ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#endif 297ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat