Restart renderer process when reloaded for 4 times.

Fix #481.
This commit is contained in:
Cheng Zhao
2013-04-07 23:38:22 +08:00
parent dc94855e1a
commit 17e9c6ea3b
4 changed files with 23 additions and 1 deletions

View File

@@ -90,6 +90,9 @@ bool AtomCefClient::OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
else if (name == "crash") {
__builtin_trap();
}
else if (name == "restartRendererProcess") {
RestartRendererProcess(browser);
}
else {
return false;
}
@@ -252,3 +255,11 @@ bool AtomCefClient::Save(const std::string& path, const std::string& data) {
fclose(f);
return true;
}
void AtomCefClient::RestartRendererProcess(CefRefPtr<CefBrowser> browser) {
// Navigating to the same URL has the effect of restarting the renderer
// process, because cefode has overridden ContentBrowserClient's
// ShouldSwapProcessesForNavigation method.
CefRefPtr<CefFrame> frame = browser->GetFocusedFrame();
frame->LoadURL(frame->GetURL());
}

View File

@@ -99,6 +99,7 @@ class AtomCefClient : public CefClient,
void EndTracing();
bool Save(const std::string& path, const std::string& data);
void RestartRendererProcess(CefRefPtr<CefBrowser> browser);
protected:
CefRefPtr<CefBrowser> m_Browser;