This commit is contained in:
Oleg Korshul
2017-12-12 11:13:03 +03:00
parent 31b04fb7df
commit 0fc04fdccf
8 changed files with 95 additions and 687 deletions

View File

@ -88,9 +88,5 @@ SOURCES += \
\
$$CEF_SRC_PATH/tests/shared/browser/main_message_loop_external_pump_win.cc \
$$CEF_SRC_PATH/tests/shared/browser/resource_util_win.cc \
$$CEF_SRC_PATH/tests/shared/browser/util_win.cc
!desktop_sdk_html {
SOURCES += \
$$CEF_SRC_PATH/tests/shared/browser/util_win.cc \
$$CEF_SRC_PATH/tests/cefclient/browser/browser_window_std_win.cc
}

View File

@ -144,10 +144,6 @@ void RootWindowGtk::Show(ShowMode mode) {
// Show the GTK window.
gtk_widget_show_all(window_);
#ifdef ASC_HIDE_WINDOW
gtk_widget_hide(window_);
#endif
if (mode == ShowMinimized)
MinimizeWindow(GTK_WINDOW(window_));

View File

@ -198,10 +198,9 @@ void RootWindowWin::Show(ShowMode mode) {
default:
break;
}
#ifndef ASC_HIDE_WINDOW
ShowWindow(hwnd_, nCmdShow);
UpdateWindow(hwnd_);
#endif
}
void RootWindowWin::Hide() {

View File

@ -5,8 +5,6 @@ TARGET = HtmlFileInternal
CONFIG += app_bundle
TEMPLATE = app
#DEFINES += ASC_HIDE_WINDOW
CORE_ROOT_DIR = $$PWD/../../../core
PWD_ROOT_DIR = $$PWD
include($$CORE_ROOT_DIR/Common/base.pri)
@ -23,6 +21,8 @@ core_linux {
include($$CORE_ROOT_DIR/DesktopEditor/Qt_build/graphics/project/graphics.pri)
}
DESTDIR=$$CORE_BUILDS_LIBRARIES_PATH
INCLUDEPATH += \
$$CORE_ROOT_DIR/DesktopEditor/agg-2.4/include \
$$CORE_ROOT_DIR/DesktopEditor/freetype-2.5.2/include
@ -34,25 +34,18 @@ HEADERS += \
SOURCES += \
$$PWD/src/client_renderer_wrapper.cpp
CONFIG += desktop_sdk_html
DESTDIR = $$PWD/core_build/linux_64/debug
SOURCES += \
$$PWD/src/main.cpp
win32 {
include($$CORE_ROOT_DIR/../desktop-sdk/ChromiumBasedEditors/lib/AscDocumentsCore_windows.pri)
SOURCES += \
$$PWD/src/main_windows.cpp
}
linux-g++ | linux-g++-64 | linux-g++-32 {
include($$CORE_ROOT_DIR/../desktop-sdk/ChromiumBasedEditors/lib/AscDocumentsCore_linux.pri)
SOURCES += \
$$PWD/src/main_linux.cpp
CONFIG += link_pkgconfig c++11
PKGCONFIG += glib-2.0 gdk-2.0 gtkglext-1.0 atk cairo gtk+-unix-print-2.0
LIBS += -lcurl -lz
CONFIG += link_pkgconfig c++11
PKGCONFIG += glib-2.0 gdk-2.0 gtkglext-1.0 atk cairo gtk+-unix-print-2.0
LIBS += -lcurl -lz
#CONFIG += build_for_centos6

View File

@ -49,7 +49,7 @@
#include "../../../ChromiumBasedEditors/lib/src/filedownloader.h"
//#define ASC_HTML_FILE_INTERNAL_LOG
#include <iostream>
namespace asc_client_renderer
{
class CAscEditorNativeV8Handler : public CefV8Handler
@ -154,7 +154,7 @@ public:
CefString& exception) OVERRIDE
{
if (name == "InitSDK")
{std::cout << "InitSDK" << std::endl;
{
std::string sDivId = "editor_sdk";
CefRefPtr<CefV8Value> val = *arguments.begin();
if (val->IsValid() && val->IsString())
@ -169,7 +169,7 @@ public:
return true;
}
else if (name == "OpenEmptyDocument")
{std::cout << "OpenEmptyDocument" << std::endl;
{
std::string sEmptyDocument = "DOCY;v5;36996;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";
sEmptyDocument += "AAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAnAQAAAEEAAAAMwAwAAIKAAAATABpAG4AZQBkAAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAHSwAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGAAAAAA8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2dnZAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2dnZAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAsgQAAAEEAAAAMwAxAAIgAAAATABpAG4AZQBkACAALQAgAEEAYwBjAGUAbgB0ACAAMQAJAQAAAAQDBAAAAGEAMQALBAAAAGMAAAAFAAAAAAYbAAAACQYPAAAACgWghgEACwEBDQUAAAAAGwYAAAAAB0sAAAADBAAAAAAAAAAFOAAAAAAJAAAAAAEAAgQBAAAAAQkAAAAAAQACBAAAAAACCQAAAAABAAIEAQAAAAMJAAAAAAEAAgQAAAAABgAAAAAPAAAAABAGAAAAAgYAAAAAEeIDAAAAQQAAAAEBAAAAAAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAECAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABPAAAAAQEAAAACAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA9vl8QIGAAAAAABPAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA9vl8QIGAAAAAABPAAAAAQEAAAAEAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA5Wz1wIGAAAAAABPAAAAAQEAAAAFAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA5Wz1wIGAAAAAABPAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA5Wz1wIGAAAAAABPAAAAAQEAAAAHAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA5Wz1wIGAAAAAABBAAAAAQEAAAAJAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAsCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAKAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAADAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAALIEAAABBAAAADMAMgACIAAAAEwAaQBuAGUAZAAgAC0AIABBAGMAYwBlAG4AdAAgADIACQEAAAAEAwQAAABhADEACwQAAABjAAAABQAAAAAGGwAAAAkGDwAAAAoFoIYBAAsBAQ0FAAAAABsGAAAAAAdLAAAAAwQAAAAAAAAABTgAAAAACQAAAAABAAIEAQAAAAEJAAAAAAEAAgQAAAAAAgkAAAAAAQACBAEAAAADCQAAAAABAAIEAAAAAAYAAAAADwAAAAAQBgAAAAIGAAAAABHiAwAAAEEAAAABAQAAAAACAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAABAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAATwAAAAEBAAAAAgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPy29sCBgAAAAAATwAAAAEBAAAAAwIAAAAAAxIAAAABBgAAAAAJBgA";
sEmptyDocument += "AAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPy29sCBgAAAAAATwAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAAQQAAAAEBAAAACQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAgCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAALAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAwCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAACyBAAAAQQAAAAzADMAAiAAAABMAGkAbgBlAGQAIAAtACAAQQBjAGMAZQBuAHQAIAAzAAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAHSwAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGAAAAAA8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED6vHdAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED6vHdAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAsgQAAAEEAAAAMwA0AAIgAAAATABpAG4AZQBkACAALQAgAEEAYwBjAGUAbgB0ACAANAAJAQAAAAQDBAAAAGEAMQALBAAAAGMAAAAFAAAAAAYbAAAACQYPAAAACgWghgEACwEBDQUAAAAAGwYAAAAAB0sAAAADBAAAAAAAAAAFOAAAAAAJAAAAAAEAAgQBAAAAAQkAAAAAAQACBAAAAAACCQAAAAABAAIEAQAAAAMJAAAAAAEAAgQAAAAABgAAAAAPAAAAABAGAAAAAgYAAAAAEeIDAAAAQQAAAAEBAAAAAAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAECAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABPAAAAAQEAAAACAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA+Xf7AIGAAAAAABPAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA+Xf7AIGAAAAAABPAAAAAQEAAAAEAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAFAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAHAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABBAAAAAQEAAAAJAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAsCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAKAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAADAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAALIEAAABBAAAADMANQACIAAAAEwAaQBuAGUAZAAgAC0AIABBAGMAYwBlAG4AdAAgADUACQEAAAAEAwQAAABhADEACwQAAABjAAAABQAAAAAGGwAAAAkGDwAAAAoFoIYBAAsBAQ0FAAAAABsGAAAAAAdLAAAAAwQAAAAAAAAABTgAAAAACQAAAAABAAIEAQAAAAEJAAAAAAEAAgQAAAAAAgkAAAAAAQACBAEAAAADCQAAAAABAAIEAAAAAAYAAAAADwAAAAAQBgAAAAIGAAAAABHiAwAAAEEAAAABAQAAAAACAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAABAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAATwAAAAEBAAAAAgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPa7vMCBgAAAAAATwAAAAEBAAAAAwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAA";
@ -188,7 +188,7 @@ public:
return true;
}
else if (name == "SetDestinationDocumentPath")
{std::cout << "SetDestinationDocumentPath" << std::endl;
{
CefRefPtr<CefV8Value> val = *arguments.begin();
if (val->IsValid() && val->IsString())
{
@ -199,7 +199,7 @@ public:
return true;
}
else if (name == "GetImageUrl")
{std::cout << "GetImageUrl" << std::endl;
{
std::vector<CefRefPtr<CefV8Value> >::const_iterator iter = arguments.begin();
std::wstring sUrl = (*iter)->GetStringValue().ToWString(); ++iter;
@ -237,7 +237,7 @@ public:
return true;
}
else if (name == "SaveDocument")
{std::cout << "SaveDocument" << std::endl;
{
if (arguments.size() > 0)
{
CefRefPtr<CefV8Value> val = *arguments.begin();
@ -269,7 +269,7 @@ public:
return true;
}
else if (name == "Exit")
{std::cout << "Exit" << std::endl;
{
#ifdef ASC_HTML_FILE_INTERNAL_LOG
std::string sLog = U_TO_UTF8((NSFile::GetProcessDirectory())) + "/convert.log";
FILE* f = fopen(sLog.c_str(), "a+");
@ -285,7 +285,7 @@ public:
return true;
}
else if (name == "AddHtml")
{std::cout << "AddHtml" << std::endl;
{
#ifdef ASC_HTML_FILE_INTERNAL_LOG
std::string sLog = U_TO_UTF8((NSFile::GetProcessDirectory())) + "/convert.log";
FILE* f = fopen(sLog.c_str(), "a+");
@ -393,7 +393,6 @@ class ClientRenderDelegate : public client::ClientAppRenderer::Delegate {
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE {
std::cout << "OnContextCreated\n";
message_router_->OnContextCreated(browser, frame, context);
// add AscEditorNative

View File

@ -57,47 +57,29 @@
class CGlobalHtmlFileParams
{
public:
std::vector<std::wstring> sSdkPath;
std::wstring sDstPath;
std::vector<std::wstring> arFiles;
std::vector<std::wstring> sSdkPath;
std::wstring sDstPath;
std::vector<std::wstring> arFiles;
bool m_bIsRunned;
CefRefPtr<client::ClientHandler> m_client;
public:
CGlobalHtmlFileParams()
{
m_bIsRunned = true;
{
}
};
class CRenderHandler : public CefRenderHandler
class CHtmlRenderHandler : public CefRenderHandler
{
public:
CRenderHandler() {}
CHtmlRenderHandler() {}
// FrameListener interface
public:
///
// Called to retrieve the view rectangle which is relative to screen
// coordinates. Return true if the rectangle was provided.
///
/*--cef()--*/
public:
virtual bool GetViewRect(CefRefPtr<CefBrowser> browser, CefRect& rect)
{
rect = CefRect(0, 0, 1000, 1000);
return true;
}
///
// Called when an element should be painted. Pixel values passed to this
// method are scaled relative to view coordinates based on the value of
// CefScreenInfo.device_scale_factor returned from GetScreenInfo. |type|
// indicates whether the element is the view or the popup widget. |buffer|
// contains the pixel data for the whole image. |dirtyRects| contains the set
// of rectangles in pixel coordinates that need to be repainted. |buffer| will
// be |width|*|height|*4 bytes in size and represents a BGRA image with an
// upper-left origin.
///
/*--cef()--*/
virtual void OnPaint(CefRefPtr<CefBrowser> browser,
PaintElementType type,
const RectList& dirtyRects,
@ -109,7 +91,7 @@ public:
}
public:
IMPLEMENT_REFCOUNTING(CRenderHandler);
IMPLEMENT_REFCOUNTING(CHtmlRenderHandler);
};
@ -122,14 +104,14 @@ private:
public:
CGlobalHtmlFileParams* m_global;
CefRefPtr<CRenderHandler> m_render;
CefRefPtr<CHtmlRenderHandler> m_render;
CefRefPtr<CefBrowser> m_browser;
public:
CHtmlClientHandler(std::string sUrl, CGlobalHtmlFileParams* params) : client::ClientHandler(this, true, sUrl)
CHtmlClientHandler(CGlobalHtmlFileParams* params) : client::ClientHandler(this, true, "html_file")
{
m_global = params;
m_render = new CRenderHandler();
m_render = new CHtmlRenderHandler();
}
virtual CefRefPtr<CefRenderHandler> GetRenderHandler()
@ -137,8 +119,12 @@ public:
return m_render;
}
void Init(const std::vector<std::wstring>& arSdks, const std::vector<std::wstring>& arFiles, const std::wstring& sDestinationFile)
void Init()
{
std::vector<std::wstring>& arSdks = m_global->sSdkPath;
std::vector<std::wstring>& arFiles = m_global->arFiles;
std::wstring& sDestinationFile = m_global->sDstPath;
m_sCachePath = sDestinationFile;
std::wstring sUniquePath = NSFile::CFileBinary::CreateTempFileWithUniqueName(NSFile::CFileBinary::GetTempPath(), L"HTML");
@ -302,15 +288,12 @@ window.onload = function ()\
CefRefPtr<CefProcessMessage> message)
{
CEF_REQUIRE_UI_THREAD();
std::cout << "main:Exit" << std::endl;
// Check for messages from the client renderer.
std::string message_name = message->GetName();
if (message_name == "Exit")
{
m_global->m_bIsRunned = false;
m_browser->GetHost()->CloseBrowser(true);
client::MainMessageLoop::Get()->Quit();
this->Exit();
return true;
}
@ -338,40 +321,41 @@ window.onload = function ()\
{
CEF_REQUIRE_UI_THREAD();
std::cout << "renderer:crash" << std::endl;
m_global->m_bIsRunned = false;
this->Exit();
}
void Exit()
{
if (m_browser && m_browser->GetHost())
m_browser->GetHost()->CloseBrowser(true);
client::MainMessageLoop::Get()->Quit();
}
/////////////////////////////////////////////////////
// Called when the browser is created.
virtual void OnBrowserCreated(CefRefPtr<CefBrowser> browser)
{
std::cout << "CDelegate::OnBrowserCreated" << std::endl;
m_browser = browser;
}
// Called when the browser is closing.
virtual void OnBrowserClosing(CefRefPtr<CefBrowser> browser)
{
std::cout << "CDelegate::OnBrowserClosing" << std::endl;
}
// Called when the browser has been closed.
virtual void OnBrowserClosed(CefRefPtr<CefBrowser> browser)
{
std::cout << "CDelegate::OnBrowserClosed" << std::endl;
}
// Set the window URL address.
virtual void OnSetAddress(const std::string& url)
{
std::cout << "CDelegate::OnSetAddress" << std::endl;
}
// Set the window title.
virtual void OnSetTitle(const std::string& title)
{
std::cout << "CDelegate::OnSetTitle" << std::endl;
}
// Set the Favicon image.
@ -380,7 +364,6 @@ window.onload = function ()\
// Set fullscreen mode.
virtual void OnSetFullscreen(bool fullscreen)
{
std::cout << "CDelegate::OnSetFullscreen" << std::endl;
}
// Set the loading state.
@ -388,14 +371,12 @@ window.onload = function ()\
bool canGoBack,
bool canGoForward)
{
std::cout << "CDelegate::OnSetLoadingState" << std::endl;
}
// Set the draggable regions.
virtual void OnSetDraggableRegions(
const std::vector<CefDraggableRegion>& regions)
{
std::cout << "CDelegate::OnSetDraggableRegions" << std::endl;
}
// Set focus to the next/previous control.

View File

@ -30,8 +30,6 @@
*
*/
#include <string>
#include <stdio.h>
#include "../../../core/DesktopEditor/common/File.h"
#include "../../../core/DesktopEditor/common/Directory.h"
#include "./src/clienthandler.h"
@ -39,153 +37,37 @@
#include "../../../core/DesktopEditor/xml/include/xmlutils.h"
//#define ASC_HTML_FILE_INTERNAL_LOG
#include "src/client_app.h"
#include "src/clienthandler.h"
#include "tests/shared/common/client_switches.h"
#include "tests/cefclient/browser/main_context_impl.h"
#include "tests/cefclient/browser/main_message_loop_multithreaded_win.h"
#include "tests/shared/browser/main_message_loop_std.h"
class CGlobalHtmlFileParams
{
public:
std::vector<std::wstring> sSdkPath;
std::wstring sDstPath;
std::vector<std::wstring> arFiles;
client::RootWindowManager* m_pManager;
public:
CGlobalHtmlFileParams()
{
}
};
CGlobalHtmlFileParams* g_globalParams;
#if 1
#include "tests/cefclient/browser/browser_window_std_win.h"
#include "tests/cefclient/browser/client_handler_std.h"
// подменяем функции окна
#ifdef _LINUX
void TerminationSignalHandler(int signatl) {
LOG(ERROR) << "Received termination signal: " << signatl;
((CHtmlClientHandler*)g_globalParams->m_client.get())->Exit();
}
namespace client {
#include <sys/prctl.h>
BrowserWindowStdWin::BrowserWindowStdWin(Delegate* delegate,
const std::string& startup_url)
: BrowserWindow(delegate) {
int main(int argc, char* argv[])
{
::prctl(PR_SET_PDEATHSIG, SIGHUP);
std::wstring sXml;
if (startup_url == "asc_html_file_internal")
for (int i = 0; i < argc && i < 2; ++i)
{
client_handler_ = new CHtmlClientHandler(this, startup_url, g_globalParams->m_pManager);
((CHtmlClientHandler*)(client_handler_.operator ->()))->Init(g_globalParams->sSdkPath, g_globalParams->arFiles, g_globalParams->sDstPath);
std::string sXmlA(argv[i]);
if (0 == sXmlA.find("<html>"))
{
sXml = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)sXmlA.c_str(), (LONG)sXmlA.length());
}
}
else
{
client_handler_ = new ClientHandlerStd(this, startup_url);
}
}
void BrowserWindowStdWin::CreateBrowser(
ClientWindowHandle parent_handle,
const CefRect& rect,
const CefBrowserSettings& settings,
CefRefPtr<CefRequestContext> request_context) {
REQUIRE_MAIN_THREAD();
CefWindowInfo window_info;
RECT wnd_rect = {rect.x, rect.y, rect.x + rect.width, rect.y + rect.height};
window_info.SetAsChild(parent_handle, wnd_rect);
if ("asc_html_file_internal" == client_handler_->startup_url())
{
CefBrowserHost::CreateBrowser(window_info, client_handler_,
((CHtmlClientHandler*)(client_handler_.operator ->()))->GetUrl(),
settings, request_context);
}
else
{
CefBrowserHost::CreateBrowser(window_info, client_handler_,
client_handler_->startup_url(),
settings, request_context);
}
}
void BrowserWindowStdWin::GetPopupConfig(CefWindowHandle temp_handle,
CefWindowInfo& windowInfo,
CefRefPtr<CefClient>& client,
CefBrowserSettings& settings) {
// Note: This method may be called on any thread.
// The window will be properly sized after the browser is created.
windowInfo.SetAsChild(temp_handle, RECT());
client = client_handler_;
}
void BrowserWindowStdWin::ShowPopup(ClientWindowHandle parent_handle,
int x, int y, size_t width, size_t height) {
REQUIRE_MAIN_THREAD();
HWND hwnd = GetWindowHandle();
if (hwnd) {
SetParent(hwnd, parent_handle);
SetWindowPos(hwnd, NULL, x, y,
static_cast<int>(width), static_cast<int>(height),
SWP_NOZORDER);
ShowWindow(hwnd, SW_SHOW);
}
}
void BrowserWindowStdWin::Show() {
REQUIRE_MAIN_THREAD();
#if 0
HWND hwnd = GetWindowHandle();
if (hwnd && !::IsWindowVisible(hwnd))
ShowWindow(hwnd, SW_SHOW);
#endif
}
void BrowserWindowStdWin::Hide() {
REQUIRE_MAIN_THREAD();
HWND hwnd = GetWindowHandle();
if (hwnd) {
// When the frame window is minimized set the browser window size to 0x0 to
// reduce resource usage.
SetWindowPos(hwnd, NULL,
0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE);
}
}
void BrowserWindowStdWin::SetBounds(int x, int y, size_t width, size_t height) {
REQUIRE_MAIN_THREAD();
HWND hwnd = GetWindowHandle();
if (hwnd) {
// Set the browser window bounds.
SetWindowPos(hwnd, NULL, x, y,
static_cast<int>(width), static_cast<int>(height),
SWP_NOZORDER);
}
}
void BrowserWindowStdWin::SetFocus(bool focus) {
REQUIRE_MAIN_THREAD();
if (browser_)
browser_->GetHost()->SetFocus(focus);
}
ClientWindowHandle BrowserWindowStdWin::GetWindowHandle() const {
REQUIRE_MAIN_THREAD();
if (browser_)
return browser_->GetHost()->GetWindowHandle();
return NULL;
}
} // namespace client
#endif
#else
int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
@ -193,6 +75,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
int nCmdShow)
{
std::wstring sXml(lpCmdLine);
#endif
bool bIsChromiumSubprocess = true;
if (0 == sXml.find(L"<html>"))
@ -243,16 +126,20 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
return 1;
}
// Enable High-DPI support on Windows 7 or newer.
CefEnableHighDPISupport();
#ifdef _LINUX
CefMainArgs main_args(argc, argv);
#else
CefMainArgs main_args(hInstance);
void* sandbox_info = NULL;
#endif
// Parse command-line arguments.
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
#ifdef _LINUX
command_line->InitFromArgv(argc, argv);
#else
command_line->InitFromString(::GetCommandLineW());
#endif
// Create a ClientApp of the correct type.
CefRefPtr<CefApp> app;
@ -265,9 +152,9 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
app = new CAscClientAppOther();
// Execute the secondary process, if any.
int exit_code = CefExecuteProcess(main_args, app, sandbox_info);
int exit_code = CefExecuteProcess(main_args, app, NULL);
if (exit_code >= 0)
return exit_code;
return exit_code;
// Create the main context object.
scoped_ptr<client::MainContextImpl> context(new client::MainContextImpl(command_line, true));
@ -275,6 +162,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
CefSettings settings;
settings.no_sandbox = true;
settings.windowless_rendering_enabled = true;
std::wstring sCachePath = g_globalParams->sDstPath;
if (NSDirectory::Exists(sCachePath))
@ -293,38 +181,36 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
// Populate the settings based on command line arguments.
context->PopulateSettings(&settings);
// Create the main message loop object.
scoped_ptr<client::MainMessageLoop> message_loop;
if (settings.multi_threaded_message_loop)
message_loop.reset(new client::MainMessageLoopMultithreadedWin);
else
message_loop.reset(new client::MainMessageLoopStd);
// Initialize CEF.
context->Initialize(main_args, settings, app, sandbox_info);
context->Initialize(main_args, settings, app, NULL);
CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager(NULL);
manager->SetStoragePath(sCachePath, true, NULL);
manager = NULL;
g_globalParams->m_pManager = context->GetRootWindowManager();
#ifdef _LINUX
// Install a signal handler so we clean up after ourselves.
signal(SIGINT, TerminationSignalHandler);
signal(SIGTERM, TerminationSignalHandler);
#endif
// Create the first window.
context->GetRootWindowManager()->CreateRootWindow(
false, // Show controls.
settings.windowless_rendering_enabled ? true : false,
CefRect(), // Use default system size.
"asc_html_file_internal"); // Use default URL.
CefRefPtr<CHtmlClientHandler> client_handler = new CHtmlClientHandler(g_globalParams);
client_handler->Init();
// Run the message loop. This will block until Quit() is called by the
// RootWindowManager after all windows have been destroyed.
int result = message_loop->Run();
CefWindowInfo window_info;
window_info.SetAsWindowless(NULL);
CefRefPtr<CefRequestContext> request_context;
CefBrowserSettings browser_settings;
browser_settings.plugins = STATE_DISABLED;
CefBrowserHost::CreateBrowser(window_info, client_handler.get(), client_handler->GetUrl(), browser_settings, request_context);
scoped_ptr<client::MainMessageLoop> message_loop;
message_loop.reset(new client::MainMessageLoopStd);
message_loop->Run();
// Shut down CEF.
context->Shutdown();
// Release objects in reverse order of creation.
message_loop.reset();
context.reset();
if (!sCachePath.empty())
@ -332,5 +218,5 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
RELEASEOBJECT(g_globalParams);
return result;
return 0;
}

View File

@ -1,442 +0,0 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include <stdlib.h>
#include <unistd.h>
#include <string>
#include "../../../core/DesktopEditor/common/File.h"
#include "../../../core/DesktopEditor/common/Directory.h"
#include "./src/clienthandler.h"
#include "./src/client_app.h"
#include "../../../core/DesktopEditor/xml/include/xmlutils.h"
//#define ASC_HTML_FILE_INTERNAL_LOG
#include "src/client_app.h"
#include "src/clienthandler.h"
#include "tests/shared/common/client_switches.h"
#include "tests/cefclient/browser/main_context_impl.h"
#include "tests/shared/browser/main_message_loop_std.h"
CGlobalHtmlFileParams* g_globalParams;
#if 0
#include "tests/cefclient/browser/browser_window_std_gtk.h"
#include "tests/cefclient/browser/client_handler_std.h"
// подменяем функции окна
namespace client {
namespace {
::Window GetXWindowForWidget(GtkWidget* widget) {
// The GTK window must be visible before we can retrieve the XID.
::Window xwindow = GDK_WINDOW_XID(gtk_widget_get_window(widget));
DCHECK(xwindow);
return xwindow;
}
void SetXWindowVisible(::Window xwindow, bool visible) {
::Display* xdisplay = cef_get_xdisplay();
// Retrieve the atoms required by the below XChangeProperty call.
const char* kAtoms[] = {
"_NET_WM_STATE",
"ATOM",
"_NET_WM_STATE_HIDDEN"
};
Atom atoms[3];
int result = XInternAtoms(xdisplay, const_cast<char**>(kAtoms), 3, false,
atoms);
if (!result)
NOTREACHED();
if (!visible) {
// Set the hidden property state value.
scoped_ptr<Atom[]> data(new Atom[1]);
data[0] = atoms[2];
XChangeProperty(xdisplay,
xwindow,
atoms[0], // name
atoms[1], // type
32, // size in bits of items in 'value'
PropModeReplace,
reinterpret_cast<const unsigned char*>(data.get()),
1); // num items
} else {
// Set an empty array of property state values.
XChangeProperty(xdisplay,
xwindow,
atoms[0], // name
atoms[1], // type
32, // size in bits of items in 'value'
PropModeReplace,
NULL,
0); // num items
}
}
void SetXWindowBounds(::Window xwindow,
int x, int y, size_t width, size_t height) {
::Display* xdisplay = cef_get_xdisplay();
XWindowChanges changes = {0};
changes.x = x;
changes.y = y;
changes.width = static_cast<int>(width);
changes.height = static_cast<int>(height);
XConfigureWindow(xdisplay, xwindow,
CWX | CWY | CWHeight | CWWidth, &changes);
}
} // namespace
BrowserWindowStdGtk::BrowserWindowStdGtk(Delegate* delegate,
const std::string& startup_url)
: BrowserWindow(delegate) {
if (startup_url == "asc_html_file_internal")
{
client_handler_ = new CHtmlClientHandler(this, startup_url, g_globalParams->m_pManager);
((CHtmlClientHandler*)(client_handler_.operator ->()))->Init(g_globalParams->sSdkPath, g_globalParams->arFiles, g_globalParams->sDstPath);
}
else
{
client_handler_ = new ClientHandlerStd(this, startup_url);
}
}
void BrowserWindowStdGtk::CreateBrowser(
ClientWindowHandle parent_handle,
const CefRect& rect,
const CefBrowserSettings& settings,
CefRefPtr<CefRequestContext> request_context) {
REQUIRE_MAIN_THREAD();
CefWindowInfo window_info;
window_info.SetAsChild(GetXWindowForWidget(parent_handle), rect);
if ("asc_html_file_internal" == client_handler_->startup_url())
{
CefBrowserHost::CreateBrowser(window_info, client_handler_,
((CHtmlClientHandler*)(client_handler_.operator ->()))->GetUrl(),
settings, request_context);
}
else
{
CefBrowserHost::CreateBrowser(window_info, client_handler_,
client_handler_->startup_url(),
settings, request_context);
}
}
void BrowserWindowStdGtk::GetPopupConfig(CefWindowHandle temp_handle,
CefWindowInfo& windowInfo,
CefRefPtr<CefClient>& client,
CefBrowserSettings& settings) {
// Note: This method may be called on any thread.
// The window will be properly sized after the browser is created.
windowInfo.SetAsChild(temp_handle, CefRect());
client = client_handler_;
}
void BrowserWindowStdGtk::ShowPopup(ClientWindowHandle parent_handle,
int x, int y, size_t width, size_t height) {
REQUIRE_MAIN_THREAD();
if (browser_) {
::Window parent_xwindow = GetXWindowForWidget(parent_handle);
::Display* xdisplay = cef_get_xdisplay();
::Window xwindow = browser_->GetHost()->GetWindowHandle();
DCHECK(xwindow);
XReparentWindow(xdisplay, xwindow, parent_xwindow, x, y);
SetXWindowBounds(xwindow, x, y, width, height);
SetXWindowVisible(xwindow, true);
}
}
void BrowserWindowStdGtk::Show() {
REQUIRE_MAIN_THREAD();
if (browser_) {
::Window xwindow = browser_->GetHost()->GetWindowHandle();
DCHECK(xwindow);
#if 0
SetXWindowVisible(xwindow, true);
#endif
}
}
void BrowserWindowStdGtk::Hide() {
REQUIRE_MAIN_THREAD();
if (browser_) {
::Window xwindow = browser_->GetHost()->GetWindowHandle();
DCHECK(xwindow);
SetXWindowVisible(xwindow, false);
}
}
void BrowserWindowStdGtk::SetBounds(int x, int y, size_t width, size_t height) {
REQUIRE_MAIN_THREAD();
if (browser_) {
::Window xwindow = browser_->GetHost()->GetWindowHandle();
DCHECK(xwindow);
SetXWindowBounds(xwindow, x, y, width, height);
}
}
void BrowserWindowStdGtk::SetFocus(bool focus) {
REQUIRE_MAIN_THREAD();
if (browser_)
browser_->GetHost()->SetFocus(focus);
}
ClientWindowHandle BrowserWindowStdGtk::GetWindowHandle() const {
REQUIRE_MAIN_THREAD();
// There is no GtkWidget* representation of this object.
NOTREACHED();
return NULL;
}
} // namespace client
#endif
#if defined(_WIN32) || defined(_WIN64) ||defined(_WIN32_WCE)
#include "windows.h"
#include "winbase.h"
#else
#include <pthread.h>
#include <signal.h>
#include "time.h"
#endif
namespace NSThreads
{
static void Sleep(int nMilliseconds)
{
#if defined(_WIN32) || defined(_WIN64) || defined(_WIN32_WCE)
::Sleep((DWORD)nMilliseconds);
#else
struct timespec tim, tim2;
tim.tv_sec = nMilliseconds / 1000;
tim.tv_nsec = (nMilliseconds % 1000) * 1000000;
::nanosleep(&tim , &tim2);
#endif
}
}
void TerminationSignalHandler(int signatl) {
LOG(ERROR) << "Received termination signal: " << signatl;
client::MainContext::Get()->GetRootWindowManager()->CloseAllWindows(true);
}
#include <iostream>
int main(int argc, char* argv[])
{
//::prctl(PR_SET_PDEATHSIG, SIGHUP);
std::cout << "main!!!" << std::endl;
std::wstring sXml;
for (int i = 0; i < argc && i < 2; ++i)
{
std::string sXmlA(argv[i]);
if (0 == sXmlA.find("<html>"))
{
sXml = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)sXmlA.c_str(), (LONG)sXmlA.length());
}
}
bool bIsChromiumSubprocess = true;
if (0 == sXml.find(L"<html>"))
bIsChromiumSubprocess = false;
g_globalParams = new CGlobalHtmlFileParams();
if (!bIsChromiumSubprocess)
{
XmlUtils::CXmlNode oNode;
if (!oNode.FromXmlFile(sXml.substr(6)))
return 1;
XmlUtils::CXmlNodes oNodesSdkPath;
if (!oNode.GetNodes(L"sdk", oNodesSdkPath))
return 1;
XmlUtils::CXmlNode oNodeDstPath;
if (!oNode.GetNode(L"destination", oNodeDstPath))
return 1;
int nCountSdks = oNodesSdkPath.GetCount();
for (int i = 0; i < nCountSdks; ++i)
{
XmlUtils::CXmlNode _node;
oNodesSdkPath.GetAt(i, _node);
g_globalParams->sSdkPath.push_back(_node.GetText());
}
g_globalParams->sDstPath = oNodeDstPath.GetText();
XmlUtils::CXmlNodes oNodesFiles;
if (!oNode.GetNodes(L"file", oNodesFiles))
return 1;
int nCountFiles = oNodesFiles.GetCount();
for (int i = 0; i < nCountFiles; ++i)
{
XmlUtils::CXmlNode oNodeF;
if (oNodesFiles.GetAt(i, oNodeF))
{
g_globalParams->arFiles.push_back(oNodeF.GetText());
}
}
if (0 == g_globalParams->arFiles.size())
return 1;
}
CefMainArgs main_args(argc, argv);
// Parse command-line arguments.
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
command_line->InitFromArgv(argc, argv);
// Create a ClientApp of the correct type.
CefRefPtr<CefApp> app;
client::ClientApp::ProcessType process_type = client::ClientApp::GetProcessType(command_line);
if (process_type == client::ClientApp::BrowserProcess)
app = new CAscClientAppBrowser();
else if (process_type == client::ClientApp::RendererProcess || process_type == client::ClientApp::ZygoteProcess)
app = new CAscClientAppRenderer();
else if (process_type == client::ClientApp::OtherProcess)
app = new CAscClientAppOther();
// Execute the secondary process, if any.
int exit_code = CefExecuteProcess(main_args, app, NULL);
if (exit_code >= 0)
return exit_code;
// Create the main context object.
scoped_ptr<client::MainContextImpl> context(new client::MainContextImpl(command_line, true));
CefSettings settings;
settings.no_sandbox = true;
settings.windowless_rendering_enabled = true;
std::wstring sCachePath = g_globalParams->sDstPath;
if (NSDirectory::Exists(sCachePath))
{
sCachePath += L"data";
NSDirectory::CreateDirectory(sCachePath);
cef_string_t _cache;
memset(&_cache, 0, sizeof(_cache));
cef_string_from_wide(sCachePath.c_str(), sCachePath.length(), &_cache);
settings.cache_path = _cache;
}
else
sCachePath = L"";
// Populate the settings based on command line arguments.
context->PopulateSettings(&settings);
// Initialize CEF.
context->Initialize(main_args, settings, app, NULL);
CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager(NULL);
manager->SetStoragePath(sCachePath, true, NULL);
manager = NULL;
// Install a signal handler so we clean up after ourselves.
signal(SIGINT, TerminationSignalHandler);
signal(SIGTERM, TerminationSignalHandler);
/*
// Create the first window.
context->GetRootWindowManager()->CreateRootWindow(
false, // Show controls.
settings.windowless_rendering_enabled ? true : false,
CefRect(), // Use default system size.
"asc_html_file_internal"); // Use default URL.
// Run the message loop. This will block until Quit() is called by the
// RootWindowManager after all windows have been destroyed.
int result = message_loop->Run();
*/
CefRefPtr<CHtmlClientHandler> client_handler_ = new CHtmlClientHandler("asc_html_file_internal", g_globalParams);
client_handler_->Init(g_globalParams->sSdkPath, g_globalParams->arFiles, g_globalParams->sDstPath);
CefWindowInfo window_info;
window_info.SetAsWindowless(NULL);
// Create the browser asynchronously.
CefString sUrl = client_handler_->GetUrl();
CefRefPtr<CefRequestContext> request_context;
CefBrowserSettings _settings;
CefBrowserHost::CreateBrowser(window_info, client_handler_.get(), sUrl, _settings, request_context);
scoped_ptr<client::MainMessageLoop> message_loop;
message_loop.reset(new client::MainMessageLoopStd);
message_loop->Run();
/*
while (g_globalParams->m_bIsRunned)
{
CefDoMessageLoopWork();
::NSThreads::Sleep(40);
}
*/
// Shut down CEF.
context->Shutdown();
context.reset();
if (!sCachePath.empty())
NSDirectory::DeleteDirectory(sCachePath);
RELEASEOBJECT(g_globalParams);
return 0;
}