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

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

Powered by Google App Engine
This is Rietveld 408576698