summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/renderer/blocked_plugin.cc11
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc15
-rw-r--r--chrome/renderer/chrome_ppb_pdf_impl.cc4
-rw-r--r--chrome/renderer/chrome_render_process_observer.cc2
-rw-r--r--chrome/renderer/print_web_view_helper.cc5
-rw-r--r--chrome/renderer/print_web_view_helper_linux.cc7
-rw-r--r--content/renderer/render_thread.cc13
-rw-r--r--content/renderer/render_thread.h9
-rw-r--r--content/renderer/render_view.cc28
-rw-r--r--content/renderer/render_view.h15
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);