Index: chrome/test/functional/multiprofile.py |
=================================================================== |
--- chrome/test/functional/multiprofile.py (revision 261231) |
+++ chrome/test/functional/multiprofile.py (working copy) |
@@ -1,314 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import re |
- |
-import pyauto_functional |
-import pyauto |
- |
- |
-class MultiprofileTest(pyauto.PyUITest): |
- """Tests for Multi-Profile / Multi-users""" |
- |
- _RESTORE_STARTUP_URL_VALUE = 4 |
- _RESTORE_LASTOPEN_URL_VALUE = 1 |
- _RESTORE_DEFAULT_URL_VALUE = 0 |
- |
- def Debug(self): |
- """Test method for experimentation. |
- |
- This method will not run automatically. |
- """ |
- while True: |
- raw_input('Hit <enter> to dump info.. ') |
- self.pprint(self.GetMultiProfileInfo()) |
- |
- def _GetSearchEngineWithKeyword(self, keyword, windex=0): |
- """Get search engine info and return an element that matches keyword. |
- |
- Args: |
- keyword: Search engine keyword field. |
- windex: The window index, default is 0. |
- |
- Returns: |
- A search engine info dict or None. |
- """ |
- match_list = ([x for x in self.GetSearchEngineInfo(windex=windex) |
- if x['keyword'] == keyword]) |
- if match_list: |
- return match_list[0] |
- return None |
- |
- def _SetPreferences(self, dict, windex=0): |
- """Sets preferences settings. |
- |
- Args: |
- _dict: Dictionary of key preferences and its value to be set. |
- windex: The window index, defaults to 0 (the first window). |
- """ |
- for key in dict.iterkeys(): |
- self.SetPrefs(key, dict[key], windex=windex) |
- |
- def _SetStartUpPage(self, url, windex=0): |
- """Set start up page. |
- |
- Args: |
- url: URL of the page to be set as start up page. |
- windex: The window index, default is 0. |
- """ |
- _dict = {pyauto.kURLsToRestoreOnStartup: [url], |
- pyauto.kRestoreOnStartup: self._RESTORE_STARTUP_URL_VALUE} |
- self._SetPreferences(_dict, windex=windex) |
- prefs_info = self.GetPrefsInfo(windex=windex).Prefs( |
- pyauto.kURLsToRestoreOnStartup) |
- self.assertTrue(url in prefs_info) |
- |
- def _SetHomePage(self, url, windex=0): |
- """Create new profile and set home page. |
- |
- Args: |
- url: URL of the page to be set as home page |
- windex: The window index, default is 0. |
- """ |
- _dict = {pyauto.kHomePage: url, |
- pyauto.kHomePageIsNewTabPage: False, pyauto.kShowHomeButton: True, |
- pyauto.kRestoreOnStartup: self._RESTORE_DEFAULT_URL_VALUE} |
- self._SetPreferences(_dict, windex=windex) |
- self.assertTrue(url in |
- self.GetPrefsInfo(windex=windex).Prefs(pyauto.kHomePage)) |
- |
- def _SetSessionRestoreURLs(self, set_restore, windex=0): |
- """Create new profile and set home page. |
- |
- Args: |
- set_restore: Value of action of start up. |
- windex: The window index, default is 0. |
- """ |
- self.NavigateToURL('http://www.google.com/', windex) |
- self.AppendTab(pyauto.GURL('http://news.google.com/'), windex) |
- num_tabs = self.GetTabCount(windex) |
- dict = {pyauto.kRestoreOnStartup: set_restore} |
- self._SetPreferences(dict, windex=windex) |
- |
- def _AddSearchEngine(self, title, keyword, url, windex=0): |
- """Add search engine. |
- |
- Args: |
- title: Name for search engine. |
- keyword: Keyword, used to initiate a custom search from omnibox. |
- url: URL template for this search engine's query. |
- windex: The window index, default is 0. |
- """ |
- self.AddSearchEngine(title, keyword, url, windex=windex) |
- name = self._GetSearchEngineWithKeyword(keyword, windex=windex) |
- self.assertTrue(name) |
- |
- def _AssertStartUpPage(self, url, profile='Default'): |
- """Asserts start up page for given profile. |
- |
- Args: |
- url: URL of the page to be set as start up page |
- profile: The profile name, defaults to 'Default'. |
- """ |
- self.AppendBrowserLaunchSwitch('--profile-directory=' + profile) |
- self.RestartBrowser(clear_profile=False) |
- info = self.GetBrowserInfo() |
- self.assertEqual(url, info['windows'][0]['tabs'][0]['url'].rstrip('/')) |
- self.assertTrue(url in |
- self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup)) |
- |
- def _AssertHomePage(self, url, profile='Default'): |
- """Asserts home page for given profile. |
- |
- Args: |
- url: URL of the page to be set as home page |
- profile: The profile name, defaults to 'Dafault'. |
- """ |
- self.AppendBrowserLaunchSwitch('--profile-directory=' + profile) |
- self.RestartBrowser(clear_profile=False) |
- self.assertTrue(url in self.GetPrefsInfo().Prefs(pyauto.kHomePage)) |
- |
- def _AssertDefaultSearchEngine(self, search_engine, profile='Default'): |
- """Asserts default search engine for given profile. |
- |
- Args: |
- search_engine: Name of default search engine. |
- profile: The profile name, defaults to 'Default'. |
- """ |
- self.AppendBrowserLaunchSwitch('--profile-directory=' + profile) |
- self.RestartBrowser(clear_profile=False) |
- name = self._GetSearchEngineWithKeyword(search_engine) |
- self.assertTrue(name['is_default']) |
- self.SetOmniboxText('test search') |
- self.OmniboxAcceptInput() |
- self.assertTrue(re.search(search_engine, self.GetActiveTabURL().spec())) |
- |
- def _AssertSessionRestore(self, url_list, set_restore, num_tabs=1, |
- profile='Default'): |
- """Asserts urls when session is set to restored or set default. |
- |
- Args: |
- url_list: List of URL to be restored. |
- set_restore: Value of action of start up. |
- num_tabs: Number of tabs to be restored, default is 1. |
- profile: The profile name, defaults to 'Default'. |
- """ |
- self.AppendBrowserLaunchSwitch('--profile-directory=' + profile) |
- self.RestartBrowser(clear_profile=False) |
- self.assertEqual(num_tabs, self.GetTabCount()) |
- self.assertEqual(self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup), |
- set_restore) |
- tab_index = 0 |
- while (tab_index < num_tabs): |
- self.ActivateTab(tab_index) |
- self.assertEqual(url_list[tab_index], self.GetActiveTabURL().spec()) |
- tab_index += 1 |
- |
- def testBasic(self): |
- """Multi-profile windows can open.""" |
- self.assertEqual(1, self.GetBrowserWindowCount()) |
- self.assertTrue(self.GetMultiProfileInfo()['enabled'], |
- msg='Multi-profile is not enabled') |
- self.OpenNewBrowserWindowWithNewProfile() |
- # Verify multi-profile info. |
- multi_profile = self.GetMultiProfileInfo() |
- self.assertEqual(2, len(multi_profile['profiles'])) |
- new_profile = multi_profile['profiles'][1] |
- self.assertTrue(new_profile['name']) |
- |
- # Verify browser windows. |
- self.assertEqual(2, self.GetBrowserWindowCount(), |
- msg='New browser window did not open') |
- info = self.GetBrowserInfo() |
- new_profile_window = info['windows'][1] |
- self.assertEqual('Profile 1', new_profile_window['profile_path']) |
- self.assertEqual(1, len(new_profile_window['tabs'])) |
- self.assertEqual('chrome://newtab/', new_profile_window['tabs'][0]['url']) |
- |
- def test20NewProfiles(self): |
- """Verify we can create 20 new profiles.""" |
- for index in range(1, 21): |
- self.OpenNewBrowserWindowWithNewProfile() |
- multi_profile = self.GetMultiProfileInfo() |
- self.assertEqual(index + 1, len(multi_profile['profiles']), |
- msg='Expected %d profiles after adding %d new users. Got %d' % ( |
- index + 1, index, len(multi_profile['profiles']))) |
- |
- def testStartUpPageOptionInMultiProfile(self): |
- """Test startup page for Multi-profile windows.""" |
- self.assertTrue(self.GetMultiProfileInfo()['enabled'], |
- msg='Multi-profile is not enabled') |
- # Launch browser with new Profile 1, set startup page to 'www.google.com'. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._SetStartUpPage('http://www.google.com', windex=1) |
- # Launch browser with new Profile 2, set startup page to 'www.yahoo.com'. |
- self.OpenNewBrowserWindowWithNewProfile() |
- # Verify start up page for Profile 2 is still newtab page. |
- info = self.GetBrowserInfo() |
- self.assertEqual('chrome://newtab/', info['windows'][2]['tabs'][0]['url']) |
- self._SetStartUpPage('http://www.yahoo.com', windex=2) |
- # Exit Profile 1 / Profile 2 |
- self.CloseBrowserWindow(2) |
- self.CloseBrowserWindow(1) |
- # Relaunch Browser with Profile 2, verify startup page. |
- self._AssertStartUpPage('http://www.yahoo.com', profile='Profile 2') |
- # Relaunch Browser with Profile 1, verify startup page. |
- self._AssertStartUpPage('http://www.google.com', profile='Profile 1') |
- |
- def testHomePageOptionMultiProfile(self): |
- """Test Home page for Multi-profile windows.""" |
- self.assertTrue(self.GetMultiProfileInfo()['enabled'], |
- msg='Multi-profile is not enabled') |
- # Launch browser with new Profile 1, set homepage to 'www.google.com'. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._SetHomePage('http://www.google.com', windex=1) |
- # Launch browser with new Profile 2, set homepage to 'www.yahoo.com'. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._SetHomePage('http://www.yahoo.com', windex=2) |
- # Exit Profile 1 / Profile 2 |
- self.CloseBrowserWindow(2) |
- self.CloseBrowserWindow(1) |
- # Relaunch Browser with Profile 2, verify startup page. |
- self._AssertHomePage('http://www.yahoo.com', profile='Profile 2') |
- # Relaunch Browser with Profile 1, verify startup page. |
- self._AssertHomePage('http://www.google.com', profile='Profile 1') |
- |
- def testSessionRestoreInMultiProfile(self): |
- """Test session restore preference for Multi-profile windows.""" |
- self.assertTrue(self.GetMultiProfileInfo()['enabled'], |
- msg='Multi-profile is not enabled') |
- # Launch browser with new Profile 1, set pref to restore session on |
- # startup. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._SetSessionRestoreURLs(self._RESTORE_LASTOPEN_URL_VALUE, windex=1) |
- # Launch browser with new Profile 2, do not set session restore pref. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._SetSessionRestoreURLs(self._RESTORE_DEFAULT_URL_VALUE, windex=2) |
- # Exit Profile 1 / Profile 2 |
- self.CloseBrowserWindow(2) |
- self.CloseBrowserWindow(1) |
- # Relaunch Browser with Profile 1, verify session restores on startup. |
- url_list = ['http://www.google.com/', 'http://news.google.com/'] |
- self._AssertSessionRestore(url_list, self._RESTORE_LASTOPEN_URL_VALUE, |
- num_tabs=2, profile='Profile 1') |
- # Relaunch Browser with Profile 2, verify session does not get restored. |
- url_list = ['chrome://newtab/'] |
- self._AssertSessionRestore(url_list, self._RESTORE_DEFAULT_URL_VALUE, |
- num_tabs=1, profile='Profile 2') |
- |
- def testMakeSearchEngineDefaultInMultiprofile(self): |
- """Test adding and making a search engine default for Multi-profiles.""" |
- self.assertTrue(self.GetMultiProfileInfo()['enabled'], |
- msg='Multi-profile is not enabled') |
- # Launch browser with new Profile 1, add search engine to 'Hulu'. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._AddSearchEngine('Hulu', 'hulu.com', |
- 'http://www.hulu.com/search?query=%s&ref=os&src={referrer:source?}', 1) |
- self.MakeSearchEngineDefault('hulu.com', windex=1) |
- # Launch browser with new Profile 2, add search engine to 'Youtube'. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._AddSearchEngine('YouTube Video Search', 'youtube.com', |
- 'http://www.youtube.com/results?search_query=%s&page={startPage?}'+ |
- '&utm_source=opensearch', 2) |
- self.MakeSearchEngineDefault('youtube.com', windex=2) |
- # Exit Profile 1 / Profile 2 |
- self.CloseBrowserWindow(2) |
- self.CloseBrowserWindow(1) |
- # Relaunch Browser with Profile 1, verify default search engine as 'Hulu'. |
- self._AssertDefaultSearchEngine('hulu.com', profile='Profile 1') |
- # Relaunch Browser with Profile 2, verify default search engine as |
- # 'Youtube'. |
- self._AssertDefaultSearchEngine('youtube.com', profile='Profile 2') |
- |
- def testDeleteSearchEngineInMultiprofile(self): |
- """Test adding then deleting a search engine for Multi-profiles.""" |
- self.assertTrue(self.GetMultiProfileInfo()['enabled'], |
- msg='Multi-profile is not enabled') |
- # Launch browser with new Profile 1, add 'foo.com' as new search engine. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._AddSearchEngine('foo', 'foo.com', 'http://foo/?q=%s', windex=1) |
- # Launch browser with new Profile 2, add 'foo.com' as new search engine. |
- self.OpenNewBrowserWindowWithNewProfile() |
- self._AddSearchEngine('foo', 'foo.com', 'http://foo/?q=%s', windex=2) |
- # Delete search engine 'foo.com' from Profile 1 and exit. |
- self.DeleteSearchEngine('foo.com', windex=1) |
- self.CloseBrowserWindow(2) |
- self.CloseBrowserWindow(1) |
- # Relaunch Browser with Profile 1, verify search engine 'foo.com' |
- # is deleted. |
- self.AppendBrowserLaunchSwitch('--profile-directory=Profile 1') |
- self.RestartBrowser(clear_profile=False) |
- foo = self._GetSearchEngineWithKeyword('foo.com') |
- self.assertFalse(foo) |
- # Relaunch Browser with Profile 2, verify search engine 'foo.com' |
- # is not deleted. |
- self.AppendBrowserLaunchSwitch('--profile-directory=Profile 2') |
- self.RestartBrowser(clear_profile=False) |
- foo = self._GetSearchEngineWithKeyword('foo.com') |
- self.assertTrue(foo) |
- |
- |
-if __name__ == '__main__': |
- pyauto_functional.Main() |