Index: content/renderer/browser_plugin/browser_plugin_impl.cc |
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin_impl.cc |
similarity index 77% |
rename from content/renderer/browser_plugin/browser_plugin.cc |
rename to content/renderer/browser_plugin/browser_plugin_impl.cc |
index 75af8912790bcf84ebd5744dde7711472fb41a1a..132aaba069c4da212fa2ef518b35357e0053f244 100644 |
--- a/content/renderer/browser_plugin/browser_plugin.cc |
+++ b/content/renderer/browser_plugin/browser_plugin_impl.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "content/renderer/browser_plugin/browser_plugin.h" |
+#include "content/renderer/browser_plugin/browser_plugin_impl.h" |
#include "base/json/json_string_value_serializer.h" |
#include "base/message_loop.h" |
@@ -12,6 +12,7 @@ |
#include "content/common/browser_plugin_messages.h" |
#include "content/common/view_messages.h" |
#include "content/public/common/content_client.h" |
+#include "content/public/renderer/browser_plugin/browser_plugin_observer.h" |
#include "content/public/renderer/content_renderer_client.h" |
#include "content/renderer/browser_plugin/browser_plugin_bindings.h" |
#include "content/renderer/browser_plugin/browser_plugin_manager.h" |
@@ -97,7 +98,7 @@ static std::string TerminationStatusToString(base::TerminationStatus status) { |
} |
} |
-BrowserPlugin::BrowserPlugin( |
+BrowserPluginImpl::BrowserPluginImpl( |
int instance_id, |
RenderViewImpl* render_view, |
WebKit::WebFrame* frame, |
@@ -132,19 +133,34 @@ BrowserPlugin::BrowserPlugin( |
bindings_.reset(new BrowserPluginBindings(this)); |
ParseAttributes(params); |
+ GetContentClient()->renderer()->BrowserPluginCreated(this); |
} |
-BrowserPlugin::~BrowserPlugin() { |
+BrowserPluginImpl::~BrowserPluginImpl() { |
browser_plugin_manager()->RemoveBrowserPlugin(instance_id_); |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_PluginDestroyed( |
- render_view_routing_id_, |
- instance_id_)); |
+ Send(new BrowserPluginHostMsg_PluginDestroyed( |
+ render_view_routing_id_, |
+ instance_id_)); |
+} |
+ |
+void BrowserPluginImpl::AddObserver(BrowserPluginObserver* observer) { |
+ observers_.AddObserver(observer); |
} |
-bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { |
+void BrowserPluginImpl::RemoveObserver(BrowserPluginObserver* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
+bool BrowserPluginImpl::OnMessageReceived(const IPC::Message& message) { |
+ ObserverListBase<BrowserPluginObserver>::Iterator it(observers_); |
sadrul
2013/01/09 15:21:54
Check observers_.might_have_observers() first.
Fady Samuel
2013/01/09 17:41:24
Done.
|
+ BrowserPluginObserver* observer; |
+ while ((observer = it.GetNext()) != NULL) { |
+ if (observer->OnMessageReceived(message)) |
+ return true; |
+ } |
+ |
bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message) |
+ IPC_BEGIN_MESSAGE_MAP(BrowserPluginImpl, message) |
IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus) |
IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestContentWindowReady, |
OnGuestContentWindowReady) |
@@ -165,7 +181,7 @@ bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) { |
return handled; |
} |
-void BrowserPlugin::UpdateDOMAttribute( |
+void BrowserPluginImpl::UpdateDOMAttribute( |
const std::string& attribute_name, |
const std::string& attribute_value) { |
if (!container()) |
@@ -186,8 +202,8 @@ void BrowserPlugin::UpdateDOMAttribute( |
} |
} |
-bool BrowserPlugin::SetSrcAttribute(const std::string& src, |
- std::string* error_message) { |
+bool BrowserPluginImpl::SetSrcAttribute(const std::string& src, |
+ std::string* error_message) { |
if (!valid_partition_id_) { |
*error_message = kErrorInvalidPartition; |
return false; |
@@ -207,18 +223,16 @@ bool BrowserPlugin::SetSrcAttribute(const std::string& src, |
create_guest_params.visible = visible_; |
GetDamageBufferWithSizeParams(&create_guest_params.auto_size_params, |
&create_guest_params.resize_guest_params); |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_CreateGuest( |
- render_view_routing_id_, |
- instance_id_, |
- create_guest_params)); |
+ Send(new BrowserPluginHostMsg_CreateGuest( |
+ render_view_routing_id_, |
+ instance_id_, |
+ create_guest_params)); |
} |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_NavigateGuest( |
- render_view_routing_id_, |
- instance_id_, |
- src)); |
+ Send(new BrowserPluginHostMsg_NavigateGuest( |
+ render_view_routing_id_, |
+ instance_id_, |
+ src)); |
// Record that we sent a NavigateGuest message to embedder. |
// Once this instance has navigated, the storage partition cannot be changed, |
// so this value is used for enforcing this. |
@@ -227,7 +241,7 @@ bool BrowserPlugin::SetSrcAttribute(const std::string& src, |
return true; |
} |
-void BrowserPlugin::SetAutoSizeAttribute(bool auto_size) { |
+void BrowserPluginImpl::SetAutoSizeAttribute(bool auto_size) { |
if (auto_size_ == auto_size) |
return; |
auto_size_ = auto_size; |
@@ -235,7 +249,7 @@ void BrowserPlugin::SetAutoSizeAttribute(bool auto_size) { |
UpdateGuestAutoSizeState(); |
} |
-void BrowserPlugin::PopulateAutoSizeParameters( |
+void BrowserPluginImpl::PopulateAutoSizeParameters( |
BrowserPluginHostMsg_AutoSize_Params* params) { |
// If maxWidth or maxHeight have not been set, set them to the container size. |
max_height_ = max_height_ ? max_height_ : height(); |
@@ -249,24 +263,25 @@ void BrowserPlugin::PopulateAutoSizeParameters( |
params->min_size = gfx::Size(min_width_, min_height_); |
} |
-void BrowserPlugin::UpdateGuestAutoSizeState() { |
+void BrowserPluginImpl::UpdateGuestAutoSizeState() { |
// If we haven't yet heard back from the guest about the last resize request, |
// then we don't issue another request until we do in |
- // BrowserPlugin::UpdateRect. |
+ // BrowserPluginImpl::UpdateRect. |
if (!navigate_src_sent_ || !resize_ack_received_) |
return; |
BrowserPluginHostMsg_AutoSize_Params auto_size_params; |
BrowserPluginHostMsg_ResizeGuest_Params resize_guest_params; |
GetDamageBufferWithSizeParams(&auto_size_params, &resize_guest_params); |
resize_ack_received_ = false; |
- browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetAutoSize( |
+ Send(new BrowserPluginHostMsg_SetAutoSize( |
render_view_routing_id_, |
instance_id_, |
auto_size_params, |
resize_guest_params)); |
} |
-void BrowserPlugin::SizeChangedDueToAutoSize(const gfx::Size& old_view_size) { |
+void BrowserPluginImpl::SizeChangedDueToAutoSize( |
+ const gfx::Size& old_view_size) { |
size_changed_in_flight_ = false; |
std::map<std::string, base::Value*> props; |
@@ -278,30 +293,33 @@ void BrowserPlugin::SizeChangedDueToAutoSize(const gfx::Size& old_view_size) { |
} |
// static |
-bool BrowserPlugin::UsesDamageBuffer( |
+bool BrowserPluginImpl::UsesDamageBuffer( |
const BrowserPluginMsg_UpdateRect_Params& params) { |
return params.damage_buffer_sequence_id != 0; |
} |
-bool BrowserPlugin::UsesPendingDamageBuffer( |
+bool BrowserPluginImpl::UsesPendingDamageBuffer( |
const BrowserPluginMsg_UpdateRect_Params& params) { |
if (!pending_damage_buffer_.get()) |
return false; |
return damage_buffer_sequence_id_ == params.damage_buffer_sequence_id; |
} |
-void BrowserPlugin::OnAdvanceFocus(int instance_id, bool reverse) { |
+void BrowserPluginImpl::OnAdvanceFocus(int instance_id, bool reverse) { |
DCHECK(render_view_); |
render_view_->GetWebView()->advanceFocus(reverse); |
} |
-void BrowserPlugin::OnGuestContentWindowReady(int instance_id, |
- int content_window_routing_id) { |
+void BrowserPluginImpl::OnGuestContentWindowReady( |
+ int instance_id, |
+ int content_window_routing_id) { |
DCHECK(content_window_routing_id != MSG_ROUTING_NONE); |
content_window_routing_id_ = content_window_routing_id; |
} |
-void BrowserPlugin::OnGuestGone(int instance_id, int process_id, int status) { |
+void BrowserPluginImpl::OnGuestGone(int instance_id, |
+ int process_id, |
+ int status) { |
// We fire the event listeners before painting the sad graphic to give the |
// developer an opportunity to display an alternative overlay image on crash. |
std::string termination_status = TerminationStatusToString( |
@@ -312,7 +330,7 @@ void BrowserPlugin::OnGuestGone(int instance_id, int process_id, int status) { |
// Event listeners may remove the BrowserPlugin from the document. If that |
// happens, the BrowserPlugin will be scheduled for later deletion (see |
- // BrowserPlugin::destroy()). That will clear the container_ reference, |
+ // BrowserPluginImpl::destroy()). That will clear the container_ reference, |
// but leave other member variables valid below. |
TriggerEvent(kEventExit, &props); |
@@ -326,22 +344,22 @@ void BrowserPlugin::OnGuestGone(int instance_id, int process_id, int status) { |
container_->invalidate(); |
} |
-void BrowserPlugin::OnGuestResponsive(int instance_id, int process_id) { |
+void BrowserPluginImpl::OnGuestResponsive(int instance_id, int process_id) { |
std::map<std::string, base::Value*> props; |
props[kProcessId] = base::Value::CreateIntegerValue(process_id); |
TriggerEvent(kEventResponsive, &props); |
} |
-void BrowserPlugin::OnGuestUnresponsive(int instance_id, int process_id) { |
+void BrowserPluginImpl::OnGuestUnresponsive(int instance_id, int process_id) { |
std::map<std::string, base::Value*> props; |
props[kProcessId] = base::Value::CreateIntegerValue(process_id); |
TriggerEvent(kEventUnresponsive, &props); |
} |
-void BrowserPlugin::OnLoadAbort(int instance_id, |
- const GURL& url, |
- bool is_top_level, |
- const std::string& type) { |
+void BrowserPluginImpl::OnLoadAbort(int instance_id, |
+ const GURL& url, |
+ bool is_top_level, |
+ const std::string& type) { |
std::map<std::string, base::Value*> props; |
props[kURL] = base::Value::CreateStringValue(url.spec()); |
props[kIsTopLevel] = base::Value::CreateBooleanValue(is_top_level); |
@@ -349,7 +367,7 @@ void BrowserPlugin::OnLoadAbort(int instance_id, |
TriggerEvent(kEventLoadAbort, &props); |
} |
-void BrowserPlugin::OnLoadCommit( |
+void BrowserPluginImpl::OnLoadCommit( |
int instance_id, |
const BrowserPluginMsg_LoadCommit_Params& params) { |
// If the guest has just committed a new navigation then it is no longer |
@@ -369,10 +387,10 @@ void BrowserPlugin::OnLoadCommit( |
TriggerEvent(kEventLoadCommit, &props); |
} |
-void BrowserPlugin::OnLoadRedirect(int instance_id, |
- const GURL& old_url, |
- const GURL& new_url, |
- bool is_top_level) { |
+void BrowserPluginImpl::OnLoadRedirect(int instance_id, |
+ const GURL& old_url, |
+ const GURL& new_url, |
+ bool is_top_level) { |
std::map<std::string, base::Value*> props; |
props[kOldURL] = base::Value::CreateStringValue(old_url.spec()); |
props[kNewURL] = base::Value::CreateStringValue(new_url.spec()); |
@@ -380,9 +398,9 @@ void BrowserPlugin::OnLoadRedirect(int instance_id, |
TriggerEvent(kEventLoadRedirect, &props); |
} |
-void BrowserPlugin::OnLoadStart(int instance_id, |
- const GURL& url, |
- bool is_top_level) { |
+void BrowserPluginImpl::OnLoadStart(int instance_id, |
+ const GURL& url, |
+ bool is_top_level) { |
std::map<std::string, base::Value*> props; |
props[kURL] = base::Value::CreateStringValue(url.spec()); |
props[kIsTopLevel] = base::Value::CreateBooleanValue(is_top_level); |
@@ -390,15 +408,16 @@ void BrowserPlugin::OnLoadStart(int instance_id, |
TriggerEvent(kEventLoadStart, &props); |
} |
-void BrowserPlugin::OnLoadStop(int instance_id) { |
+void BrowserPluginImpl::OnLoadStop(int instance_id) { |
TriggerEvent(kEventLoadStop, NULL); |
} |
-void BrowserPlugin::OnSetCursor(int instance_id, const WebCursor& cursor) { |
+void BrowserPluginImpl::OnSetCursor(int instance_id, const WebCursor& cursor) { |
cursor_ = cursor; |
} |
-void BrowserPlugin::OnShouldAcceptTouchEvents(int instance_id, bool accept) { |
+void BrowserPluginImpl::OnShouldAcceptTouchEvents(int instance_id, |
+ bool accept) { |
if (container()) { |
container()->requestTouchEventType(accept ? |
WebKit::WebPluginContainer::TouchEventRequestTypeRaw : |
@@ -406,7 +425,7 @@ void BrowserPlugin::OnShouldAcceptTouchEvents(int instance_id, bool accept) { |
} |
} |
-void BrowserPlugin::OnUpdateRect( |
+void BrowserPluginImpl::OnUpdateRect( |
int instance_id, |
const BrowserPluginMsg_UpdateRect_Params& params) { |
bool use_new_damage_buffer = !backing_store_; |
@@ -439,7 +458,7 @@ void BrowserPlugin::OnUpdateRect( |
GetDamageBufferWithSizeParams(&auto_size_params, |
&resize_guest_params); |
} |
- browser_plugin_manager()->Send(new BrowserPluginHostMsg_UpdateRect_ACK( |
+ Send(new BrowserPluginHostMsg_UpdateRect_ACK( |
render_view_routing_id_, |
instance_id_, |
auto_size_params, |
@@ -464,7 +483,7 @@ void BrowserPlugin::OnUpdateRect( |
size_changed_in_flight_ = true; |
MessageLoop::current()->PostTask( |
FROM_HERE, |
- base::Bind(&BrowserPlugin::SizeChangedDueToAutoSize, |
+ base::Bind(&BrowserPluginImpl::SizeChangedDueToAutoSize, |
base::Unretained(this), |
old_view_size)); |
} |
@@ -506,14 +525,14 @@ void BrowserPlugin::OnUpdateRect( |
if (container_) |
container_->invalidate(); |
PopulateAutoSizeParameters(&auto_size_params); |
- browser_plugin_manager()->Send(new BrowserPluginHostMsg_UpdateRect_ACK( |
+ Send(new BrowserPluginHostMsg_UpdateRect_ACK( |
render_view_routing_id_, |
instance_id_, |
auto_size_params, |
resize_guest_params)); |
} |
-void BrowserPlugin::SetMaxHeightAttribute(int max_height) { |
+void BrowserPluginImpl::SetMaxHeightAttribute(int max_height) { |
if (max_height_ == max_height) |
return; |
max_height_ = max_height; |
@@ -522,7 +541,7 @@ void BrowserPlugin::SetMaxHeightAttribute(int max_height) { |
UpdateGuestAutoSizeState(); |
} |
-void BrowserPlugin::SetMaxWidthAttribute(int max_width) { |
+void BrowserPluginImpl::SetMaxWidthAttribute(int max_width) { |
if (max_width_ == max_width) |
return; |
max_width_ = max_width; |
@@ -531,7 +550,7 @@ void BrowserPlugin::SetMaxWidthAttribute(int max_width) { |
UpdateGuestAutoSizeState(); |
} |
-void BrowserPlugin::SetMinHeightAttribute(int min_height) { |
+void BrowserPluginImpl::SetMinHeightAttribute(int min_height) { |
if (min_height_ == min_height) |
return; |
min_height_ = min_height; |
@@ -540,7 +559,7 @@ void BrowserPlugin::SetMinHeightAttribute(int min_height) { |
UpdateGuestAutoSizeState(); |
} |
-void BrowserPlugin::SetMinWidthAttribute(int min_width) { |
+void BrowserPluginImpl::SetMinWidthAttribute(int min_width) { |
if (min_width_ == min_width) |
return; |
min_width_ = min_width; |
@@ -549,11 +568,11 @@ void BrowserPlugin::SetMinWidthAttribute(int min_width) { |
UpdateGuestAutoSizeState(); |
} |
-bool BrowserPlugin::InAutoSizeBounds(const gfx::Size& size) const { |
+bool BrowserPluginImpl::InAutoSizeBounds(const gfx::Size& size) const { |
return size.width() <= max_width_ && size.height() <= max_height_; |
} |
-NPObject* BrowserPlugin::GetContentWindow() const { |
+NPObject* BrowserPluginImpl::GetContentWindow() const { |
if (content_window_routing_id_ == MSG_ROUTING_NONE) |
return NULL; |
RenderViewImpl* guest_render_view = static_cast<RenderViewImpl*>( |
@@ -564,7 +583,7 @@ NPObject* BrowserPlugin::GetContentWindow() const { |
return guest_frame->windowObject(); |
} |
-std::string BrowserPlugin::GetPartitionAttribute() const { |
+std::string BrowserPluginImpl::GetPartitionAttribute() const { |
std::string value; |
if (persist_storage_) |
value.append(kPersistPrefix); |
@@ -573,17 +592,17 @@ std::string BrowserPlugin::GetPartitionAttribute() const { |
return value; |
} |
-bool BrowserPlugin::CanGoBack() const { |
+bool BrowserPluginImpl::CanGoBack() const { |
return nav_entry_count_ > 1 && current_nav_entry_index_ > 0; |
} |
-bool BrowserPlugin::CanGoForward() const { |
+bool BrowserPluginImpl::CanGoForward() const { |
return current_nav_entry_index_ >= 0 && |
current_nav_entry_index_ < (nav_entry_count_ - 1); |
} |
-bool BrowserPlugin::SetPartitionAttribute(const std::string& partition_id, |
- std::string* error_message) { |
+bool BrowserPluginImpl::SetPartitionAttribute(const std::string& partition_id, |
+ std::string* error_message) { |
if (navigate_src_sent_) { |
*error_message = kErrorAlreadyNavigated; |
return false; |
@@ -615,7 +634,7 @@ bool BrowserPlugin::SetPartitionAttribute(const std::string& partition_id, |
return true; |
} |
-void BrowserPlugin::ParseAttributes(const WebKit::WebPluginParams& params) { |
+void BrowserPluginImpl::ParseAttributes(const WebKit::WebPluginParams& params) { |
std::string src; |
// Get the src attribute from the attributes vector |
@@ -635,14 +654,15 @@ void BrowserPlugin::ParseAttributes(const WebKit::WebPluginParams& params) { |
SetSrcAttribute(src, &error); |
} |
-float BrowserPlugin::GetDeviceScaleFactor() const { |
+float BrowserPluginImpl::GetDeviceScaleFactor() const { |
if (!render_view_) |
return 1.0f; |
return render_view_->GetWebView()->deviceScaleFactor(); |
} |
-void BrowserPlugin::TriggerEvent(const std::string& event_name, |
- std::map<std::string, base::Value*>* props) { |
+void BrowserPluginImpl::TriggerEvent( |
+ const std::string& event_name, |
+ std::map<std::string, base::Value*>* props) { |
if (!container() || !container()->element().document().frame()) |
return; |
v8::HandleScope handle_scope; |
@@ -677,56 +697,50 @@ void BrowserPlugin::TriggerEvent(const std::string& event_name, |
container()->element().dispatchEvent(event); |
} |
-void BrowserPlugin::Back() { |
+void BrowserPluginImpl::Back() { |
if (!navigate_src_sent_) |
return; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_Go(render_view_routing_id_, |
- instance_id_, -1)); |
+ Send(new BrowserPluginHostMsg_Go(render_view_routing_id_, |
+ instance_id_, -1)); |
} |
-void BrowserPlugin::Forward() { |
+void BrowserPluginImpl::Forward() { |
if (!navigate_src_sent_) |
return; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_Go(render_view_routing_id_, |
- instance_id_, 1)); |
+ Send(new BrowserPluginHostMsg_Go(render_view_routing_id_, |
+ instance_id_, 1)); |
} |
-void BrowserPlugin::Go(int relative_index) { |
+void BrowserPluginImpl::Go(int relative_index) { |
if (!navigate_src_sent_) |
return; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_Go(render_view_routing_id_, |
- instance_id_, |
- relative_index)); |
+ Send(new BrowserPluginHostMsg_Go(render_view_routing_id_, |
+ instance_id_, |
+ relative_index)); |
} |
-void BrowserPlugin::TerminateGuest() { |
+void BrowserPluginImpl::TerminateGuest() { |
if (!navigate_src_sent_) |
return; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_TerminateGuest(render_view_routing_id_, |
- instance_id_)); |
+ Send(new BrowserPluginHostMsg_TerminateGuest(render_view_routing_id_, |
+ instance_id_)); |
} |
-void BrowserPlugin::Stop() { |
+void BrowserPluginImpl::Stop() { |
if (!navigate_src_sent_) |
return; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_Stop(render_view_routing_id_, |
- instance_id_)); |
+ Send(new BrowserPluginHostMsg_Stop(render_view_routing_id_, |
+ instance_id_)); |
} |
-void BrowserPlugin::Reload() { |
+void BrowserPluginImpl::Reload() { |
if (!navigate_src_sent_) |
return; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_Reload(render_view_routing_id_, |
- instance_id_)); |
+ Send(new BrowserPluginHostMsg_Reload(render_view_routing_id_, |
+ instance_id_)); |
} |
-void BrowserPlugin::SetEmbedderFocus(bool focused) { |
+void BrowserPluginImpl::SetEmbedderFocus(bool focused) { |
if (embedder_focused_ == focused) |
return; |
@@ -737,31 +751,31 @@ void BrowserPlugin::SetEmbedderFocus(bool focused) { |
UpdateGuestFocusState(); |
} |
-void BrowserPlugin::UpdateGuestFocusState() { |
+void BrowserPluginImpl::UpdateGuestFocusState() { |
if (!navigate_src_sent_) |
return; |
bool should_be_focused = ShouldGuestBeFocused(); |
- browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetFocus( |
+ Send(new BrowserPluginHostMsg_SetFocus( |
render_view_routing_id_, |
instance_id_, |
should_be_focused)); |
} |
-bool BrowserPlugin::ShouldGuestBeFocused() const { |
+bool BrowserPluginImpl::ShouldGuestBeFocused() const { |
return plugin_focused_ && embedder_focused_; |
} |
-WebKit::WebPluginContainer* BrowserPlugin::container() const { |
+WebKit::WebPluginContainer* BrowserPluginImpl::container() const { |
return container_; |
} |
-bool BrowserPlugin::initialize(WebPluginContainer* container) { |
+bool BrowserPluginImpl::initialize(WebPluginContainer* container) { |
container_ = container; |
container_->setWantsWheelEvents(true); |
return true; |
} |
-void BrowserPlugin::EnableCompositing(bool enable) { |
+void BrowserPluginImpl::EnableCompositing(bool enable) { |
if (enable) { |
LOG(ERROR) << "BrowserPlugin compositing not yet implemented."; |
return; |
@@ -770,33 +784,34 @@ void BrowserPlugin::EnableCompositing(bool enable) { |
compositing_enabled_ = enable; |
} |
-void BrowserPlugin::destroy() { |
+void BrowserPluginImpl::destroy() { |
// The BrowserPlugin's WebPluginContainer is deleted immediately after this |
// call returns, so let's not keep a reference to it around. |
container_ = NULL; |
+ FOR_EACH_OBSERVER(BrowserPluginObserver, observers_, BrowserPluginGone()); |
+ FOR_EACH_OBSERVER(BrowserPluginObserver, observers_, OnDestruct()); |
MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
} |
-NPObject* BrowserPlugin::scriptableObject() { |
+NPObject* BrowserPluginImpl::scriptableObject() { |
NPObject* browser_plugin_np_object(bindings_->np_object()); |
// The object is expected to be retained before it is returned. |
WebKit::WebBindings::retainObject(browser_plugin_np_object); |
return browser_plugin_np_object; |
} |
-bool BrowserPlugin::supportsKeyboardFocus() const { |
+bool BrowserPluginImpl::supportsKeyboardFocus() const { |
return true; |
} |
-bool BrowserPlugin::canProcessDrag() const { |
+bool BrowserPluginImpl::canProcessDrag() const { |
return true; |
} |
-void BrowserPlugin::paint(WebCanvas* canvas, const WebRect& rect) { |
+void BrowserPluginImpl::paint(WebCanvas* canvas, const WebRect& rect) { |
if (guest_crashed_) { |
if (!sad_guest_) // Lazily initialize bitmap. |
- sad_guest_ = content::GetContentClient()->renderer()-> |
- GetSadWebViewBitmap(); |
+ sad_guest_ = GetContentClient()->renderer()->GetSadWebViewBitmap(); |
// content_shell does not have the sad plugin bitmap, so we'll paint black |
// instead to make it clear that something went wrong. |
if (sad_guest_) { |
@@ -827,7 +842,7 @@ void BrowserPlugin::paint(WebCanvas* canvas, const WebRect& rect) { |
canvas->drawBitmap(backing_store_->GetBitmap(), 0, 0); |
} |
-bool BrowserPlugin::InBounds(const gfx::Point& position) const { |
+bool BrowserPluginImpl::InBounds(const gfx::Point& position) const { |
// Note that even for plugins that are rotated using rotate transformations, |
// we use the the |plugin_rect_| provided by updateGeometry, which means we |
// will be off if |position| is within the plugin rect but does not fall |
@@ -842,13 +857,32 @@ bool BrowserPlugin::InBounds(const gfx::Point& position) const { |
return result; |
} |
-gfx::Point BrowserPlugin::ToLocalCoordinates(const gfx::Point& point) const { |
+void BrowserPluginImpl::AddMethodBinding( |
+ BrowserPluginMethodBinding* method_binding) { |
+ bindings_->AddMethodBinding(method_binding); |
+} |
+ |
+void BrowserPluginImpl::AddPropertyBinding( |
+ BrowserPluginPropertyBinding* method_binding) { |
+ bindings_->AddPropertyBinding(method_binding); |
+} |
+ |
+bool BrowserPluginImpl::Send(IPC::Message* message) { |
+ return browser_plugin_manager()->Send(message); |
+} |
+ |
+void BrowserPluginImpl::RequestMessage(uint32 message_id) { |
+ browser_plugin_manager()->RequestMessage(message_id); |
+} |
+ |
+gfx::Point BrowserPluginImpl::ToLocalCoordinates( |
+ const gfx::Point& point) const { |
if (container_) |
return container_->windowToLocalPoint(WebKit::WebPoint(point)); |
return gfx::Point(point.x() - plugin_rect_.x(), point.y() - plugin_rect_.y()); |
} |
-void BrowserPlugin::updateGeometry( |
+void BrowserPluginImpl::updateGeometry( |
const WebRect& window_rect, |
const WebRect& clip_rect, |
const WebVector<WebRect>& cut_outs_rects, |
@@ -869,18 +903,18 @@ void BrowserPlugin::updateGeometry( |
BrowserPluginHostMsg_ResizeGuest_Params params; |
PopulateResizeGuestParameters(¶ms, gfx::Size(width(), height())); |
resize_ack_received_ = false; |
- browser_plugin_manager()->Send(new BrowserPluginHostMsg_ResizeGuest( |
+ Send(new BrowserPluginHostMsg_ResizeGuest( |
render_view_routing_id_, |
instance_id_, |
params)); |
} |
-void BrowserPlugin::SwapDamageBuffers() { |
+void BrowserPluginImpl::SwapDamageBuffers() { |
current_damage_buffer_.reset(pending_damage_buffer_.release()); |
resize_ack_received_ = true; |
} |
-void BrowserPlugin::PopulateResizeGuestParameters( |
+void BrowserPluginImpl::PopulateResizeGuestParameters( |
BrowserPluginHostMsg_ResizeGuest_Params* params, |
const gfx::Size& view_size) { |
params->view_size = view_size; |
@@ -908,7 +942,7 @@ void BrowserPlugin::PopulateResizeGuestParameters( |
params->damage_buffer_sequence_id = ++damage_buffer_sequence_id_; |
} |
-void BrowserPlugin::GetDamageBufferWithSizeParams( |
+void BrowserPluginImpl::GetDamageBufferWithSizeParams( |
BrowserPluginHostMsg_AutoSize_Params* auto_size_params, |
BrowserPluginHostMsg_ResizeGuest_Params* resize_guest_params) { |
PopulateAutoSizeParameters(auto_size_params); |
@@ -921,7 +955,7 @@ void BrowserPlugin::GetDamageBufferWithSizeParams( |
} |
#if defined(OS_POSIX) |
-base::SharedMemory* BrowserPlugin::CreateDamageBuffer( |
+base::SharedMemory* BrowserPluginImpl::CreateDamageBuffer( |
const size_t size, |
base::SharedMemoryHandle* damage_buffer_handle) { |
scoped_ptr<base::SharedMemory> shared_buf( |
@@ -950,7 +984,6 @@ base::SharedMemory* BrowserPlugin::CreateDamageBuffer( |
NOTREACHED() << "Buffer allocation failed"; |
return NULL; |
} |
- |
// Insert the magic word. |
*static_cast<unsigned int*>(shared_buf->memory()) = 0xdeadbeef; |
if (shared_buf->ShareToProcess(base::GetCurrentProcessHandle(), |
@@ -961,7 +994,7 @@ base::SharedMemory* BrowserPlugin::CreateDamageBuffer( |
} |
#endif |
-void BrowserPlugin::updateFocus(bool focused) { |
+void BrowserPluginImpl::updateFocus(bool focused) { |
if (plugin_focused_ == focused) |
return; |
@@ -972,7 +1005,7 @@ void BrowserPlugin::updateFocus(bool focused) { |
UpdateGuestFocusState(); |
} |
-void BrowserPlugin::updateVisibility(bool visible) { |
+void BrowserPluginImpl::updateVisibility(bool visible) { |
if (visible_ == visible) |
return; |
@@ -980,66 +1013,65 @@ void BrowserPlugin::updateVisibility(bool visible) { |
if (!navigate_src_sent_) |
return; |
- browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetVisibility( |
+ Send(new BrowserPluginHostMsg_SetVisibility( |
render_view_routing_id_, |
instance_id_, |
visible)); |
} |
-bool BrowserPlugin::acceptsInputEvents() { |
+bool BrowserPluginImpl::acceptsInputEvents() { |
return true; |
} |
-bool BrowserPlugin::handleInputEvent(const WebKit::WebInputEvent& event, |
- WebKit::WebCursorInfo& cursor_info) { |
+bool BrowserPluginImpl::handleInputEvent(const WebKit::WebInputEvent& event, |
+ WebKit::WebCursorInfo& cursor_info) { |
if (guest_crashed_ || !navigate_src_sent_ || |
event.type == WebKit::WebInputEvent::ContextMenu) |
return false; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, |
- instance_id_, |
- plugin_rect_, |
- &event)); |
+ Send(new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, |
+ instance_id_, |
+ plugin_rect_, |
+ &event)); |
cursor_.GetCursorInfo(&cursor_info); |
return true; |
} |
-bool BrowserPlugin::handleDragStatusUpdate(WebKit::WebDragStatus drag_status, |
- const WebKit::WebDragData& drag_data, |
- WebKit::WebDragOperationsMask mask, |
- const WebKit::WebPoint& position, |
- const WebKit::WebPoint& screen) { |
+bool BrowserPluginImpl::handleDragStatusUpdate( |
+ WebKit::WebDragStatus drag_status, |
+ const WebKit::WebDragData& drag_data, |
+ WebKit::WebDragOperationsMask mask, |
+ const WebKit::WebPoint& position, |
+ const WebKit::WebPoint& screen) { |
if (guest_crashed_ || !navigate_src_sent_) |
return false; |
- browser_plugin_manager()->Send( |
- new BrowserPluginHostMsg_DragStatusUpdate( |
- render_view_routing_id_, |
- instance_id_, |
- drag_status, |
- WebDropData(drag_data), |
- mask, |
- position)); |
+ Send(new BrowserPluginHostMsg_DragStatusUpdate( |
+ render_view_routing_id_, |
+ instance_id_, |
+ drag_status, |
+ WebDropData(drag_data), |
+ mask, |
+ position)); |
return false; |
} |
-void BrowserPlugin::didReceiveResponse( |
+void BrowserPluginImpl::didReceiveResponse( |
const WebKit::WebURLResponse& response) { |
} |
-void BrowserPlugin::didReceiveData(const char* data, int data_length) { |
+void BrowserPluginImpl::didReceiveData(const char* data, int data_length) { |
} |
-void BrowserPlugin::didFinishLoading() { |
+void BrowserPluginImpl::didFinishLoading() { |
} |
-void BrowserPlugin::didFailLoading(const WebKit::WebURLError& error) { |
+void BrowserPluginImpl::didFailLoading(const WebKit::WebURLError& error) { |
} |
-void BrowserPlugin::didFinishLoadingFrameRequest(const WebKit::WebURL& url, |
- void* notify_data) { |
+void BrowserPluginImpl::didFinishLoadingFrameRequest(const WebKit::WebURL& url, |
+ void* notify_data) { |
} |
-void BrowserPlugin::didFailLoadingFrameRequest( |
+void BrowserPluginImpl::didFailLoadingFrameRequest( |
const WebKit::WebURL& url, |
void* notify_data, |
const WebKit::WebURLError& error) { |