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項目。