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

Side by Side Diff: ppapi/native_client/src/trusted/plugin/plugin.cc

Issue 8951014: Change the DidChangeView update to take a new ViewChanged resource. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review comments Created 9 years 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifdef _MSC_VER 5 #ifdef _MSC_VER
6 // Do not warn about use of std::copy with raw pointers. 6 // Do not warn about use of std::copy with raw pointers.
7 #pragma warning(disable : 4996) 7 #pragma warning(disable : 4996)
8 #endif 8 #endif
9 9
10 #include "native_client/src/trusted/plugin/plugin.h" 10 #include "native_client/src/trusted/plugin/plugin.h"
(...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 argc_(-1), 992 argc_(-1),
993 argn_(NULL), 993 argn_(NULL),
994 argv_(NULL), 994 argv_(NULL),
995 main_subprocess_(kMainSubprocessId, NULL, NULL), 995 main_subprocess_(kMainSubprocessId, NULL, NULL),
996 nacl_ready_state_(UNSENT), 996 nacl_ready_state_(UNSENT),
997 nexe_error_reported_(false), 997 nexe_error_reported_(false),
998 wrapper_factory_(NULL), 998 wrapper_factory_(NULL),
999 last_error_string_(""), 999 last_error_string_(""),
1000 ppapi_proxy_(NULL), 1000 ppapi_proxy_(NULL),
1001 enable_dev_interfaces_(false), 1001 enable_dev_interfaces_(false),
1002 replayDidChangeView(false),
1003 replayHandleDocumentLoad(false),
1004 init_time_(0), 1002 init_time_(0),
1005 ready_time_(0), 1003 ready_time_(0),
1006 nexe_size_(0), 1004 nexe_size_(0),
1007 time_of_last_progress_event_(0) { 1005 time_of_last_progress_event_(0) {
1008 PLUGIN_PRINTF(("Plugin::Plugin (this=%p, pp_instance=%" 1006 PLUGIN_PRINTF(("Plugin::Plugin (this=%p, pp_instance=%"
1009 NACL_PRId32")\n", static_cast<void*>(this), pp_instance)); 1007 NACL_PRId32")\n", static_cast<void*>(this), pp_instance));
1010 callback_factory_.Initialize(this); 1008 callback_factory_.Initialize(this);
1011 nexe_downloader_.Initialize(this); 1009 nexe_downloader_.Initialize(this);
1012 } 1010 }
1013 1011
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 HistogramTimeSmall( 1069 HistogramTimeSmall(
1072 "NaCl.Perf.ShutdownTime.Total", 1070 "NaCl.Perf.ShutdownTime.Total",
1073 (NaClGetTimeOfDayMicroseconds() - shutdown_start) 1071 (NaClGetTimeOfDayMicroseconds() - shutdown_start)
1074 / NACL_MICROS_PER_MILLI); 1072 / NACL_MICROS_PER_MILLI);
1075 1073
1076 PLUGIN_PRINTF(("Plugin::~Plugin (this=%p, return)\n", 1074 PLUGIN_PRINTF(("Plugin::~Plugin (this=%p, return)\n",
1077 static_cast<void*>(this))); 1075 static_cast<void*>(this)));
1078 } 1076 }
1079 1077
1080 1078
1081 void Plugin::DidChangeView(const pp::Rect& position, const pp::Rect& clip) { 1079 void Plugin::DidChangeView(const pp::View& view) {
1082 PLUGIN_PRINTF(("Plugin::DidChangeView (this=%p)\n", 1080 PLUGIN_PRINTF(("Plugin::DidChangeView (this=%p)\n",
1083 static_cast<void*>(this))); 1081 static_cast<void*>(this)));
1084 1082
1085 if (!BrowserPpp::is_valid(ppapi_proxy_)) { 1083 if (!BrowserPpp::is_valid(ppapi_proxy_)) {
1086 // Store this event and replay it when the proxy becomes available. 1084 // Store this event and replay it when the proxy becomes available.
1087 replayDidChangeView = true; 1085 view_to_replay_ = view;
1088 replayDidChangeViewPosition = position;
1089 replayDidChangeViewClip = clip;
1090 return;
1091 } else { 1086 } else {
1092 ppapi_proxy_->ppp_instance_interface()->DidChangeView( 1087 ppapi_proxy_->ppp_instance_interface()->DidChangeView(
1093 pp_instance(), &(position.pp_rect()), &(clip.pp_rect())); 1088 pp_instance(), view.pp_resource());
1094 } 1089 }
1095 } 1090 }
1096 1091
1097 1092
1098 void Plugin::DidChangeFocus(bool has_focus) { 1093 void Plugin::DidChangeFocus(bool has_focus) {
1099 PLUGIN_PRINTF(("Plugin::DidChangeFocus (this=%p)\n", 1094 PLUGIN_PRINTF(("Plugin::DidChangeFocus (this=%p)\n",
1100 static_cast<void*>(this))); 1095 static_cast<void*>(this)));
1101 if (!BrowserPpp::is_valid(ppapi_proxy_)) { 1096 if (BrowserPpp::is_valid(ppapi_proxy_)) {
1102 return;
1103 } else {
1104 ppapi_proxy_->ppp_instance_interface()->DidChangeFocus( 1097 ppapi_proxy_->ppp_instance_interface()->DidChangeFocus(
1105 pp_instance(), PP_FromBool(has_focus)); 1098 pp_instance(), PP_FromBool(has_focus));
1106 } 1099 }
1107 } 1100 }
1108 1101
1109 1102
1110 bool Plugin::HandleInputEvent(const pp::InputEvent& event) { 1103 bool Plugin::HandleInputEvent(const pp::InputEvent& event) {
1111 PLUGIN_PRINTF(("Plugin::HandleInputEvent (this=%p)\n", 1104 PLUGIN_PRINTF(("Plugin::HandleInputEvent (this=%p)\n",
1112 static_cast<void*>(this))); 1105 static_cast<void*>(this)));
1113 if (!BrowserPpp::is_valid(ppapi_proxy_) || 1106 if (!BrowserPpp::is_valid(ppapi_proxy_) ||
1114 ppapi_proxy_->ppp_input_event_interface() == NULL) { 1107 ppapi_proxy_->ppp_input_event_interface() == NULL) {
1115 return false; // event is not handled here. 1108 return false; // event is not handled here.
1116 } else { 1109 } else {
1117 bool handled = PP_ToBool( 1110 bool handled = PP_ToBool(
1118 ppapi_proxy_->ppp_input_event_interface()->HandleInputEvent( 1111 ppapi_proxy_->ppp_input_event_interface()->HandleInputEvent(
1119 pp_instance(), event.pp_resource())); 1112 pp_instance(), event.pp_resource()));
1120 PLUGIN_PRINTF(("Plugin::HandleInputEvent (handled=%d)\n", handled)); 1113 PLUGIN_PRINTF(("Plugin::HandleInputEvent (handled=%d)\n", handled));
1121 return handled; 1114 return handled;
1122 } 1115 }
1123 } 1116 }
1124 1117
1125 1118
1126 bool Plugin::HandleDocumentLoad(const pp::URLLoader& url_loader) { 1119 bool Plugin::HandleDocumentLoad(const pp::URLLoader& url_loader) {
1127 PLUGIN_PRINTF(("Plugin::HandleDocumentLoad (this=%p)\n", 1120 PLUGIN_PRINTF(("Plugin::HandleDocumentLoad (this=%p)\n",
1128 static_cast<void*>(this))); 1121 static_cast<void*>(this)));
1129 if (!BrowserPpp::is_valid(ppapi_proxy_)) { 1122 if (!BrowserPpp::is_valid(ppapi_proxy_)) {
1130 // Store this event and replay it when the proxy becomes available. 1123 // Store this event and replay it when the proxy becomes available.
1131 replayHandleDocumentLoad = true; 1124 document_load_to_replay_ = url_loader;
1132 replayHandleDocumentLoadURLLoader = url_loader;
1133 // Return true so that the browser keeps servicing this loader so we can 1125 // Return true so that the browser keeps servicing this loader so we can
1134 // perform requests on it later. 1126 // perform requests on it later.
1135 return true; 1127 return true;
1136 } else { 1128 } else {
1137 return PP_ToBool( 1129 return PP_ToBool(
1138 ppapi_proxy_->ppp_instance_interface()->HandleDocumentLoad( 1130 ppapi_proxy_->ppp_instance_interface()->HandleDocumentLoad(
1139 pp_instance(), url_loader.pp_resource())); 1131 pp_instance(), url_loader.pp_resource()));
1140 } 1132 }
1141 } 1133 }
1142 1134
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1375 error_info->SetReport(ERROR_START_PROXY_ALLOC, 1367 error_info->SetReport(ERROR_START_PROXY_ALLOC,
1376 "could not allocate proxy memory."); 1368 "could not allocate proxy memory.");
1377 return false; 1369 return false;
1378 } 1370 }
1379 pp::Module* module = pp::Module::Get(); 1371 pp::Module* module = pp::Module::Get();
1380 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (module=%p)\n", 1372 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (module=%p)\n",
1381 static_cast<void*>(module))); 1373 static_cast<void*>(module)));
1382 CHECK(module != NULL); // We could not have gotten past init stage otherwise. 1374 CHECK(module != NULL); // We could not have gotten past init stage otherwise.
1383 int32_t pp_error = 1375 int32_t pp_error =
1384 ppapi_proxy->InitializeModule(module->pp_module(), 1376 ppapi_proxy->InitializeModule(module->pp_module(),
1385 module->get_browser_interface()); 1377 module->get_browser_interface());
1386 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (pp_error=%" 1378 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (pp_error=%"
1387 NACL_PRId32")\n", pp_error)); 1379 NACL_PRId32")\n", pp_error));
1388 if (pp_error != PP_OK) { 1380 if (pp_error != PP_OK) {
1389 error_info->SetReport(ERROR_START_PROXY_MODULE, 1381 error_info->SetReport(ERROR_START_PROXY_MODULE,
1390 "could not initialize module."); 1382 "could not initialize module.");
1391 return false; 1383 return false;
1392 } 1384 }
1393 const PPP_Instance* instance_interface = 1385 const PPP_Instance* instance_interface =
1394 ppapi_proxy->ppp_instance_interface(); 1386 ppapi_proxy->ppp_instance_interface();
1395 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (ppp_instance=%p)\n", 1387 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (ppp_instance=%p)\n",
(...skipping 16 matching lines...) Expand all
1412 1404
1413 // Create PPP* interface adapters to forward calls to .nexe. 1405 // Create PPP* interface adapters to forward calls to .nexe.
1414 find_adapter_.reset(new(std::nothrow) FindAdapter(this)); 1406 find_adapter_.reset(new(std::nothrow) FindAdapter(this));
1415 mouse_lock_adapter_.reset(new(std::nothrow) MouseLockAdapter(this)); 1407 mouse_lock_adapter_.reset(new(std::nothrow) MouseLockAdapter(this));
1416 printing_adapter_.reset(new(std::nothrow) PrintingAdapter(this)); 1408 printing_adapter_.reset(new(std::nothrow) PrintingAdapter(this));
1417 selection_adapter_.reset(new(std::nothrow) SelectionAdapter(this)); 1409 selection_adapter_.reset(new(std::nothrow) SelectionAdapter(this));
1418 widget_client_adapter_.reset(new(std::nothrow) WidgetClientAdapter(this)); 1410 widget_client_adapter_.reset(new(std::nothrow) WidgetClientAdapter(this));
1419 zoom_adapter_.reset(new(std::nothrow) ZoomAdapter(this)); 1411 zoom_adapter_.reset(new(std::nothrow) ZoomAdapter(this));
1420 1412
1421 // Replay missed events. 1413 // Replay missed events.
1422 if (replayDidChangeView) { 1414 if (!view_to_replay_.is_null()) {
1423 replayDidChangeView = false; 1415 DidChangeView(view_to_replay_);
1424 DidChangeView(replayDidChangeViewPosition, replayDidChangeViewClip); 1416 view_to_replay_ = pp::View();
1425 } 1417 }
1426 if (replayHandleDocumentLoad) { 1418 if (!document_load_to_replay_.is_null()) {
1427 replayHandleDocumentLoad = false; 1419 HandleDocumentLoad(document_load_to_replay_);
1428 HandleDocumentLoad(replayHandleDocumentLoadURLLoader); 1420 document_load_to_replay_ = pp::URLLoader();
1429 // Release our reference on this loader.
1430 replayHandleDocumentLoadURLLoader = pp::URLLoader();
1431 } 1421 }
1432 bool is_valid_proxy = BrowserPpp::is_valid(ppapi_proxy_); 1422 bool is_valid_proxy = BrowserPpp::is_valid(ppapi_proxy_);
1433 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (is_valid_proxy=%d)\n", 1423 PLUGIN_PRINTF(("Plugin::StartProxiedExecution (is_valid_proxy=%d)\n",
1434 is_valid_proxy)); 1424 is_valid_proxy));
1435 if (!is_valid_proxy) { 1425 if (!is_valid_proxy) {
1436 error_info->SetReport(ERROR_START_PROXY_CRASH, 1426 error_info->SetReport(ERROR_START_PROXY_CRASH,
1437 "instance crashed after creation."); 1427 "instance crashed after creation.");
1438 } 1428 }
1439 return is_valid_proxy; 1429 return is_valid_proxy;
1440 } 1430 }
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
2057 std::string scheme = canonicalized.AsString().substr(comps.scheme.begin, 2047 std::string scheme = canonicalized.AsString().substr(comps.scheme.begin,
2058 comps.scheme.len); 2048 comps.scheme.len);
2059 if (scheme == kChromeExtensionUriScheme) 2049 if (scheme == kChromeExtensionUriScheme)
2060 return SCHEME_CHROME_EXTENSION; 2050 return SCHEME_CHROME_EXTENSION;
2061 if (scheme == kDataUriScheme) 2051 if (scheme == kDataUriScheme)
2062 return SCHEME_DATA; 2052 return SCHEME_DATA;
2063 return SCHEME_OTHER; 2053 return SCHEME_OTHER;
2064 } 2054 }
2065 2055
2066 } // namespace plugin 2056 } // namespace plugin
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698