Index: chrome/browser/chromeos/login/login_utils.cc |
diff --git a/chrome/browser/chromeos/login/login_utils.cc b/chrome/browser/chromeos/login/login_utils.cc |
index fafe4398fe5abc26626f9aadd4c18c42f612460f..e13a94d8a45c3909d77180b514dc854ffc16eb59 100644 |
--- a/chrome/browser/chromeos/login/login_utils.cc |
+++ b/chrome/browser/chromeos/login/login_utils.cc |
@@ -40,6 +40,7 @@ |
#include "chrome/browser/chromeos/login/demo_mode/demo_app_launcher.h" |
#include "chrome/browser/chromeos/login/lock/screen_locker.h" |
#include "chrome/browser/chromeos/login/profile_auth_data.h" |
+#include "chrome/browser/chromeos/login/report_restarting_flags.h" |
#include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h" |
#include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory.h" |
#include "chrome/browser/chromeos/login/session/session_manager.h" |
@@ -85,7 +86,6 @@ |
#include "url/gurl.h" |
using content::BrowserThread; |
- |
namespace chromeos { |
struct DoBrowserLaunchOnLocaleLoadedData; |
@@ -216,16 +216,29 @@ void LoginUtilsImpl::DoBrowserLaunchOnLocaleLoadedImpl( |
about_flags::PrefServiceFlagsStorage flags_storage_(profile->GetPrefs()); |
about_flags::ConvertFlagsToSwitches(&flags_storage_, &user_flags, |
about_flags::kAddSentinels); |
+ |
+ // about_flags::AreSwitchesIdenticalToCurrentCommandLine() requires |
+ // output argument to be std::set<CommandLine::StringType>* . |
+ // To report the difference, we need std::set<std::string> . |
+ // So here we are silently using the fact, that CommandLine::StringType |
+ // is std::string on ChromeOS. Otherwise we would have to decode strings here. |
+ std::set<std::string> command_line_difference; |
+ |
// Only restart if needed and if not going into managed mode. |
// Don't restart browser if it is not first profile in session. |
if (UserManager::Get()->GetLoggedInUsers().size() == 1 && |
!UserManager::Get()->IsLoggedInAsLocallyManagedUser() && |
!about_flags::AreSwitchesIdenticalToCurrentCommandLine( |
- user_flags, *CommandLine::ForCurrentProcess())) { |
+ user_flags, |
+ *CommandLine::ForCurrentProcess(), |
+ &command_line_difference)) { |
CommandLine::StringVector flags; |
// argv[0] is the program name |CommandLine::NO_PROGRAM|. |
flags.assign(user_flags.argv().begin() + 1, user_flags.argv().end()); |
VLOG(1) << "Restarting to apply per-session flags..."; |
+ |
+ ReportRestartingFlags(command_line_difference); |
+ |
DBusThreadManager::Get()->GetSessionManagerClient()->SetFlagsForUser( |
UserManager::Get()->GetActiveUser()->email(), flags); |
AttemptRestart(profile); |