Skip to content

Commit

Permalink
Version 12.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
bablosoft committed Jul 12, 2016
1 parent e89ec50 commit d903ecb
Show file tree
Hide file tree
Showing 38 changed files with 1,029 additions and 245 deletions.
10 changes: 6 additions & 4 deletions ChromeWorker/ChromeWorker.pro
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,16 @@ SOURCES += main.cpp \
replaceall.cpp \
convertencoding.cpp \
fixcontentcharset.cpp \
extract_resources.cpp
extract_resources.cpp \
handlersmanager.cpp

INCLUDEPATH += $(BAS_PATH_WORKER)/include


LIBS += -L$(BAS_PATH_WORKER)/lib -llibiconv -llibcef -lcef_sandbox -llibcef_dll_wrapper -lAdvapi32 -luser32 -lPsapi -lshell32 -lDbgHelp -lgdi32 -llibcurl -llibeay32 -lssleay32 -lnetwork-uri
LIBS += -L$(BAS_PATH_WORKER)/lib -llibiconv -llibcef -llibcef_dll_wrapper -lAdvapi32 -luser32 -lPsapi -lshell32 -lDbgHelp -lgdi32 -llibcurl -llibeay32 -lssleay32 -lnetwork-uri
QMAKE_CXXFLAGS_RELEASE += /MT

QMAKE_CXXFLAGS_DEBUG += /MTd /FS
QMAKE_CXXFLAGS_DEBUG += /MTd

HEADERS += \
mainapp.h \
Expand Down Expand Up @@ -97,7 +98,8 @@ HEADERS += \
replaceall.h \
convertencoding.h \
fixcontentcharset.h \
extract_resources.h
extract_resources.h \
handlersmanager.h

INCLUDEPATH += xml json png

Expand Down
6 changes: 6 additions & 0 deletions ChromeWorker/browserdata.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ class BrowserData
InspectResult _Inspect;
ModulesDataList _ModulesData;

//Dialogs
std::string _PromptResult;
std::string _HttpAuthLogin;
std::string _HttpAuthPassword;


//Reset
std::atomic_bool IsReset;
std::atomic_bool IsAboutBlankLoaded;
Expand Down
25 changes: 25 additions & 0 deletions ChromeWorker/commandparser.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "commandparser.h"
#include "rapidxml.hpp"
#include "log.h"
#include "split.h"

CommandParser::CommandParser()
{
Expand Down Expand Up @@ -125,6 +126,30 @@ void CommandParser::Parse(const std::string& Xml)
f(value);
}

CommandNode = MessagesNode->first_node("SetPromptResult");
if(CommandNode)
{
std::string value = CommandNode->value();
worker_log("EventSetPromptResult");
for(auto f:EventSetPromptResult)
f(value);
}

CommandNode = MessagesNode->first_node("SetHttpAuthResult");
if(CommandNode)
{
std::string value = CommandNode->value();
std::vector<std::string> s = split(value,':');
if(s.size() == 2)
{
std::string login = s[0];
std::string password = s[1];
worker_log("EventSetHttpAuthResult");
for(auto f:EventSetHttpAuthResult)
f(login,password);
}
}

CommandNode = MessagesNode->first_node("GetCookiesForUrl");
if(CommandNode)
{
Expand Down
3 changes: 3 additions & 0 deletions ChromeWorker/commandparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ class CommandParser
std::vector<std::function<void(const std::string&, const std::string&)> > EventAddHeader;
std::vector<std::function<void(const std::string&)> > EventSetUserAgent;
std::vector<std::function<void(const std::string&)> > EventSetOpenFileName;
std::vector<std::function<void(const std::string&)> > EventSetPromptResult;
std::vector<std::function<void(const std::string&,const std::string&)> > EventSetHttpAuthResult;

std::vector<std::function<void()> > EventGetUrl;
std::vector<std::function<void(int, int)> > EventResize;
std::vector<std::function<void(const std::string&)> > EventSetWindow;
Expand Down
12 changes: 12 additions & 0 deletions ChromeWorker/curlresourcehandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,12 @@ void CurlThreadFunction(CurlResourceHandler::CurlThreadDataClass * Data)
curl_easy_setopt(curl_handle,CURLOPT_PROXYUSERPWD,Data->ProxyAuth.c_str());
}

if(!Data->HttpAuthLogin.empty() && !Data->HttpAuthPassword.empty())
{
curl_easy_setopt(curl_handle,CURLOPT_USERNAME,Data->HttpAuthLogin.c_str());
curl_easy_setopt(curl_handle,CURLOPT_PASSWORD,Data->HttpAuthPassword.c_str());
}

//if(write_logs)
//{
//curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);
Expand Down Expand Up @@ -300,6 +306,12 @@ bool CurlResourceHandler::ProcessRequest(CefRefPtr<CefRequest> request, CefRefPt
CurlThreadData.ProxyAuth = _BrowserData->_Proxy.AuthToString();
}

{
LOCK_HTTP_AUTH
CurlThreadData.HttpAuthLogin = _BrowserData->_HttpAuthLogin;
CurlThreadData.HttpAuthPassword = _BrowserData->_HttpAuthPassword;
}

