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

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: Describes |user_input| 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/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 } 496 }
497 497
498 void BrowserPlugin::OnRequestPermission( 498 void BrowserPlugin::OnRequestPermission(
499 int guest_instance_id, 499 int guest_instance_id,
500 BrowserPluginPermissionType permission_type, 500 BrowserPluginPermissionType permission_type,
501 int request_id, 501 int request_id,
502 const base::DictionaryValue& request_info) { 502 const base::DictionaryValue& request_info) {
503 // The New Window API is very similiar to the permission API in structure, 503 // The New Window API is very similiar to the permission API in structure,
504 // but exposes a slightly different interface to the developer and so we put 504 // but exposes a slightly different interface to the developer and so we put
505 // it in a separate event. 505 // it in a separate event.
506 const char* event_name = 506 const char* event_name = NULL;
507 (permission_type == BrowserPluginPermissionTypeNewWindow) ? 507 if (permission_type == BrowserPluginPermissionTypeNewWindow) {
508 browser_plugin::kEventNewWindow : 508 event_name = browser_plugin::kEventNewWindow;
509 browser_plugin::kEventRequestPermission; 509 } else if (permission_type == BrowserPluginPermissionTypeJavaScriptDialog) {
510 510 event_name = browser_plugin::kEventDialog;
511 } else {
512 event_name = browser_plugin::kEventRequestPermission;
513 }
511 AddPermissionRequestToSet(request_id); 514 AddPermissionRequestToSet(request_id);
512 515
513 std::map<std::string, base::Value*> props; 516 std::map<std::string, base::Value*> props;
514 props[browser_plugin::kPermission] = 517 props[browser_plugin::kPermission] =
515 base::Value::CreateStringValue(PermissionTypeToString(permission_type)); 518 base::Value::CreateStringValue(PermissionTypeToString(permission_type));
516 props[browser_plugin::kRequestId] = 519 props[browser_plugin::kRequestId] =
517 base::Value::CreateIntegerValue(request_id); 520 base::Value::CreateIntegerValue(request_id);
518 521
519 // Fill in the info provided by the browser. 522 // Fill in the info provided by the browser.
520 for (DictionaryValue::Iterator iter(request_info); !iter.IsAtEnd(); 523 for (DictionaryValue::Iterator iter(request_info); !iter.IsAtEnd();
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 bool embedder_focused = false; 970 bool embedder_focused = false;
968 if (render_view_.get()) 971 if (render_view_.get())
969 embedder_focused = render_view_->has_focus(); 972 embedder_focused = render_view_->has_focus();
970 return plugin_focused_ && embedder_focused; 973 return plugin_focused_ && embedder_focused;
971 } 974 }
972 975
973 WebKit::WebPluginContainer* BrowserPlugin::container() const { 976 WebKit::WebPluginContainer* BrowserPlugin::container() const {
974 return container_; 977 return container_;
975 } 978 }
976 979
977 void BrowserPlugin::RespondPermission(int request_id, bool allow) { 980 void BrowserPlugin::RespondPermission(
981 int request_id, bool allow, const std::string& user_input) {
978 browser_plugin_manager()->Send( 982 browser_plugin_manager()->Send(
979 new BrowserPluginHostMsg_RespondPermission( 983 new BrowserPluginHostMsg_RespondPermission(
980 render_view_routing_id_, guest_instance_id_, request_id, allow)); 984 render_view_routing_id_, guest_instance_id_,
985 request_id, allow, user_input));
981 } 986 }
982 987
983 void BrowserPlugin::RespondPermissionIfRequestIsPending( 988 void BrowserPlugin::RespondPermissionIfRequestIsPending(
984 int request_id, bool allow) { 989 int request_id, bool allow, const std::string& user_input) {
985 PendingPermissionRequests::iterator iter = 990 PendingPermissionRequests::iterator iter =
986 pending_permission_requests_.find(request_id); 991 pending_permission_requests_.find(request_id);
987 if (iter == pending_permission_requests_.end()) 992 if (iter == pending_permission_requests_.end())
988 return; 993 return;
989 994
990 pending_permission_requests_.erase(iter); 995 pending_permission_requests_.erase(iter);
991 RespondPermission(request_id, allow); 996 RespondPermission(request_id, allow, user_input);
992 } 997 }
993 998
994 void BrowserPlugin::OnEmbedderDecidedPermission(int request_id, bool allow) { 999 void BrowserPlugin::OnEmbedderDecidedPermission(int request_id,
995 RespondPermissionIfRequestIsPending(request_id, allow); 1000 bool allow,
1001 const std::string& user_input) {
1002 RespondPermissionIfRequestIsPending(request_id, allow, user_input);
996 } 1003 }
997 1004
998 bool BrowserPlugin::initialize(WebPluginContainer* container) { 1005 bool BrowserPlugin::initialize(WebPluginContainer* container) {
999 if (!container) 1006 if (!container)
1000 return false; 1007 return false;
1001 1008
1002 if (!GetContentClient()->renderer()->AllowBrowserPlugin(container)) 1009 if (!GetContentClient()->renderer()->AllowBrowserPlugin(container))
1003 return false; 1010 return false;
1004 1011
1005 // Tell |container| to allow this plugin to use script objects. 1012 // Tell |container| to allow this plugin to use script objects.
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
1457 const WebKit::WebMouseEvent& event) { 1464 const WebKit::WebMouseEvent& event) {
1458 browser_plugin_manager()->Send( 1465 browser_plugin_manager()->Send(
1459 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_, 1466 new BrowserPluginHostMsg_HandleInputEvent(render_view_routing_id_,
1460 guest_instance_id_, 1467 guest_instance_id_,
1461 plugin_rect_, 1468 plugin_rect_,
1462 &event)); 1469 &event));
1463 return true; 1470 return true;
1464 } 1471 }
1465 1472
1466 } // namespace content 1473 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698