1// Copyright (c) 2012 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/renderer/browser_plugin/browser_plugin_manager_impl.h" 6 7#include "content/common/browser_plugin/browser_plugin_constants.h" 8#include "content/common/browser_plugin/browser_plugin_messages.h" 9#include "content/common/cursors/webcursor.h" 10#include "content/public/renderer/browser_plugin_delegate.h" 11#include "content/renderer/browser_plugin/browser_plugin.h" 12#include "content/renderer/render_thread_impl.h" 13#include "ui/gfx/point.h" 14 15namespace content { 16 17BrowserPluginManagerImpl::BrowserPluginManagerImpl(RenderViewImpl* render_view) 18 : BrowserPluginManager(render_view) { 19} 20 21BrowserPluginManagerImpl::~BrowserPluginManagerImpl() { 22} 23 24BrowserPlugin* BrowserPluginManagerImpl::CreateBrowserPlugin( 25 RenderViewImpl* render_view, 26 blink::WebFrame* frame, 27 scoped_ptr<BrowserPluginDelegate> delegate) { 28 return new BrowserPlugin(render_view, frame, delegate.Pass()); 29} 30 31bool BrowserPluginManagerImpl::Send(IPC::Message* msg) { 32 return RenderThread::Get()->Send(msg); 33} 34 35bool BrowserPluginManagerImpl::OnMessageReceived( 36 const IPC::Message& message) { 37 if (BrowserPlugin::ShouldForwardToBrowserPlugin(message)) { 38 int browser_plugin_instance_id = browser_plugin::kInstanceIDNone; 39 // All allowed messages must have |browser_plugin_instance_id| as their 40 // first parameter. 41 PickleIterator iter(message); 42 bool success = iter.ReadInt(&browser_plugin_instance_id); 43 DCHECK(success); 44 BrowserPlugin* plugin = GetBrowserPlugin(browser_plugin_instance_id); 45 if (plugin && plugin->OnMessageReceived(message)) 46 return true; 47 } 48 49 return false; 50} 51 52void BrowserPluginManagerImpl::DidCommitCompositorFrame() { 53 IDMap<BrowserPlugin>::iterator iter(&instances_); 54 while (!iter.IsAtEnd()) { 55 iter.GetCurrentValue()->DidCommitCompositorFrame(); 56 iter.Advance(); 57 } 58} 59 60} // namespace content 61