Move navigator related APIs to webContents.

This commit is contained in:
Cheng Zhao 2014-04-25 12:52:30 +08:00
parent e70d195cde
commit c8a82e6e50
5 changed files with 67 additions and 74 deletions

View file

@ -62,6 +62,13 @@ bool WebContents::IsAlive() const {
return web_contents_ != NULL; return web_contents_ != NULL;
} }
void WebContents::LoadURL(const GURL& url) {
content::NavigationController::LoadURLParams params(url);
params.transition_type = content::PAGE_TRANSITION_TYPED;
params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
web_contents_->GetController().LoadURLWithParams(params);
}
GURL WebContents::GetURL() const { GURL WebContents::GetURL() const {
return web_contents_->GetURL(); return web_contents_->GetURL();
} }
@ -82,6 +89,42 @@ void WebContents::Stop() {
web_contents_->Stop(); web_contents_->Stop();
} }
void WebContents::Reload() {
web_contents_->GetController().Reload(false);
}
void WebContents::ReloadIgnoringCache() {
web_contents_->GetController().ReloadIgnoringCache(false);
}
bool WebContents::CanGoBack() const {
return web_contents_->GetController().CanGoBack();
}
bool WebContents::CanGoForward() const {
return web_contents_->GetController().CanGoForward();
}
bool WebContents::CanGoToOffset(int offset) const {
return web_contents_->GetController().CanGoToOffset(offset);
}
void WebContents::GoBack() {
web_contents_->GetController().GoBack();
}
void WebContents::GoForward() {
web_contents_->GetController().GoForward();
}
void WebContents::GoToIndex(int index) {
web_contents_->GetController().GoToIndex(index);
}
void WebContents::GoToOffset(int offset) {
web_contents_->GetController().GoToOffset(offset);
}
int WebContents::GetRoutingID() const { int WebContents::GetRoutingID() const {
return web_contents_->GetRoutingID(); return web_contents_->GetRoutingID();
} }
@ -103,11 +146,21 @@ mate::ObjectTemplateBuilder WebContents::GetObjectTemplateBuilder(
v8::Isolate* isolate) { v8::Isolate* isolate) {
return mate::ObjectTemplateBuilder(isolate) return mate::ObjectTemplateBuilder(isolate)
.SetMethod("isAlive", &WebContents::IsAlive) .SetMethod("isAlive", &WebContents::IsAlive)
.SetMethod("loadUrl", &WebContents::LoadURL)
.SetMethod("getUrl", &WebContents::GetURL) .SetMethod("getUrl", &WebContents::GetURL)
.SetMethod("getTitle", &WebContents::GetTitle) .SetMethod("getTitle", &WebContents::GetTitle)
.SetMethod("isLoading", &WebContents::IsLoading) .SetMethod("isLoading", &WebContents::IsLoading)
.SetMethod("isWaitingForResponse", &WebContents::IsWaitingForResponse) .SetMethod("isWaitingForResponse", &WebContents::IsWaitingForResponse)
.SetMethod("stop", &WebContents::Stop) .SetMethod("stop", &WebContents::Stop)
.SetMethod("reload", &WebContents::Reload)
.SetMethod("reloadIgnoringCache", &WebContents::ReloadIgnoringCache)
.SetMethod("canGoBack", &WebContents::CanGoBack)
.SetMethod("canGoForward", &WebContents::CanGoForward)
.SetMethod("canGoToOffset", &WebContents::CanGoToOffset)
.SetMethod("goBack", &WebContents::GoBack)
.SetMethod("goForward", &WebContents::GoForward)
.SetMethod("goToIndex", &WebContents::GoToIndex)
.SetMethod("goToOffset", &WebContents::GoToOffset)
.SetMethod("getRoutingId", &WebContents::GetRoutingID) .SetMethod("getRoutingId", &WebContents::GetRoutingID)
.SetMethod("getProcessId", &WebContents::GetProcessID) .SetMethod("getProcessId", &WebContents::GetProcessID)
.SetMethod("isCrashed", &WebContents::IsCrashed) .SetMethod("isCrashed", &WebContents::IsCrashed)

View file

@ -20,11 +20,21 @@ class WebContents : public mate::EventEmitter,
content::WebContents* web_contents); content::WebContents* web_contents);
bool IsAlive() const; bool IsAlive() const;
void LoadURL(const GURL& url);
GURL GetURL() const; GURL GetURL() const;
string16 GetTitle() const; string16 GetTitle() const;
bool IsLoading() const; bool IsLoading() const;
bool IsWaitingForResponse() const; bool IsWaitingForResponse() const;
void Stop(); void Stop();
void Reload();
void ReloadIgnoringCache();
bool CanGoBack() const;
bool CanGoForward() const;
bool CanGoToOffset(int offset) const;
void GoBack();
void GoForward();
void GoToIndex(int index);
void GoToOffset(int offset);
int GetRoutingID() const; int GetRoutingID() const;
int GetProcessID() const; int GetProcessID() const;
bool IsCrashed() const; bool IsCrashed() const;

View file

