*/
#include "extensions/renderer/runtime_ipc_client.h"
+#include "extensions/renderer/xwalk_extension_renderer_controller.h"
#include "common/logger.h"
#include "common/profiler.h"
const std::string& id,
const std::string& ref_id,
const std::string& value) {
+ if (!strcmp(type.c_str(), "tizen://exit")) {
+ extensions::XWalkExtensionRendererController& controller =
+ extensions::XWalkExtensionRendererController::GetInstance();
+ controller.exit_requested = true;
+ }
+
int routing_id = GetRoutingId(context);
if (routing_id < 1) {
LOGGER(ERROR) << "Invalid routing handle for IPC.";
}
XWalkExtensionRendererController::XWalkExtensionRendererController()
- : extensions_client_(new XWalkExtensionClient()) {
+ : exit_requested(false),
+ extensions_client_(new XWalkExtensionClient()) {
}
XWalkExtensionRendererController::~XWalkExtensionRendererController() {
void XWalkExtensionRendererController::DidCreateScriptContext(
v8::Handle<v8::Context> context) {
SCOPE_PROFILE();
+
+ // Skip plugin loading after application exit request.
+ if (exit_requested) {
+ return;
+ }
+
XWalkModuleSystem* module_system = new XWalkModuleSystem(context);
XWalkModuleSystem::SetModuleSystemInContext(
std::unique_ptr<XWalkModuleSystem>(module_system), context);
void InitializeExtensionClient();
void LoadUserExtensions(const std::string app_path);
+ bool exit_requested;
+
private:
XWalkExtensionRendererController();
virtual ~XWalkExtensionRendererController();