diff options
author | prasadt@chromium.org <prasadt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 00:57:48 +0000 |
---|---|---|
committer | prasadt@chromium.org <prasadt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 00:57:48 +0000 |
commit | 2ce1d31d6c4c46ad185c49fbe8496396694f57c7 (patch) | |
tree | 63cb38f8c0cea76664ebc2d4f5e08237d5ef33df /chrome/app/client_util.cc | |
parent | cd92d9ae828e3054af4582e3da8302cf6ad19e2e (diff) | |
download | chromium_src-2ce1d31d6c4c46ad185c49fbe8496396694f57c7.zip chromium_src-2ce1d31d6c4c46ad185c49fbe8496396694f57c7.tar.gz chromium_src-2ce1d31d6c4c46ad185c49fbe8496396694f57c7.tar.bz2 |
Detect new instance of the browser when running in the background in persistent
mode, shutdown and restart the new instance. This is already done for Windows,
this CL enables the functionality for Linux.
We don't yet have a unit test for this. Local testing is done by:
1) Reducing the timer to 30 seconds.
2) Changing BrowserList::IsInPersistentMode to return true.
3) Setting BrowserProcessImpl::autoupdate_timer_ to 30 seconds interval.
4) Running "touch" command on chrome exe to pretend there is an update.
BUG=40975
TEST=none
Review URL: http://codereview.chromium.org/1633021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46023 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/app/client_util.cc')
-rw-r--r-- | chrome/app/client_util.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/chrome/app/client_util.cc b/chrome/app/client_util.cc index 074b6c8..c822ec8 100644 --- a/chrome/app/client_util.cc +++ b/chrome/app/client_util.cc @@ -18,6 +18,8 @@ namespace { // The entry point signature of chrome.dll. typedef int (*DLL_MAIN)(HINSTANCE, sandbox::SandboxInterfaceInfo*, wchar_t*); +typedef void (*RelaunchChromeBrowserWithNewCommandLineIfNeededFunc)(); + // Not generic, we only handle strings up to 128 chars. bool ReadRegistryStr(HKEY key, const wchar_t* name, std::wstring* value) { BYTE out[128 * sizeof(wchar_t)]; @@ -196,6 +198,19 @@ int MainDllLoader::Launch(HINSTANCE instance, return OnBeforeExit(rc); } +void MainDllLoader::RelaunchChromeBrowserWithNewCommandLineIfNeeded() { + RelaunchChromeBrowserWithNewCommandLineIfNeededFunc relaunch_function = + reinterpret_cast<RelaunchChromeBrowserWithNewCommandLineIfNeededFunc>( + ::GetProcAddress(dll_, + "RelaunchChromeBrowserWithNewCommandLineIfNeeded")); + if (!relaunch_function) { + LOG(ERROR) << "Could not find exported function " + << "RelaunchChromeBrowserWithNewCommandLineIfNeeded"; + } else { + relaunch_function(); + } +} + //============================================================================= class ChromeDllLoader : public MainDllLoader { |