Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: content/renderer/browser_plugin/browser_plugin.cc

Issue 11554030: <webview>: Add name attribute (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged with ToT Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/browser_plugin/browser_plugin.h" 5 #include "content/renderer/browser_plugin/browser_plugin.h"
6 6
7 #include "base/json/json_string_value_serializer.h" 7 #include "base/json/json_string_value_serializer.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 const char kEventLoadCommit[] = "loadcommit"; 53 const char kEventLoadCommit[] = "loadcommit";
54 const char kEventLoadRedirect[] = "loadredirect"; 54 const char kEventLoadRedirect[] = "loadredirect";
55 const char kEventLoadStart[] = "loadstart"; 55 const char kEventLoadStart[] = "loadstart";
56 const char kEventLoadStop[] = "loadstop"; 56 const char kEventLoadStop[] = "loadstop";
57 const char kEventResponsive[] = "responsive"; 57 const char kEventResponsive[] = "responsive";
58 const char kEventSizeChanged[] = "sizechanged"; 58 const char kEventSizeChanged[] = "sizechanged";
59 const char kEventUnresponsive[] = "unresponsive"; 59 const char kEventUnresponsive[] = "unresponsive";
60 60
61 // Parameters/properties on events. 61 // Parameters/properties on events.
62 const char kIsTopLevel[] = "isTopLevel"; 62 const char kIsTopLevel[] = "isTopLevel";
63 const char kName[] = "name";
63 const char kNewURL[] = "newUrl"; 64 const char kNewURL[] = "newUrl";
64 const char kNewHeight[] = "newHeight"; 65 const char kNewHeight[] = "newHeight";
65 const char kNewWidth[] = "newWidth"; 66 const char kNewWidth[] = "newWidth";
66 const char kOldURL[] = "oldUrl"; 67 const char kOldURL[] = "oldUrl";
67 const char kOldHeight[] = "oldHeight"; 68 const char kOldHeight[] = "oldHeight";
68 const char kOldWidth[] = "oldWidth"; 69 const char kOldWidth[] = "oldWidth";
69 const char kPartition[] = "partition"; 70 const char kPartition[] = "partition";
70 const char kPersistPrefix[] = "persist:"; 71 const char kPersistPrefix[] = "persist:";
71 const char kProcessId[] = "processId"; 72 const char kProcessId[] = "processId";
72 const char kReason[] = "reason"; 73 const char kReason[] = "reason";
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestContentWindowReady, 150 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestContentWindowReady,
150 OnGuestContentWindowReady) 151 OnGuestContentWindowReady)
151 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestGone, OnGuestGone) 152 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestGone, OnGuestGone)
152 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestResponsive, OnGuestResponsive) 153 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestResponsive, OnGuestResponsive)
153 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestUnresponsive, OnGuestUnresponsive) 154 IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestUnresponsive, OnGuestUnresponsive)
154 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadAbort, OnLoadAbort) 155 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadAbort, OnLoadAbort)
155 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadCommit, OnLoadCommit) 156 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadCommit, OnLoadCommit)
156 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadRedirect, OnLoadRedirect) 157 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadRedirect, OnLoadRedirect)
157 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadStart, OnLoadStart) 158 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadStart, OnLoadStart)
158 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadStop, OnLoadStop) 159 IPC_MESSAGE_HANDLER(BrowserPluginMsg_LoadStop, OnLoadStop)
160 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetCursor, OnSetCursor)
159 IPC_MESSAGE_HANDLER(BrowserPluginMsg_ShouldAcceptTouchEvents, 161 IPC_MESSAGE_HANDLER(BrowserPluginMsg_ShouldAcceptTouchEvents,
160 OnShouldAcceptTouchEvents) 162 OnShouldAcceptTouchEvents)
161 IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetCursor, OnSetCursor) 163 IPC_MESSAGE_HANDLER(BrowserPluginMsg_UpdatedName, OnUpdatedName)
162 IPC_MESSAGE_HANDLER(BrowserPluginMsg_UpdateRect, OnUpdateRect) 164 IPC_MESSAGE_HANDLER(BrowserPluginMsg_UpdateRect, OnUpdateRect)
163 IPC_MESSAGE_UNHANDLED(handled = false) 165 IPC_MESSAGE_UNHANDLED(handled = false)
164 IPC_END_MESSAGE_MAP() 166 IPC_END_MESSAGE_MAP()
165 return handled; 167 return handled;
166 } 168 }
167 169
168 void BrowserPlugin::UpdateDOMAttribute( 170 void BrowserPlugin::UpdateDOMAttribute(
169 const std::string& attribute_name, 171 const std::string& attribute_name,
170 const std::string& attribute_value) { 172 const std::string& attribute_value) {
171 if (!container()) 173 if (!container())
172 return; 174 return;
173 175
174 WebKit::WebElement element = container()->element(); 176 WebKit::WebElement element = container()->element();
175 WebKit::WebString web_attribute_name = 177 WebKit::WebString web_attribute_name =
176 WebKit::WebString::fromUTF8(attribute_name); 178 WebKit::WebString::fromUTF8(attribute_name);
177 std::string current_value(element.getAttribute(web_attribute_name).utf8()); 179 std::string current_value(element.getAttribute(web_attribute_name).utf8());
178 if (current_value == attribute_value) 180 if (current_value == attribute_value)
179 return; 181 return;
180 182
181 if (attribute_value.empty()) { 183 if (attribute_value.empty()) {
182 element.removeAttribute(web_attribute_name); 184 element.removeAttribute(web_attribute_name);
183 } else { 185 } else {
184 element.setAttribute(web_attribute_name, 186 element.setAttribute(web_attribute_name,
185 WebKit::WebString::fromUTF8(attribute_value)); 187 WebKit::WebString::fromUTF8(attribute_value));
186 } 188 }
187 } 189 }
188 190
191 void BrowserPlugin::SetNameAttribute(const std::string& name) {
192 if (name_ == name)
193 return;
194
195 name_ = name;
196 if (!navigate_src_sent_)
197 return;
198
199 browser_plugin_manager()->Send(
200 new BrowserPluginHostMsg_SetName(
201 render_view_routing_id_,
202 instance_id_,
203 name));
204 }
205
189 bool BrowserPlugin::SetSrcAttribute(const std::string& src, 206 bool BrowserPlugin::SetSrcAttribute(const std::string& src,
190 std::string* error_message) { 207 std::string* error_message) {
191 if (!valid_partition_id_) { 208 if (!valid_partition_id_) {
192 *error_message = kErrorInvalidPartition; 209 *error_message = kErrorInvalidPartition;
193 return false; 210 return false;
194 } 211 }
195 212
196 if (src.empty() || (src == src_ && !guest_crashed_)) 213 if (src.empty() || (src == src_ && !guest_crashed_))
197 return true; 214 return true;
198 215
199 // If we haven't created the guest yet, do so now. We will navigate it right 216 // If we haven't created the guest yet, do so now. We will navigate it right
200 // after creation. If |src| is empty, we can delay the creation until we 217 // after creation. If |src| is empty, we can delay the creation until we
201 // actually need it. 218 // actually need it.
202 if (!navigate_src_sent_) { 219 if (!navigate_src_sent_) {
203 BrowserPluginHostMsg_CreateGuest_Params create_guest_params; 220 BrowserPluginHostMsg_CreateGuest_Params create_guest_params;
204 create_guest_params.storage_partition_id = storage_partition_id_; 221 create_guest_params.storage_partition_id = storage_partition_id_;
205 create_guest_params.persist_storage = persist_storage_; 222 create_guest_params.persist_storage = persist_storage_;
206 create_guest_params.focused = ShouldGuestBeFocused(); 223 create_guest_params.focused = ShouldGuestBeFocused();
207 create_guest_params.visible = visible_; 224 create_guest_params.visible = visible_;
225 create_guest_params.name = name_;
208 GetDamageBufferWithSizeParams(&create_guest_params.auto_size_params, 226 GetDamageBufferWithSizeParams(&create_guest_params.auto_size_params,
209 &create_guest_params.resize_guest_params); 227 &create_guest_params.resize_guest_params);
210 browser_plugin_manager()->Send( 228 browser_plugin_manager()->Send(
211 new BrowserPluginHostMsg_CreateGuest( 229 new BrowserPluginHostMsg_CreateGuest(
212 render_view_routing_id_, 230 render_view_routing_id_,
213 instance_id_, 231 instance_id_,
214 create_guest_params)); 232 create_guest_params));
215 } 233 }
216 234
217 browser_plugin_manager()->Send( 235 browser_plugin_manager()->Send(
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 } 417 }
400 418
401 void BrowserPlugin::OnShouldAcceptTouchEvents(int instance_id, bool accept) { 419 void BrowserPlugin::OnShouldAcceptTouchEvents(int instance_id, bool accept) {
402 if (container()) { 420 if (container()) {
403 container()->requestTouchEventType(accept ? 421 container()->requestTouchEventType(accept ?
404 WebKit::WebPluginContainer::TouchEventRequestTypeRaw : 422 WebKit::WebPluginContainer::TouchEventRequestTypeRaw :
405 WebKit::WebPluginContainer::TouchEventRequestTypeNone); 423 WebKit::WebPluginContainer::TouchEventRequestTypeNone);
406 } 424 }
407 } 425 }
408 426
427 void BrowserPlugin::OnUpdatedName(int instance_id, const std::string& name) {
428 name_ = name;
429 UpdateDOMAttribute(kName, name);
430 }
431
409 void BrowserPlugin::OnUpdateRect( 432 void BrowserPlugin::OnUpdateRect(
410 int instance_id, 433 int instance_id,
411 const BrowserPluginMsg_UpdateRect_Params& params) { 434 const BrowserPluginMsg_UpdateRect_Params& params) {
412 bool use_new_damage_buffer = !backing_store_; 435 bool use_new_damage_buffer = !backing_store_;
413 BrowserPluginHostMsg_AutoSize_Params auto_size_params; 436 BrowserPluginHostMsg_AutoSize_Params auto_size_params;
414 BrowserPluginHostMsg_ResizeGuest_Params resize_guest_params; 437 BrowserPluginHostMsg_ResizeGuest_Params resize_guest_params;
415 // If we have a pending damage buffer, and the guest has begun to use the 438 // If we have a pending damage buffer, and the guest has begun to use the
416 // damage buffer then we know the guest will no longer use the current 439 // damage buffer then we know the guest will no longer use the current
417 // damage buffer. At this point, we drop the current damage buffer, and 440 // damage buffer. At this point, we drop the current damage buffer, and
418 // mark the pending damage buffer as the current damage buffer. 441 // mark the pending damage buffer as the current damage buffer.
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 void* notify_data) { 1062 void* notify_data) {
1040 } 1063 }
1041 1064
1042 void BrowserPlugin::didFailLoadingFrameRequest( 1065 void BrowserPlugin::didFailLoadingFrameRequest(
1043 const WebKit::WebURL& url, 1066 const WebKit::WebURL& url,
1044 void* notify_data, 1067 void* notify_data,
1045 const WebKit::WebURLError& error) { 1068 const WebKit::WebURLError& error) {
1046 } 1069 }
1047 1070
1048 } // namespace content 1071 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin.h ('k') | content/renderer/browser_plugin/browser_plugin_bindings.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698