WebViewImpl* WebViewHelper::initializeWithOpener( WebFrame* opener, bool enableJavascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClient, TestWebWidgetClient* webWidgetClient, void (*updateSettingsFunc)(WebSettings*)) { reset(); if (!webFrameClient) webFrameClient = defaultWebFrameClient(); if (!webViewClient) webViewClient = defaultWebViewClient(); if (!webWidgetClient) webWidgetClient = webViewClient->widgetClient(); m_webView = WebViewImpl::create(webViewClient, WebPageVisibilityStateVisible); m_webView->settings()->setJavaScriptEnabled(enableJavascript); m_webView->settings()->setPluginsEnabled(true); // Enable (mocked) network loads of image URLs, as this simplifies // the completion of resource loads upon test shutdown & helps avoid // dormant loads trigger Resource leaks for image loads. // // Consequently, all external image resources must be mocked. m_webView->settings()->setLoadsImagesAutomatically(true); if (updateSettingsFunc) updateSettingsFunc(m_webView->settings()); else m_webView->settings()->setDeviceSupportsMouse(false); if (m_settingOverrider) m_settingOverrider->overrideSettings(m_webView->settings()); m_webView->setDeviceScaleFactor( webViewClient->screenInfo().deviceScaleFactor); m_webView->setDefaultPageScaleLimits(1, 4); WebLocalFrame* frame = WebLocalFrameImpl::create(WebTreeScopeType::Document, webFrameClient, opener); m_webView->setMainFrame(frame); // TODO(dcheng): The main frame widget currently has a special case. // Eliminate this once WebView is no longer a WebWidget. blink::WebFrameWidget::create(webWidgetClient, m_webView, frame); m_testWebViewClient = webViewClient; return m_webView; }
WebViewImpl* WebViewHelper::initialize(bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient, void (*updateSettingsFunc)(WebSettings*)) { reset(); if (!webFrameClient) webFrameClient = defaultWebFrameClient(); if (!webViewClient) webViewClient = defaultWebViewClient(); m_webView = WebViewImpl::create(webViewClient); m_webView->settings()->setJavaScriptEnabled(enableJavascript); if (updateSettingsFunc) { updateSettingsFunc(m_webView->settings()); } else { m_webView->settings()->setDeviceSupportsMouse(false); m_webView->settings()->setForceCompositingMode(true); } m_webView->setMainFrame(WebLocalFrameImpl::create(webFrameClient)); return m_webView; }