summaryrefslogtreecommitdiffstats
path: root/cloud_print/service/win/chrome_launcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cloud_print/service/win/chrome_launcher.cc')
-rw-r--r--cloud_print/service/win/chrome_launcher.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/cloud_print/service/win/chrome_launcher.cc b/cloud_print/service/win/chrome_launcher.cc
index 831af6f..6c5bbc5 100644
--- a/cloud_print/service/win/chrome_launcher.cc
+++ b/cloud_print/service/win/chrome_launcher.cc
@@ -20,6 +20,8 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/installer/launcher_support/chrome_launcher_support.h"
+#include "cloud_print/common/win/cloud_print_utils.h"
+#include "cloud_print/service/service_constants.h"
#include "google_apis/gaia/gaia_urls.h"
#include "googleurl/src/gurl.h"
#include "net/base/url_util.h"
@@ -27,6 +29,7 @@
namespace {
const int kShutdownTimeoutMs = 30 * 1000;
+const int kUsageUpdateTimeoutMs = 6 * 3600 * 1000; // 6 hours.
static const char16 kAutoRunKeyPath[] =
L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
@@ -202,10 +205,14 @@ void ChromeLauncher::Run() {
base::Time started = base::Time::Now();
DWORD thread_id = 0;
LaunchProcess(cmd, chrome_handle.Receive(), &thread_id);
- int exit_code = 0;
+
HANDLE handles[] = {stop_event_.handle(), chrome_handle};
- DWORD wait_result = ::WaitForMultipleObjects(arraysize(handles), handles,
- FALSE, INFINITE);
+ DWORD wait_result = WAIT_TIMEOUT;
+ while (wait_result == WAIT_TIMEOUT) {
+ cloud_print::SetGoogleUpdateUsage(kGoogleUpdateId);
+ wait_result = ::WaitForMultipleObjects(arraysize(handles), handles,
+ FALSE, kUsageUpdateTimeoutMs);
+ }
if (wait_result == WAIT_OBJECT_0) {
ShutdownChrome(chrome_handle, thread_id);
break;
@@ -289,7 +296,6 @@ std::string ChromeLauncher::CreateServiceStateFile(
return result;
}
- int exit_code = 0;
DWORD wait_result = ::WaitForSingleObject(chrome_handle, INFINITE);
if (wait_result != WAIT_OBJECT_0) {
LOG(ERROR) << "Chrome launch failed.";