18
18
#include "oxide_qt_web_view_adapter.h"
20
22
#include "base/logging.h"
21
23
#include "ui/gfx/size.h"
22
24
#include "url/gurl.h"
26
#include "qt/core/api/oxideqnewviewrequest_p.h"
24
27
#include "qt/core/api/oxideqwebpreferences.h"
25
28
#include "qt/core/api/oxideqwebpreferences_p.h"
26
29
#include "qt/core/browser/oxide_qt_web_frame.h"
27
#include "qt/core/glue/private/oxide_qt_web_view_adapter_p.h"
30
#include "qt/core/browser/oxide_qt_web_view.h"
29
32
#include "oxide_qt_web_context_adapter_p.h"
30
33
#include "oxide_qt_web_frame_adapter.h"
38
void WebViewAdapter::Initialized() {
39
DCHECK(isInitialized());
41
OnInitialized(construct_props_->incognito,
42
construct_props_->context);
43
construct_props_.reset();
46
void WebViewAdapter::WebPreferencesChanged() {
47
if (!priv->GetWebPreferences()) {
48
setPreferences(new OxideQWebPreferences(adapterToQObject(this)));
49
} else if (isInitialized()) {
50
OnWebPreferencesChanged();
35
54
WebViewAdapter::WebViewAdapter(QObject* q) :
37
priv(WebViewAdapterPrivate::Create(this)) {
56
priv(WebView::Create(this)),
57
construct_props_(new ConstructProperties()),
58
created_with_new_view_request_(false) {
38
59
setPreferences(new OxideQWebPreferences(adapterToQObject(this)));
41
62
WebViewAdapter::~WebViewAdapter() {}
43
void WebViewAdapter::init(WebContextAdapter* context,
44
const QSize& initial_size,
46
const QUrl& initial_url,
49
WebContextAdapterPrivate::get(context)->context(),
51
gfx::Size(initial_size.width(), initial_size.height()))) {
55
if (!initial_url.isEmpty()) {
56
priv->SetURL(GURL(initial_url.toString().toStdString()));
59
updateVisibility(visible);
64
void WebViewAdapter::init() {
65
if (created_with_new_view_request_ || isInitialized()) {
69
// construct_props_ is deleted in Initialized()
70
QUrl url = construct_props_->url;
72
oxide::WebView::Params params;
74
WebContextAdapterPrivate::get(construct_props_->context)->GetContext();
75
params.incognito = construct_props_->incognito;
76
if (!priv->Init(params)) {
81
priv->SetURL(GURL(url.toString().toStdString()));
62
86
QUrl WebViewAdapter::url() const {
87
if (construct_props_) {
88
return construct_props_->url;
63
91
return QUrl(QString::fromStdString(priv->GetURL().spec()));
66
94
void WebViewAdapter::setUrl(const QUrl& url) {
67
priv->SetURL(GURL(url.toString().toStdString()));
95
if (construct_props_) {
96
construct_props_->url = url;
98
priv->SetURL(GURL(url.toString().toStdString()));
70
102
QString WebViewAdapter::title() const {
82
114
bool WebViewAdapter::incognito() const {
83
return priv->IsIncognito();
115
if (construct_props_) {
116
return construct_props_->incognito;
119
return priv->IsIncognito();
122
void WebViewAdapter::setIncognito(bool incognito) {
123
if (!construct_props_) {
124
qWarning() << "Cannot change incognito mode after WebView is initialized";
128
construct_props_->incognito = incognito;
86
131
bool WebViewAdapter::loading() const {
96
return frame->GetAdapter();
141
return frame->adapter();
144
WebContextAdapter* WebViewAdapter::context() const {
145
if (construct_props_) {
146
return construct_props_->context;
149
WebContextAdapterPrivate* context =
150
WebContextAdapterPrivate::FromBrowserContext(priv->GetBrowserContext());
155
return context->adapter();
158
void WebViewAdapter::setContext(WebContextAdapter* context) {
159
DCHECK(construct_props_);
160
construct_props_->context = context;
99
163
void WebViewAdapter::updateSize(const QSize& size) {
192
void WebViewAdapter::WebPreferencesChanged() {
193
if (!priv->GetWebPreferences()) {
194
setPreferences(new OxideQWebPreferences(adapterToQObject(this)));
195
} else if (isInitialized()) {
196
OnWebPreferencesChanged();
252
void WebViewAdapter::setRequest(OxideQNewViewRequest* request) {
253
if (isInitialized()) {
254
qWarning() << "Cannot assign NewViewRequest to an already constructed WebView";
258
if (created_with_new_view_request_) {
262
OxideQNewViewRequestPrivate* rd = OxideQNewViewRequestPrivate::get(request);
264
qWarning() << "Cannot assign NewViewRequest to more than one WebView";
268
rd->view = priv->AsWeakPtr();
269
created_with_new_view_request_ = true;
200
272
} // namespace qt