Index: content/renderer/browser_plugin/browser_plugin.cc |
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc |
index 94ff36e60c5d50b1818deb046701f03da94e640f..33885c522e2c14c2f93d29a63ff05824c784b6b1 100644 |
--- a/content/renderer/browser_plugin/browser_plugin.cc |
+++ b/content/renderer/browser_plugin/browser_plugin.cc |
@@ -60,6 +60,8 @@ BrowserPlugin::BrowserPlugin(RenderViewImpl* render_view, |
visible_(true), |
auto_navigate_(auto_navigate), |
mouse_locked_(false), |
+ attach_called_(false), |
+ seen_src_(false), |
browser_plugin_manager_(render_view->GetBrowserPluginManager()), |
embedder_frame_url_(frame->document().url()), |
weak_ptr_factory_(this) { |
@@ -265,6 +267,13 @@ void BrowserPlugin::UpdateGuestAutoSizeState(bool auto_size_enabled) { |
resize_guest_params)); |
} |
+void BrowserPlugin::AttachToPlugin( |
+ int instance_id) { |
+ attach_called_ = true; |
+ pending_instance_id_ = instance_id; |
+ MaybeAttach(); |
+} |
+ |
void BrowserPlugin::Attach(int guest_instance_id, |
scoped_ptr<base::DictionaryValue> extra_params) { |
CHECK(guest_instance_id != browser_plugin::kInstanceIDNone); |
@@ -861,9 +870,20 @@ void BrowserPlugin::didReceiveData(const char* data, int data_length) { |
} |
void BrowserPlugin::didFinishLoading() { |
+ printf("html_string_: %s\n", html_string_.c_str()); |
if (auto_navigate_) { |
- // TODO(lazyboy): Make |auto_navigate_| stuff work. |
- UpdateDOMAttribute(content::browser_plugin::kAttributeSrc, html_string_); |
+ seen_src_ = true; |
+ MaybeAttach(); |
+ } |
+} |
+ |
+void BrowserPlugin::MaybeAttach() { |
+ printf("MaybeAttach: seen_src_ = %d, attach_called_: %d, pending: %d\n", |
+ seen_src_, attach_called_, pending_instance_id_); |
+ if (seen_src_ && attach_called_) { |
+ base::DictionaryValue* extra_params = new base::DictionaryValue(); |
+ extra_params->SetString("src", html_string_); |
+ Attach(pending_instance_id_, make_scoped_ptr(extra_params)); |
} |
} |