Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6320)

Unified Diff: chrome/browser/ui/browser_browsertest.cc

Issue 13864015: Move app launcher and chrome apps shortcut strings into the installer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@migrate_app_id_fix
Patch Set: fix linux Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/browser_browsertest.cc
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc
index c4f0a0eda571f15dcf02f685574425c31652d7c6..826dc2cd64b769382edf4a52a5a741aed6aa5bc0 100644
--- a/chrome/browser/ui/browser_browsertest.cc
+++ b/chrome/browser/ui/browser_browsertest.cc
@@ -88,8 +88,19 @@
#endif
#if defined(OS_WIN)
+#include <shlobj.h> // Must be before propkey.
+#include <propkey.h>
+#include <shellapi.h>
+
#include "base/i18n/rtl.h"
+#include "base/win/scoped_comptr.h"
+#include "base/win/scoped_propvariant.h"
+#include "base/win/windows_version.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/profiles/profile_shortcut_manager_win.h"
+#include "chrome/browser/profiles/profiles_state.h"
+#include "chrome/installer/util/browser_distribution.h"
+#include "ui/views/win/hwnd_util.h"
#endif
using content::InterstitialPage;
@@ -326,6 +337,62 @@ class RenderViewSizeObserver : public content::WebContentsObserver {
DISALLOW_COPY_AND_ASSIGN(RenderViewSizeObserver);
};
+#if defined(OS_WIN)
gab 2013/10/17 15:13:31 Wait... isn't this part of the other change you're
calamity 2013/11/20 05:43:30 Removed.
+
+// An observer that returns back to test code after a new profile is
+// initialized.
+void UnblockOnProfileCreation(Profile* profile,
+ Profile::CreateStatus status) {
+ if (status == Profile::CREATE_STATUS_INITIALIZED)
+ base::MessageLoop::current()->Quit();
+}
+
+// Checks that the relaunch name, relaunch command and app icon for the given
+// |browser| are correct.
+void ValidateBrowserWindowProperties(
+ Browser* browser,
+ const base::string16& expected_profile_name) {
+ HWND hwnd = views::HWNDForNativeWindow(browser->window()->GetNativeWindow());
+
+ base::win::ScopedComPtr<IPropertyStore> pps;
+ HRESULT result = SHGetPropertyStoreForWindow(hwnd, IID_IPropertyStore,
+ pps.ReceiveVoid());
+ EXPECT_TRUE(SUCCEEDED(result));
+
+ base::win::ScopedPropVariant prop_var;
+ // The relaunch name should be of the form "Chromium" if there is only 1
+ // profile and "First User - Chromium" if there are more. The expected value
+ // is given by |expected_profile_name|.
+ EXPECT_EQ(S_OK, pps->GetValue(PKEY_AppUserModel_RelaunchDisplayNameResource,
+ prop_var.Receive()));
+ EXPECT_EQ(VT_LPWSTR, prop_var.get().vt);
+ EXPECT_EQ(
+ base::FilePath(profiles::GetShortcutFilenameForProfile(
+ expected_profile_name,
+ BrowserDistribution::GetDistribution())).RemoveExtension().value(),
+ prop_var.get().pwszVal);
+ prop_var.Reset();
+
+ // The relaunch command should specify the profile.
+ EXPECT_EQ(S_OK, pps->GetValue(PKEY_AppUserModel_RelaunchCommand,
+ prop_var.Receive()));
+ EXPECT_EQ(VT_LPWSTR, prop_var.get().vt);
+ CommandLine cmd_line(CommandLine::FromString(prop_var.get().pwszVal));
+ EXPECT_EQ(browser->profile()->GetPath().BaseName().value(),
+ cmd_line.GetSwitchValueNative(switches::kProfileDirectory));
+ prop_var.Reset();
+
+ // The app icon should be set to the profile icon.
+ EXPECT_EQ(S_OK, pps->GetValue(PKEY_AppUserModel_RelaunchIconResource,
+ prop_var.Receive()));
+ EXPECT_EQ(VT_LPWSTR, prop_var.get().vt);
+ EXPECT_EQ(profiles::GetProfileIconPath(browser->profile()->GetPath()).value(),
+ prop_var.get().pwszVal);
+ prop_var.Reset();
+}
+
+#endif
+
} // namespace
class BrowserTest : public ExtensionBrowserTest {
@@ -2509,3 +2576,53 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, MAYBE_GetSizeForNewRenderView) {
web_contents->GetRenderWidgetHostView()->GetViewBounds().size());
EXPECT_EQ(wcv_commit_size2, web_contents->GetView()->GetContainerSize());
}
+
+#if defined(OS_WIN)
+
+// Check that the window properties on Windows are properly set.
+IN_PROC_BROWSER_TEST_F(BrowserTest, WindowProperties) {
+#if defined(USE_ASH)
+ // Disable this test in Metro+Ash where Windows window properties aren't used.
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
+ return;
+#endif
+
+ // This test checks HWND properties that are only available on Win7+.
+ if (base::win::GetVersion() < base::win::VERSION_WIN7)
+ return;
+
+ // Single profile case. The profile name should not be shown.
+ ValidateBrowserWindowProperties(browser(), base::string16());
+
+ // If multiprofile mode is not enabled, we can't test the behavior when there
+ // are multiple profiles.
+ if (!profiles::IsMultipleProfilesEnabled())
+ return;
+
+ // Two profile case. Both profile names should be shown.
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+ ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
+
+ base::FilePath path_profile2 =
+ profile_manager->GenerateNextProfileDirectoryPath();
+ profile_manager->CreateProfileAsync(path_profile2,
+ base::Bind(&UnblockOnProfileCreation),
+ string16(), string16(), std::string());
+
+ // Spin to allow profile creation to take place, loop is terminated
+ // by UnblockOnProfileCreation when the profile is created.
+ content::RunMessageLoop();
+
+ // The default profile's name should be part of the relaunch name.
+ ValidateBrowserWindowProperties(
+ browser(), UTF8ToUTF16(browser()->profile()->GetProfileName()));
+
+ // The second profile's name should be part of the relaunch name.
+ Browser* profile2_browser =
+ CreateBrowser(profile_manager->GetProfileByPath(path_profile2));
+ size_t profile2_index = cache.GetIndexOfProfileWithPath(path_profile2);
+ ValidateBrowserWindowProperties(
+ profile2_browser, cache.GetNameOfProfileAtIndex(profile2_index));
+}
+
+#endif

Powered by Google App Engine
This is Rietveld 408576698