CefRequest::HeaderMap ReqestHeaderMap;
request->GetHeaderMap(ReqestHeaderMap);

Expand Down
2 changes: 2 additions & 0 deletions ChromeWorker/curlresourcehandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ class CurlResourceHandler : public CefResourceHandler
std::vector<char> PostData;
std::string Proxy;
std::string ProxyAuth;
std::string HttpAuthLogin;
std::string HttpAuthPassword;

/* Sync */
std::atomic_bool StopRequest = false;
Expand Down
84 changes: 80 additions & 4 deletions ChromeWorker/devtoolshandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,27 @@
DevToolsHandler::DevToolsHandler()
{
OpenAfterClose = false;
DoClose = false;
DevToolsBrowserId = -1;
}

void DevToolsHandler::SetData(BrowserData *Data)
{
this->Data = Data;
}

void DevToolsHandler::SetLayout(MainLayout *Layout)
{
this->Layout = Layout;
}


void DevToolsHandler::SetHandlersManager(HandlersManager *_HandlersManager)
{
this->_HandlersManager = _HandlersManager;
this->_HandlersManager->EventNeedToCloseDevTools.push_back(std::bind(&DevToolsHandler::CloseDevTools,this));
}

void DevToolsHandler::Timer()
{
if(OpenAfterClose)
Expand All @@ -24,18 +38,80 @@ void DevToolsHandler::Timer()
window_info.SetAsChild(Data->_MainWindowHandle, rect);
CefBrowserSettings browser_settings;

Browser->GetHost()->ShowDevTools(window_info, Handler, browser_settings, Point);
_HandlersManager->GetBrowser()->GetHost()->ShowDevTools(window_info, this, browser_settings, Point);

}
}

if(DoClose)
{
AfterCloseTimer--;
if(AfterCloseTimer<0)
{
DoClose = false;
DevToolsBrowserId = -1;
//OpenDevTools();
}
}
}

void DevToolsHandler::OpenNewDevTools(CefPoint Point,CefRefPtr<DevToolsHandler> Handler,CefRefPtr<CefBrowser> Browser, RECT rect)
void DevToolsHandler::OpenDevTools()
{
if(DevToolsBrowserId > 0)
return;
CefWindowInfo window_info;
RECT rect = Layout->GetDevToolsRectangle(Data->WidthBrowser,Data->HeightBrowser,Data->WidthAll,Data->HeightAll);
window_info.SetAsChild(Data->_MainWindowHandle, rect);
CefBrowserSettings browser_settings;
_HandlersManager->GetBrowser()->GetHost()->ShowDevTools(window_info, this, browser_settings, CefPoint(0,0));
DevToolsBrowserId = _HandlersManager->GetBrowser()->GetIdentifier();
//_HandlersManager->SetDevToolsBorwserId(DevToolsBrowserId);
}

void DevToolsHandler::OpenDevTools(CefPoint Point)
{
if(DoClose)
return;

if(OpenAfterClose)
return;

RECT rect = Layout->GetDevToolsRectangle(Data->WidthBrowser,Data->HeightBrowser,Data->WidthAll,Data->HeightAll);
HWND HDevTools = Layout->GetDevToolsHandle();
if(HDevTools)
{
DestroyWindow(HDevTools);
}

OpenAfterClose = true;
AfterCloseTimer = 10;

this->Point = Point;
this->Handler = Handler;
this->Browser = Browser;
this->rect = rect;

DevToolsBrowserId = _HandlersManager->GetBrowser()->GetIdentifier();
//_HandlersManager->SetDevToolsBorwserId(DevToolsBrowserId);
}

void DevToolsHandler::CloseDevTools()
{
if(DoClose)
return;

if(OpenAfterClose)
return;

if(DevToolsBrowserId < 0)
return;

HWND HDevTools = Layout->GetDevToolsHandle();
if(HDevTools)
{
DestroyWindow(HDevTools);
DoClose = true;
AfterCloseTimer = 10;
}



}
17 changes: 13 additions & 4 deletions ChromeWorker/devtoolshandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,33 @@
#define DEVTOOLSHANDLER_H
#include "include/cef_client.h"
#include "browserdata.h"
#include "handlersmanager.h"
#include "mainlayout.h"

class DevToolsHandler : public CefClient
{

CefPoint Point;
CefRefPtr<DevToolsHandler> Handler;
CefRefPtr<CefBrowser> Browser;
HandlersManager *_HandlersManager = 0;
RECT rect;
BrowserData *Data;
MainLayout *Layout;

bool OpenAfterClose;
bool DoClose;

int AfterCloseTimer;
int DevToolsBrowserId;

public:
DevToolsHandler();

void SetData(BrowserData *Data);

void OpenNewDevTools(CefPoint Point,CefRefPtr<DevToolsHandler> Handler,CefRefPtr<CefBrowser> Browser, RECT rect);
void SetLayout(MainLayout *Layout);
void SetHandlersManager(HandlersManager *_HandlersManager);
void OpenDevTools();
void OpenDevTools(CefPoint Point);
void CloseDevTools();
void Timer();
private:
IMPLEMENT_REFCOUNTING(DevToolsHandler);
Expand Down
Loading

0 comments on commit d903ecb

Please sign in to comment.