@ -7,13 +7,9 @@
#include "atom/browser/api/atom_api_web_contents.h" #include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/native_window.h" #include "atom/browser/native_window.h"
#include "atom/common/native_mate_converters/function_converter.h" #include "atom/common/native_mate_converters/function_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/native_mate_converters/value_converter.h" #include "atom/common/native_mate_converters/value_converter.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h" #include "base/callback.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
#include "native_mate/constructor.h" #include "native_mate/constructor.h"
#include "native_mate/dictionary.h" #include "native_mate/dictionary.h"
@ -23,8 +19,6 @@
#include "atom/common/node_includes.h" #include "atom/common/node_includes.h"
using content::NavigationController;
namespace mate { namespace mate {
template<> template<>
@ -319,51 +313,6 @@ mate::Handle<WebContents> Window::GetDevToolsWebContents(
return WebContents::Create(isolate, window_->GetDevToolsWebContents()); return WebContents::Create(isolate, window_->GetDevToolsWebContents());
} }
void Window::LoadURL(const GURL& url) {
NavigationController& controller = window_->GetWebContents()->GetController();
content::NavigationController::LoadURLParams params(url);
params.transition_type = content::PAGE_TRANSITION_TYPED;
params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
controller.LoadURLWithParams(params);
}
bool Window::CanGoBack() {
return window_->GetWebContents()->GetController().CanGoBack();
}
bool Window::CanGoForward() {
return window_->GetWebContents()->GetController().CanGoForward();
}
bool Window::CanGoToOffset(int offset) {
return window_->GetWebContents()->GetController().CanGoToOffset(offset);
}
void Window::GoBack() {
window_->GetWebContents()->GetController().GoBack();
}
void Window::GoForward() {
window_->GetWebContents()->GetController().GoForward();
}
void Window::GoToIndex(int index) {
window_->GetWebContents()->GetController().GoToIndex(index);
}
void Window::GoToOffset(int offset) {
window_->GetWebContents()->GetController().GoToOffset(offset);
}
void Window::Reload() {
window_->GetWebContents()->GetController().Reload(false);
}
void Window::ReloadIgnoringCache() {
window_->GetWebContents()->GetController().ReloadIgnoringCache(false);
}
// static // static
void Window::BuildPrototype(v8::Isolate* isolate, void Window::BuildPrototype(v8::Isolate* isolate,
v8::Handle<v8::ObjectTemplate> prototype) { v8::Handle<v8::ObjectTemplate> prototype) {
@ -409,17 +358,7 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("isWebViewFocused", &Window::IsWebViewFocused) .SetMethod("isWebViewFocused", &Window::IsWebViewFocused)
.SetMethod("capturePage", &Window::CapturePage) .SetMethod("capturePage", &Window::CapturePage)
.SetMethod("_getWebContents", &Window::GetWebContents) .SetMethod("_getWebContents", &Window::GetWebContents)
.SetMethod("_getDevToolsWebContents", &Window::GetDevToolsWebContents) .SetMethod("_getDevToolsWebContents", &Window::GetDevToolsWebContents);
.SetMethod("loadUrl", &Window::LoadURL)
.SetMethod("canGoBack", &Window::CanGoBack)
.SetMethod("canGoForward", &Window::CanGoForward)
.SetMethod("canGoToOffset", &Window::CanGoToOffset)
.SetMethod("goBack", &Window::GoBack)
.SetMethod("goForward", &Window::GoForward)
.SetMethod("goToIndex", &Window::GoToIndex)
.SetMethod("goToOffset", &Window::GoToOffset)
.SetMethod("reload", &Window::Reload)
.SetMethod("reloadIgnoringCache", &Window::ReloadIgnoringCache);
} }
} // namespace api } // namespace api

View file

@ -103,18 +103,6 @@ class Window : public mate::EventEmitter,
mate::Handle<WebContents> GetWebContents(v8::Isolate* isolate) const; mate::Handle<WebContents> GetWebContents(v8::Isolate* isolate) const;
mate::Handle<WebContents> GetDevToolsWebContents(v8::Isolate* isolate) const; mate::Handle<WebContents> GetDevToolsWebContents(v8::Isolate* isolate) const;
// APIs for NavigationController.
void LoadURL(const GURL& url);
bool CanGoBack();
bool CanGoForward();
bool CanGoToOffset(int offset);
void GoBack();
void GoForward();
void GoToIndex(int index);
void GoToOffset(int offset);
void Reload();
void ReloadIgnoringCache();
scoped_ptr<NativeWindow> window_; scoped_ptr<NativeWindow> window_;
DISALLOW_COPY_AND_ASSIGN(Window); DISALLOW_COPY_AND_ASSIGN(Window);

View file

@ -88,7 +88,10 @@ BrowserWindow.fromDevTools = (processId, routingId) ->
devtools.routingId == routingId devtools.routingId == routingId
# Be compatible with old API. # Be compatible with old API.
BrowserWindow::loadUrl = (url) -> @webContents.loadUrl(url)
BrowserWindow::getUrl = -> @webContents.getUrl() BrowserWindow::getUrl = -> @webContents.getUrl()
BrowserWindow::reload = -> @webContents.reload()
BrowserWindow::reloadIgnoringCache = -> @webContents.reloadIgnoringCache()
BrowserWindow::getPageTitle = -> @webContents.getTitle() BrowserWindow::getPageTitle = -> @webContents.getTitle()
BrowserWindow::isLoading = -> @webContents.isLoading() BrowserWindow::isLoading = -> @webContents.isLoading()
BrowserWindow::isWaitingForResponse = -> @webContents.isWaitingForResponse() BrowserWindow::isWaitingForResponse = -> @webContents.isWaitingForResponse()