|
|
@@ -29,7 +29,7 @@ namespace Atomic
|
|
|
void* GetNSWindowContentView(void* window);
|
|
|
#endif
|
|
|
|
|
|
-class WebClientPrivate : public CefClient, public CefLifeSpanHandler, public CefLoadHandler
|
|
|
+class WebClientPrivate : public CefClient, public CefLifeSpanHandler, public CefLoadHandler, public CefDisplayHandler
|
|
|
{
|
|
|
friend class WebClient;
|
|
|
|
|
|
@@ -61,15 +61,17 @@ public:
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
+ virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() OVERRIDE {
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
// CefLoadHandler
|
|
|
|
|
|
void OnLoadStart(CefRefPtr<CefBrowser> browser,
|
|
|
CefRefPtr<CefFrame> frame) OVERRIDE
|
|
|
{
|
|
|
- if (webClient_.Null())
|
|
|
- return;
|
|
|
-
|
|
|
- if (!frame->IsMain())
|
|
|
+ if (webClient_.Null() || !frame->IsMain())
|
|
|
return;
|
|
|
|
|
|
VariantMap eventData;
|
|
|
@@ -88,10 +90,7 @@ public:
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
int httpStatusCode) OVERRIDE
|
|
|
{
|
|
|
- if (webClient_.Null())
|
|
|
- return;
|
|
|
-
|
|
|
- if (!frame->IsMain())
|
|
|
+ if (webClient_.Null() || !frame->IsMain())
|
|
|
return;
|
|
|
|
|
|
VariantMap eventData;
|
|
|
@@ -123,8 +122,57 @@ public:
|
|
|
bool canGoForward) OVERRIDE
|
|
|
{
|
|
|
|
|
|
+ if (webClient_.Null())
|
|
|
+ return;
|
|
|
+
|
|
|
+ VariantMap eventData;
|
|
|
+ eventData[WebViewLoadStateChange::P_CLIENT] = webClient_;
|
|
|
+ eventData[WebViewLoadStateChange::P_LOADING] = isLoading;
|
|
|
+ eventData[WebViewLoadStateChange::P_CANGOBACK] = canGoBack;
|
|
|
+ eventData[WebViewLoadStateChange::P_CANGOFORWARD] = canGoForward;
|
|
|
+
|
|
|
+ webClient_->SendEvent(E_WEBVIEWLOADSTATECHANGE, eventData);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // CefDisplayHandler
|
|
|
+
|
|
|
+ void OnAddressChange(CefRefPtr<CefBrowser> browser,
|
|
|
+ CefRefPtr<CefFrame> frame,
|
|
|
+ const CefString& url) OVERRIDE
|
|
|
+ {
|
|
|
+ if (webClient_.Null() || !frame->IsMain())
|
|
|
+ return;
|
|
|
+
|
|
|
+ VariantMap eventData;
|
|
|
+ eventData[WebViewAddressChange::P_CLIENT] = webClient_;
|
|
|
+
|
|
|
+ String _url;
|
|
|
+ ConvertCEFString(url, _url);
|
|
|
+ eventData[WebViewAddressChange::P_URL] = _url;
|
|
|
+
|
|
|
+ webClient_->SendEvent(E_WEBVIEWADDRESSCHANGE, eventData);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ void OnTitleChange(CefRefPtr<CefBrowser> browser,
|
|
|
+ const CefString& title) OVERRIDE
|
|
|
+ {
|
|
|
+ if (webClient_.Null())
|
|
|
+ return;
|
|
|
+
|
|
|
+ VariantMap eventData;
|
|
|
+ eventData[WebViewTitleChange::P_CLIENT] = webClient_;
|
|
|
+
|
|
|
+ String _title;
|
|
|
+ ConvertCEFString(title, _title);
|
|
|
+ eventData[WebViewTitleChange::P_TITLE] = _title;
|
|
|
+
|
|
|
+ webClient_->SendEvent(E_WEBVIEWTITLECHANGE, eventData);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
|
|
|
CefProcessId source_process,
|
|
|
CefRefPtr<CefProcessMessage> message) OVERRIDE
|
|
|
@@ -395,6 +443,40 @@ void WebClient::LoadURL(const String& url)
|
|
|
|
|
|
}
|
|
|
|
|
|
+void WebClient::GoBack()
|
|
|
+{
|
|
|
+ if (!d_->browser_.get())
|
|
|
+ return;
|
|
|
+
|
|
|
+ d_->browser_->GoBack();
|
|
|
+}
|
|
|
+
|
|
|
+void WebClient::GoForward()
|
|
|
+{
|
|
|
+ if (!d_->browser_.get())
|
|
|
+ return;
|
|
|
+
|
|
|
+ d_->browser_->GoForward();
|
|
|
+}
|
|
|
+
|
|
|
+bool WebClient::IsLoading()
|
|
|
+{
|
|
|
+ if (!d_->browser_.get())
|
|
|
+ return false;
|
|
|
+
|
|
|
+ return d_->browser_->IsLoading();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void WebClient::Reload()
|
|
|
+{
|
|
|
+ if (!d_->browser_.get())
|
|
|
+ return;
|
|
|
+
|
|
|
+ d_->browser_->Reload();
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
void WebClient::ShortcutCut()
|
|
|
{
|
|
|
if (!d_->browser_.get())
|