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

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

Issue 19679002: <webview>: Implement dialog API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added more tests and fixed a bug Created 7 years, 5 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/command_line.h" 7 #include "base/command_line.h"
8 #include "base/json/json_string_value_serializer.h" 8 #include "base/json/json_string_value_serializer.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 } 502 }
503 503
504 void BrowserPlugin::OnRequestPermission( 504 void BrowserPlugin::OnRequestPermission(
505 int guest_instance_id, 505 int guest_instance_id,
506 BrowserPluginPermissionType permission_type, 506 BrowserPluginPermissionType permission_type,
507 int request_id, 507 int request_id,
508 const base::DictionaryValue& request_info) { 508 const base::DictionaryValue& request_info) {
509 // The New Window API is very similiar to the permission API in structure, 509 // The New Window API is very similiar to the permission API in structure,
510 // but exposes a slightly different interface to the developer and so we put 510 // but exposes a slightly different interface to the developer and so we put
511 // it in a separate event. 511 // it in a separate event.
512 const char* event_name = 512 const char* event_name = NULL;
513 (permission_type == BrowserPluginPermissionTypeNewWindow) ? 513 if (permission_type == BrowserPluginPermissionTypeNewWindow) {
514 browser_plugin::kEventNewWindow : 514 event_name = browser_plugin::kEventNewWindow;
515 browser_plugin::kEventRequestPermission; 515 } else if (permission_type == BrowserPluginPermissionTypeJavaScriptDialog) {
516 516 event_name = browser_plugin::kEventDialog;
517 } else {
518 event_name = browser_plugin::kEventRequestPermission;
519 }
517 AddPermissionRequestToMap(request_id, permission_type); 520 AddPermissionRequestToMap(request_id, permission_type);
518 521
519 std::map<std::string, base::Value*> props; 522 std::map<std::string, base::Value*> props;
520 props[browser_plugin::kPermission] = 523 props[browser_plugin::kPermission] =
521 base::Value::CreateStringValue(PermissionTypeToString(permission_type)); 524 base::Value::CreateStringValue(PermissionTypeToString(permission_type));
522 props[browser_plugin::kRequestId] = 525 props[browser_plugin::kRequestId] =
523 base::Value::CreateIntegerValue(request_id); 526 base::Value::CreateIntegerValue(request_id);
524 527
525 // Fill in the info provided by the browser. 528 // Fill in the info provided by the browser.
526 for (DictionaryValue::Iterator iter(request_info); !iter.IsAtEnd(); 529 for (DictionaryValue::Iterator iter(request_info); !iter.IsAtEnd();
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 if (render_view_.get()) 967 if (render_view_.get())
965 embedder_focused = render_view_->has_focus(); 968 embedder_focused = render_view_->has_focus();
966 return plugin_focused_ && embedder_focused; 969 return plugin_focused_ && embedder_focused;
967 } 970 }
968 971
969 WebKit::WebPluginContainer* BrowserPlugin::container() const { 972 WebKit::WebPluginContainer* BrowserPlugin::container() const {
970 return container_; 973 return container_;
971 } 974 }
972 975
973 void BrowserPlugin::RespondPermission( 976 void BrowserPlugin::RespondPermission(
974 BrowserPluginPermissionType permission_type, int request_id, bool allow) { 977 BrowserPluginPermissionType permission_type,
978 int request_id,
979 bool allow,
980 const std::string& user_input) {
975 if (permission_type == BrowserPluginPermissionTypePointerLock) 981 if (permission_type == BrowserPluginPermissionTypePointerLock)
976 RespondPermissionPointerLock(allow); 982 RespondPermissionPointerLock(allow);
977 else 983 else
978 browser_plugin_manager()->Send( 984 browser_plugin_manager()->Send(
979 new BrowserPluginHostMsg_RespondPermission( 985 new BrowserPluginHostMsg_RespondPermission(
980 render_view_routing_id_, guest_instance_id_, permission_type, 986 render_view_routing_id_, guest_instance_id_,
981 request_id, allow)); 987 request_id, allow, user_input));
982 } 988 }
983 989
984 void BrowserPlugin::RespondPermissionPointerLock(bool allow) { 990 void BrowserPlugin::RespondPermissionPointerLock(bool allow) {
985 if (allow) 991 if (allow)
986 render_view_->mouse_lock_dispatcher()->LockMouse(this); 992 render_view_->mouse_lock_dispatcher()->LockMouse(this);
987 else 993 else
988 OnLockMouseACK(false); 994 OnLockMouseACK(false);
989 } 995 }
990 996
991 void BrowserPlugin::RespondPermissionIfRequestIsPending( 997 void BrowserPlugin::RespondPermissionIfRequestIsPending(
992 int request_id, bool allow) { 998 int request_id, bool allow, const std::string& user_input) {
993 PendingPermissionRequests::iterator iter = 999 PendingPermissionRequests::iterator iter =
994 pending_permission_requests_.find(request_id); 1000 pending_permission_requests_.find(request_id);
995 if (iter == pending_permission_requests_.end()) 1001 if (iter == pending_permission_requests_.end())
996 return; 1002 return;
997 1003
998 BrowserPluginPermissionType permission_type = iter->second; 1004 BrowserPluginPermissionType permission_type = iter->second;
999 pending_permission_requests_.erase(iter); 1005 pending_permission_requests_.erase(iter);
1000 RespondPermission(permission_type, request_id, allow); 1006 RespondPermission(permission_type, request_id, allow, user_input);
1001 } 1007 }
1002 1008
1003 void BrowserPlugin::OnEmbedderDecidedPermission(int request_id, bool allow) { 1009 void BrowserPlugin::OnEmbedderDecidedPermission(int request_id,
1004 RespondPermissionIfRequestIsPending(request_id, allow); 1010 bool allow,
1011 const std::string& user_input) {
1012 RespondPermissionIfRequestIsPending(request_id, allow, user_input);
1005 } 1013 }
1006 1014
1007 bool BrowserPlugin::initialize(WebPluginContainer* container) { 1015 bool BrowserPlugin::initialize(WebPluginContainer* container) {
1008 if (!container) 1016 if (!container)
1009 return false; 1017 return false;
1010 1018
1011 if (!GetContentClient()->renderer()->AllowBrowserPlugin(container)) 1019 if (!GetContentClient()->renderer()->AllowBrowserPlugin(container))
1012 return false; 1020 return false;
1013 1021
1014 // Tell |container| to allow this plugin to use script objects. 1022 // Tell |container| to allow this plugin to use script objects.
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
1463 const WebKit::WebMouseEvent& event) { 1471 const WebKit::WebMouseEvent& event) {
1464 browser_plugin_manager()->Send( 1472 browser_plugin_manager()->Send(
1465 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, 1473 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_,
1466 guest_instance_id_, 1474 guest_instance_id_,
1467 plugin_rect_, 1475 plugin_rect_,
1468 &event)); 1476 &event));
1469 return true; 1477 return true;
1470 } 1478 }
1471 1479
1472 } // namespace content 1480 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698