Page* ChromeClientAndroid::createWindow(Frame* frame, const FrameLoadRequest&, const WindowFeatures& features, const NavigationAction&) { ASSERT(frame); #ifdef ANDROID_MULTIPLE_WINDOWS if (frame->settings() && !(frame->settings()->supportMultipleWindows())) // If the client doesn't support multiple windows, just return the current page return frame->page(); #endif const WebCoreViewBridge* bridge = frame->view()->platformWidget(); bool dialog = features.dialog || !features.resizable || (features.heightSet && features.height < bridge->height() && features.widthSet && features.width < bridge->width()) || (!features.menuBarVisible && !features.statusBarVisible && !features.toolBarVisible && !features.locationBarVisible && !features.scrollbarsVisible); // fullscreen definitely means no dialog if (features.fullscreen) dialog = false; WebCore::Frame* newFrame = m_webFrame->createWindow(dialog, ScriptController::processingUserGesture()); if (newFrame) { WebCore::Page* page = newFrame->page(); page->setGroupName(frame->page()->groupName()); return page; } return NULL; }
Page* ChromeClientAndroid::createWindow(Frame* frame, const FrameLoadRequest&, const WindowFeatures& features) { ASSERT(frame); #ifdef ANDROID_MULTIPLE_WINDOWS if (frame->settings() && !(frame->settings()->supportMultipleWindows())) // If the client doesn't support multiple windows, just return the current page return frame->page(); #endif WTF::PassRefPtr<WebCore::Screen> screen = WebCore::Screen::create(frame); bool dialog = features.dialog || !features.resizable || (features.heightSet && features.height < screen.get()->height() && features.widthSet && features.width < screen.get()->width()) || (!features.menuBarVisible && !features.statusBarVisible && !features.toolBarVisible && !features.locationBarVisible && !features.scrollbarsVisible); // fullscreen definitely means no dialog if (features.fullscreen) dialog = false; WebCore::Frame* newFrame = m_webFrame->createWindow(dialog, frame->script()->processingUserGesture(mainThreadNormalWorld())); if (newFrame) { WebCore::Page* page = newFrame->page(); page->setGroupName(frame->page()->groupName()); return page; } return NULL; }