1.在DOMWindow.idl添加对应方法的声明,下面我添加了两个方法:
[RequiresAllArguments] void setWindowVisible(in boolean visible);
[RequiresAllArguments] boolean getWindowVisible();
2.然后再WebCore/page/DOMWindow.cpp里面实现这些方法,具体实现可以参考bool DOMWindow::confirm(const String& message)等的实现,一般的实现都是先调用page->chrome()获取chromeclient对象,然后由其交给uidelegate去实现。所以我在WebKit/win/Interfaces/IWebUIDelegate.idl 里面也添加了两个方法:
/*!
@method setWindowVisible:
@param sender The WebView sending the delegate method.
@discussion
- (NSRect)setWindowVisible:(WebView *)sender;
*/
HRESULT setWindowVisible([in] IWebView* sender, [in] boolean visible);
/*!
@method setWindowVisible:
@param sender The WebView sending the delegate method.
@discussion
- (NSRect)setWindowVisible:(WebView *)sender;
*/
HRESULT getWindowVisible([in] IWebView* sender,[out, retval] boolean* visible);
3. 实现之后就可以在js里面使用了,例如:
if(!window.getWindowVisible())
window.setWindowVisible(true);
4.其实还有一个更简单的方法,可以参考webkit里面的DumpRenderTree项目。