// Inject webinos.js // The file is loaded from the webinos\test\client folder if possible. // If this fails, the current folder is used. void ClientApp::InjectWebinos(CefRefPtr<CefFrame> frame) { CefRefPtr<CefCommandLine> commandLine = AppGetCommandLine(); // First try and load the platform-supplied webinos.js std::string pzpPath = AppGetWebinosWRTConfig(NULL,NULL); CefString wrtPath; // Make sure there is a trailing separator on the path. if (pzpPath.length() > 0) { if (pzpPath.find_last_of('/') == pzpPath.length()-1 || pzpPath.find_last_of('\\') == pzpPath.length()-1) wrtPath = pzpPath + "wrt/webinos.js"; else wrtPath = pzpPath + "/wrt/webinos.js"; } #if defined(OS_WIN) base::FilePath webinosJSPath(wrtPath.ToWString().c_str()); #else base::FilePath webinosJSPath(wrtPath); #endif LOG(INFO) << "webinos.js path is " << wrtPath; int64 webinosJSCodeSize; bool gotJSFile = base::GetFileSize(webinosJSPath, &webinosJSCodeSize); if (gotJSFile) { char* webinosJSCode = new char[webinosJSCodeSize+1]; base::ReadFile(webinosJSPath, webinosJSCode, webinosJSCodeSize); webinosJSCode[webinosJSCodeSize] = 0; if (frame == NULL) { // Register as a Cef extension. CefRegisterExtension("webinos", webinosJSCode, NULL); } else { // Run the code in the frame javascript context right now, // but only if the URL refers to the widget server. int widgetServerPort; AppGetWebinosWRTConfig(NULL,&widgetServerPort); char injectionCandidate[MAX_URL_LENGTH]; sprintf(injectionCandidate,"http://localhost:%d",widgetServerPort); std::string url = frame->GetURL(); if (url.substr(0,strlen(injectionCandidate)) == injectionCandidate) frame->ExecuteJavaScript(webinosJSCode, url, 0); } delete[] webinosJSCode; } else { LOG(ERROR) << "Can't find webinos.js"; } }
// Inject webinos.js // The file is loaded from the webinos\test\client folder if possible. // If this fails, the current folder is used. void ClientApp::InjectWebinos(CefRefPtr<CefFrame> frame) { CefRefPtr<CefCommandLine> commandLine = AppGetCommandLine(); // First try and load the platform-supplied webinos.js #if defined(OS_WIN) FilePath workingDir(commandLine->GetProgram().ToWString().c_str()); FilePath webinosJSPath = workingDir.DirName().Append(L"..\\..\\webinos\\web_root\\webinos.js"); #else FilePath workingDir(commandLine->GetProgram()); FilePath webinosJSPath = workingDir.DirName().Append("..\\..\\webinos\\web_root\\webinos.js"); #endif int64 webinosJSCodeSize; bool gotJSFile = file_util::GetFileSize(webinosJSPath, &webinosJSCodeSize); if (!gotJSFile) { // Unable to load the platform-supplied webinos.js, use the installed version. #if defined(OS_WIN) workingDir = FilePath(commandLine->GetProgram().ToWString().c_str()); webinosJSPath = workingDir.DirName().Append(L"webinos.js"); #else workingDir = FilePath(commandLine->GetProgram()); webinosJSPath = workingDir.DirName().Append("webinos.js"); #endif gotJSFile = file_util::GetFileSize(webinosJSPath, &webinosJSCodeSize); } if (gotJSFile) { char* webinosJSCode = new char[webinosJSCodeSize+1]; file_util::ReadFile(webinosJSPath, webinosJSCode, webinosJSCodeSize); webinosJSCode[webinosJSCodeSize] = 0; if (frame == NULL) { // Register as a Cef extension. CefRegisterExtension("webinos", webinosJSCode, NULL); } else { // Run the code in the frame javascript context right now, // but only if the URL refers to the widget server. int widgetServerPort; AppGetWebinosWRTConfig(NULL,&widgetServerPort); char injectionCandidate[MAX_URL_LENGTH]; sprintf(injectionCandidate,"http://localhost:%d",widgetServerPort); std::string url = frame->GetURL(); if (url.substr(0,strlen(injectionCandidate)) == injectionCandidate) frame->ExecuteJavaScript(webinosJSCode, url, 0); } delete[] webinosJSCode; } else { LOG(ERROR) << "Can't find webinos.js"; } }