| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 m_chromeClient = adoptPtr(new PagePopupChromeClient(this)); | 190 m_chromeClient = adoptPtr(new PagePopupChromeClient(this)); |
| 191 pageClients.chromeClient = m_chromeClient.get(); | 191 pageClients.chromeClient = m_chromeClient.get(); |
| 192 | 192 |
| 193 m_page = adoptPtr(new Page(pageClients)); | 193 m_page = adoptPtr(new Page(pageClients)); |
| 194 m_page->settings().setScriptEnabled(true); | 194 m_page->settings().setScriptEnabled(true); |
| 195 m_page->settings().setAllowScriptsToCloseWindows(true); | 195 m_page->settings().setAllowScriptsToCloseWindows(true); |
| 196 m_page->setDeviceScaleFactor(m_webView->deviceScaleFactor()); | 196 m_page->setDeviceScaleFactor(m_webView->deviceScaleFactor()); |
| 197 m_page->settings().setDeviceSupportsTouch(m_webView->page()->settings().devi
ceSupportsTouch()); | 197 m_page->settings().setDeviceSupportsTouch(m_webView->page()->settings().devi
ceSupportsTouch()); |
| 198 | 198 |
| 199 static ContextFeaturesClient* pagePopupFeaturesClient = new PagePopupFeatur
esClient(); | 199 static ContextFeaturesClient* pagePopupFeaturesClient = new PagePopupFeatur
esClient(); |
| 200 provideContextFeaturesTo(m_page.get(), pagePopupFeaturesClient); | 200 provideContextFeaturesTo(*m_page, pagePopupFeaturesClient); |
| 201 static FrameLoaderClient* emptyFrameLoaderClient = new EmptyFrameLoaderClie
nt(); | 201 static FrameLoaderClient* emptyFrameLoaderClient = new EmptyFrameLoaderClie
nt(); |
| 202 RefPtr<Frame> frame = Frame::create(FrameInit::create(0, &m_page->frameHost(
), emptyFrameLoaderClient)); | 202 RefPtr<Frame> frame = Frame::create(FrameInit::create(0, &m_page->frameHost(
), emptyFrameLoaderClient)); |
| 203 frame->setView(FrameView::create(frame.get())); | 203 frame->setView(FrameView::create(frame.get())); |
| 204 frame->init(); | 204 frame->init(); |
| 205 frame->view()->resize(m_popupClient->contentSize()); | 205 frame->view()->resize(m_popupClient->contentSize()); |
| 206 frame->view()->setTransparent(false); | 206 frame->view()->setTransparent(false); |
| 207 | 207 |
| 208 DOMWindowPagePopup::install(frame->domWindow(), m_popupClient); | 208 ASSERT(frame->domWindow()); |
| 209 DOMWindowPagePopup::install(*frame->domWindow(), m_popupClient); |
| 209 | 210 |
| 210 RefPtr<SharedBuffer> data = SharedBuffer::create(); | 211 RefPtr<SharedBuffer> data = SharedBuffer::create(); |
| 211 m_popupClient->writeDocument(data.get()); | 212 m_popupClient->writeDocument(data.get()); |
| 212 frame->loader().load(FrameLoadRequest(0, blankURL(), SubstituteData(data, "t
ext/html", "UTF-8", KURL(), ForceSynchronousLoad))); | 213 frame->loader().load(FrameLoadRequest(0, blankURL(), SubstituteData(data, "t
ext/html", "UTF-8", KURL(), ForceSynchronousLoad))); |
| 213 return true; | 214 return true; |
| 214 } | 215 } |
| 215 | 216 |
| 216 void WebPagePopupImpl::destroyPage() | 217 void WebPagePopupImpl::destroyPage() |
| 217 { | 218 { |
| 218 if (!m_page) | 219 if (!m_page) |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 destroyPage(); // In case closePopup() was not called. | 307 destroyPage(); // In case closePopup() was not called. |
| 307 m_widgetClient = 0; | 308 m_widgetClient = 0; |
| 308 deref(); | 309 deref(); |
| 309 } | 310 } |
| 310 | 311 |
| 311 void WebPagePopupImpl::closePopup() | 312 void WebPagePopupImpl::closePopup() |
| 312 { | 313 { |
| 313 if (m_page) { | 314 if (m_page) { |
| 314 m_page->clearPageGroup(); | 315 m_page->clearPageGroup(); |
| 315 m_page->mainFrame()->loader().stopAllLoaders(); | 316 m_page->mainFrame()->loader().stopAllLoaders(); |
| 316 DOMWindowPagePopup::uninstall(m_page->mainFrame()->domWindow()); | 317 ASSERT(m_page->mainFrame()->domWindow()); |
| 318 DOMWindowPagePopup::uninstall(*m_page->mainFrame()->domWindow()); |
| 317 } | 319 } |
| 318 m_closing = true; | 320 m_closing = true; |
| 319 | 321 |
| 320 destroyPage(); | 322 destroyPage(); |
| 321 | 323 |
| 322 // m_widgetClient might be 0 because this widget might be already closed. | 324 // m_widgetClient might be 0 because this widget might be already closed. |
| 323 if (m_widgetClient) { | 325 if (m_widgetClient) { |
| 324 // closeWidgetSoon() will call this->close() later. | 326 // closeWidgetSoon() will call this->close() later. |
| 325 m_widgetClient->closeWidgetSoon(); | 327 m_widgetClient->closeWidgetSoon(); |
| 326 } | 328 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 337 // A WebPagePopupImpl instance usually has two references. | 339 // A WebPagePopupImpl instance usually has two references. |
| 338 // - One owned by the instance itself. It represents the visible widget. | 340 // - One owned by the instance itself. It represents the visible widget. |
| 339 // - One owned by a WebViewImpl. It's released when the WebViewImpl ask the | 341 // - One owned by a WebViewImpl. It's released when the WebViewImpl ask the |
| 340 // WebPagePopupImpl to close. | 342 // WebPagePopupImpl to close. |
| 341 // We need them because the closing operation is asynchronous and the widget | 343 // We need them because the closing operation is asynchronous and the widget |
| 342 // can be closed while the WebViewImpl is unaware of it. | 344 // can be closed while the WebViewImpl is unaware of it. |
| 343 return adoptRef(new WebPagePopupImpl(client)).leakRef(); | 345 return adoptRef(new WebPagePopupImpl(client)).leakRef(); |
| 344 } | 346 } |
| 345 | 347 |
| 346 } // namespace blink | 348 } // namespace blink |
| OLD | NEW |