diff options
-rw-r--r-- | chrome/renderer/blocked_plugin.cc | 11 | ||||
-rw-r--r-- | chrome/renderer/chrome_content_renderer_client.cc | 15 | ||||
-rw-r--r-- | chrome/renderer/chrome_ppb_pdf_impl.cc | 4 | ||||
-rw-r--r-- | chrome/renderer/chrome_render_process_observer.cc | 2 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper.cc | 5 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_linux.cc | 7 | ||||
-rw-r--r-- | content/renderer/render_thread.cc | 13 | ||||
-rw-r--r-- | content/renderer/render_thread.h | 9 | ||||
-rw-r--r-- | content/renderer/render_view.cc | 28 | ||||
-rw-r--r-- | content/renderer/render_view.h | 15 |
10 files changed, 78 insertions, 31 deletions
diff --git a/chrome/renderer/blocked_plugin.cc b/chrome/renderer/blocked_plugin.cc index be50c8e..a2296c2 100644 --- a/chrome/renderer/blocked_plugin.cc +++ b/chrome/renderer/blocked_plugin.cc @@ -11,6 +11,7 @@ #include "chrome/common/render_messages.h" #include "chrome/renderer/plugin_uma.h" #include "content/common/view_messages.h" +#include "content/renderer/render_thread.h" #include "content/renderer/render_view.h" #include "grit/generated_resources.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebContextMenuData.h" @@ -159,16 +160,16 @@ void BlockedPlugin::ContextMenuAction(unsigned id) { if (g_last_active_menu != this) return; if (id == kMenuActionLoad) { - Send(new ViewHostMsg_UserMetricsRecordAction("Plugin_Load_Menu")); + RenderThread::RecordUserMetrics("Plugin_Load_Menu"); LoadPlugin(); } else if (id == kMenuActionRemove) { - Send(new ViewHostMsg_UserMetricsRecordAction("Plugin_Hide_Menu")); + RenderThread::RecordUserMetrics("Plugin_Hide_Menu"); HidePlugin(); } } void BlockedPlugin::OnLoadBlockedPlugins() { - Send(new ViewHostMsg_UserMetricsRecordAction("Plugin_Load_UI")); + RenderThread::RecordUserMetrics("Plugin_Load_UI"); LoadPlugin(); } @@ -206,12 +207,12 @@ void BlockedPlugin::LoadPlugin() { } void BlockedPlugin::Load(const CppArgumentList& args, CppVariant* result) { - Send(new ViewHostMsg_UserMetricsRecordAction("Plugin_Load_Click")); + RenderThread::RecordUserMetrics("Plugin_Load_Click"); LoadPlugin(); } void BlockedPlugin::Hide(const CppArgumentList& args, CppVariant* result) { - Send(new ViewHostMsg_UserMetricsRecordAction("Plugin_Hide_Click")); + RenderThread::RecordUserMetrics("Plugin_Hide_Click"); HidePlugin(); } diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index d2b2168..6ff6510 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc @@ -59,7 +59,6 @@ #include "chrome/renderer/spellchecker/spellcheck_provider.h" #include "chrome/renderer/translate_helper.h" #include "chrome/renderer/visitedlink_slave.h" -#include "content/common/view_messages.h" #include "content/renderer/render_thread.h" #include "content/renderer/render_view.h" #include "grit/generated_resources.h" @@ -287,16 +286,16 @@ WebPlugin* ChromeContentRendererClient::CreatePluginImpl( WebFrame* frame, const WebPluginParams& original_params, bool* is_default_plugin) { - bool found = false; *is_default_plugin = false; CommandLine* cmd = CommandLine::ForCurrentProcess(); webkit::WebPluginInfo info; GURL url(original_params.url); std::string orig_mime_type = original_params.mimeType.utf8(); std::string actual_mime_type; - render_view->Send(new ViewHostMsg_GetPluginInfo( - render_view->routing_id(), url, frame->top()->document().url(), - orig_mime_type, &found, &info, &actual_mime_type)); + + bool found = render_view->GetPluginInfo( + url, frame->top()->document().url(), orig_mime_type, &info, + &actual_mime_type); if (!found) return NULL; @@ -470,14 +469,12 @@ WebPlugin* ChromeContentRendererClient::CreatePluginImpl( observer->DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, resource); if (plugin_setting == CONTENT_SETTING_ASK) { - render_view->Send( - new ViewHostMsg_UserMetricsRecordAction("Plugin_ClickToPlay")); + RenderThread::RecordUserMetrics("Plugin_ClickToPlay"); return CreatePluginPlaceholder( render_view, frame, params, *group, IDR_CLICK_TO_PLAY_PLUGIN_HTML, IDS_PLUGIN_LOAD, false, true); } else { - render_view->Send( - new ViewHostMsg_UserMetricsRecordAction("Plugin_Blocked")); + RenderThread::RecordUserMetrics("Plugin_Blocked"); return CreatePluginPlaceholder( render_view, frame, params, *group, IDR_BLOCKED_PLUGIN_HTML, IDS_PLUGIN_BLOCKED, false, true); diff --git a/chrome/renderer/chrome_ppb_pdf_impl.cc b/chrome/renderer/chrome_ppb_pdf_impl.cc index 31fda37..d890ae4 100644 --- a/chrome/renderer/chrome_ppb_pdf_impl.cc +++ b/chrome/renderer/chrome_ppb_pdf_impl.cc @@ -8,7 +8,6 @@ #include "base/utf_string_conversions.h" #include "build/build_config.h" #include "chrome/common/render_messages.h" -#include "content/common/view_messages.h" #include "content/renderer/pepper_plugin_delegate_impl.h" #include "content/renderer/render_thread.h" #include "grit/webkit_resources.h" @@ -305,8 +304,7 @@ void UserMetricsRecordAction(PP_Var action) { scoped_refptr<ppapi::StringVar> action_str( ppapi::StringVar::FromPPVar(action)); if (action_str) { - RenderThread::current()->Send( - new ViewHostMsg_UserMetricsRecordAction(action_str->value())); + RenderThread::RecordUserMetrics(action_str->value()); } } diff --git a/chrome/renderer/chrome_render_process_observer.cc b/chrome/renderer/chrome_render_process_observer.cc index 380213a..1ab4815 100644 --- a/chrome/renderer/chrome_render_process_observer.cc +++ b/chrome/renderer/chrome_render_process_observer.cc @@ -163,7 +163,7 @@ DWORD WINAPI GetFontDataPatch(HDC hdc, LOGFONT logfont; if (GetObject(font, sizeof(LOGFONT), &logfont)) { std::vector<char> font_data; - if (RenderThread::current()->Send(new ViewHostMsg_PreCacheFont(logfont))) + if (RenderThread::PreCacheFont(logfont)) rv = GetFontData(hdc, table, offset, buffer, length); } } diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc index 27f716a1..784fc10 100644 --- a/chrome/renderer/print_web_view_helper.cc +++ b/chrome/renderer/print_web_view_helper.cc @@ -37,7 +37,6 @@ #if defined(OS_POSIX) #include "base/process_util.h" -#include "content/common/view_messages.h" #endif #if defined(USE_SKIA) @@ -1211,8 +1210,8 @@ bool PrintWebViewHelper::CopyMetafileDataToSharedMem( printing::Metafile* metafile, base::SharedMemoryHandle* shared_mem_handle) { uint32 buf_size = metafile->GetDataSize(); - base::SharedMemoryHandle mem_handle; - Send(new ViewHostMsg_AllocateSharedMemoryBuffer(buf_size, &mem_handle)); + base::SharedMemoryHandle mem_handle = + render_view()->HostAllocateSharedMemoryBuffer(buf_size); if (base::SharedMemory::IsHandleValid(mem_handle)) { base::SharedMemory shared_buf(mem_handle, false); if (shared_buf.Map(buf_size)) { diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index 5e31a24..1234a35 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -9,7 +9,7 @@ #include "base/memory/scoped_ptr.h" #include "base/metrics/histogram.h" #include "chrome/common/print_messages.h" -#include "content/common/view_messages.h" +#include "content/renderer/render_view.h" #include "printing/metafile.h" #include "printing/metafile_impl.h" #include "printing/metafile_skia_wrapper.h" @@ -93,9 +93,8 @@ bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, printed_page_params.data_size = 0; printed_page_params.document_cookie = params.params.document_cookie; - base::SharedMemoryHandle shared_mem_handle; - Send(new ViewHostMsg_AllocateSharedMemoryBuffer(buf_size, - &shared_mem_handle)); + base::SharedMemoryHandle shared_mem_handle = + render_view()->HostAllocateSharedMemoryBuffer(buf_size); if (!base::SharedMemory::IsHandleValid(shared_mem_handle)) { NOTREACHED() << "AllocateSharedMemoryBuffer returned bad handle"; return false; diff --git a/content/renderer/render_thread.cc b/content/renderer/render_thread.cc index 376232a..3be07a4 100644 --- a/content/renderer/render_thread.cc +++ b/content/renderer/render_thread.cc @@ -510,6 +510,19 @@ void RenderThread::EnsureWebKitInitialized() { FOR_EACH_OBSERVER(RenderProcessObserver, observers_, WebKitInitialized()); } +// static +void RenderThread::RecordUserMetrics(const std::string& action) { + RenderThread::current()->Send( + new ViewHostMsg_UserMetricsRecordAction(action)); +} + +#if defined(OS_WIN) +// static +bool RenderThread::PreCacheFont(const LOGFONT& log_font) { + return RenderThread::current()->Send(new ViewHostMsg_PreCacheFont(log_font)); +} +#endif // OS_WIN + bool RenderThread::OnControlMessageReceived(const IPC::Message& msg) { ObserverListBase<RenderProcessObserver>::Iterator it(observers_); RenderProcessObserver* observer; diff --git a/content/renderer/render_thread.h b/content/renderer/render_thread.h index 351cbcb..9c5a471 100644 --- a/content/renderer/render_thread.h +++ b/content/renderer/render_thread.h @@ -220,6 +220,15 @@ class CONTENT_EXPORT RenderThread : public RenderThreadBase, // We initialize WebKit as late as possible. void EnsureWebKitInitialized(); + // Helper function to send over a string to be recorded by user metrics + static void RecordUserMetrics(const std::string& action); + +#if defined(OS_WIN) + // Request that the given font be loaded by the browser so it's cached by the + // OS. Please see ChildProcessHost::PreCacheFont for details. + static bool PreCacheFont(const LOGFONT& log_font); +#endif // OS_WIN + private: virtual bool OnControlMessageReceived(const IPC::Message& msg); diff --git a/content/renderer/render_view.cc b/content/renderer/render_view.cc index eadbb91..e6abf63 100644 --- a/content/renderer/render_view.cc +++ b/content/renderer/render_view.cc @@ -584,11 +584,9 @@ void RenderView::PluginCrashed(const FilePath& plugin_path) { WebPlugin* RenderView::CreatePluginNoCheck(WebFrame* frame, const WebPluginParams& params) { webkit::WebPluginInfo info; - bool found; std::string mime_type; - Send(new ViewHostMsg_GetPluginInfo( - routing_id_, params.url, frame->top()->document().url(), - params.mimeType.utf8(), &found, &info, &mime_type)); + bool found = GetPluginInfo(params.url, frame->top()->document().url(), + params.mimeType.utf8(), &info, &mime_type); if (!found) return NULL; @@ -624,6 +622,25 @@ void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { plugin_delegates_.erase(delegate); } +bool RenderView::GetPluginInfo(const GURL& url, + const GURL& page_url, + const std::string& mime_type, + webkit::WebPluginInfo* plugin_info, + std::string* actual_mime_type) { + bool found = false; + Send(new ViewHostMsg_GetPluginInfo( + routing_id_, url, page_url, mime_type, &found, plugin_info, + actual_mime_type)); + return found; +} + +base::SharedMemoryHandle RenderView::HostAllocateSharedMemoryBuffer( + uint32 buffer_size) { + base::SharedMemoryHandle mem_handle; + Send(new ViewHostMsg_AllocateSharedMemoryBuffer(buffer_size, &mem_handle)); + return mem_handle; +} + bool RenderView::OnMessageReceived(const IPC::Message& message) { WebFrame* main_frame = webview() ? webview()->mainFrame() : NULL; if (main_frame) @@ -1581,8 +1598,7 @@ void RenderView::didExecuteCommand(const WebString& command_name) { StartsWithASCII(name, "Insert", true) || StartsWithASCII(name, "Delete", true)) return; - RenderThread::current()->Send( - new ViewHostMsg_UserMetricsRecordAction(name)); + RenderThread::RecordUserMetrics(name); } void RenderView::SendPendingAccessibilityNotifications() { diff --git a/content/renderer/render_view.h b/content/renderer/render_view.h index 68a12ad..5791ca0 100644 --- a/content/renderer/render_view.h +++ b/content/renderer/render_view.h @@ -339,6 +339,21 @@ class RenderView : public RenderWidget, void RegisterPluginDelegate(WebPluginDelegateProxy* delegate); void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate); + // Helper function to retrieve information about a plugin for a URL and mime + // type. Returns false if no plugin was found. + // |actual_mime_type| is the actual mime type supported by the + // plugin found that match the URL given (one for each item in + // |info|). + bool GetPluginInfo(const GURL& url, + const GURL& page_url, + const std::string& mime_type, + webkit::WebPluginInfo* plugin_info, + std::string* actual_mime_type); + + // Asks the host to create a block of shared memory for the renderer. + // The shared memory handle allocated by the host is returned back. + base::SharedMemoryHandle HostAllocateSharedMemoryBuffer(uint32 buffer_size); + // IPC::Channel::Listener implementation ------------------------------------- virtual bool OnMessageReceived(const IPC::Message& msg); |