summaryrefslogtreecommitdiffstats
path: root/chrome/test
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-20 01:19:56 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-20 01:19:56 +0000
commit3366d7da925921dc7a366ed1c077f30ab3692f46 (patch)
tree3459dce71eaaa971dd3decf618c6ece42f78050f /chrome/test
parent1fe5f64937195c8620bf56cf496ad4fd4141f466 (diff)
downloadchromium_src-3366d7da925921dc7a366ed1c077f30ab3692f46.zip
chromium_src-3366d7da925921dc7a366ed1c077f30ab3692f46.tar.gz
chromium_src-3366d7da925921dc7a366ed1c077f30ab3692f46.tar.bz2
Another try at landing this.
It caused several tests to fails previously. There was a crasher in some Windows code in the CLD that has been removed by the port of the CLD code to Linux and Mac. That should hopefully make everything work now. Enabling language detection on page load. A memory error has been fixed in the CLD library in the meantime. This should hopefully fixes the crashers in the reliability tests. Note that this version is actually simpler than the original review since the detection is now performed in the renderer. (So the CLD code runs sandboxed.) Original review: http://codereview.chromium.org/492024/show BUG=30662 TEST=Run the unit-tests. TBR=brettw Review URL: http://codereview.chromium.org/552049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36589 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test')
-rw-r--r--chrome/test/data/english_page.html6
-rw-r--r--chrome/test/data/french_page.html6
-rw-r--r--chrome/test/ui_test_utils.cc32
-rw-r--r--chrome/test/ui_test_utils.h4
4 files changed, 48 insertions, 0 deletions
diff --git a/chrome/test/data/english_page.html b/chrome/test/data/english_page.html
new file mode 100644
index 0000000..539920d
--- /dev/null
+++ b/chrome/test/data/english_page.html
@@ -0,0 +1,6 @@
+<html>
+<head><title>This page is in English</title></head>
+<body>
+No joke! This is a page written in English. Awesome don't you think?
+</body>
+</html>
diff --git a/chrome/test/data/french_page.html b/chrome/test/data/french_page.html
new file mode 100644
index 0000000..7fcf684
--- /dev/null
+++ b/chrome/test/data/french_page.html
@@ -0,0 +1,6 @@
+<html>
+<head><title>Cette page est en Fran�ais</title></head>
+<body>
+Cette page a �t� r�dig�e en fran�ais. Saviez-vous que le Fran�ais est la langue officielle des jeux olympiques? �a vous en bouche un coin, pas vrai?
+</body>
+</html>
diff --git a/chrome/test/ui_test_utils.cc b/chrome/test/ui_test_utils.cc
index add23d5..4bb031e 100644
--- a/chrome/test/ui_test_utils.cc
+++ b/chrome/test/ui_test_utils.cc
@@ -255,6 +255,33 @@ class SimpleNotificationObserver : public NotificationObserver {
DISALLOW_COPY_AND_ASSIGN(SimpleNotificationObserver);
};
+class LanguageDetectionNotificationObserver : public NotificationObserver {
+ public:
+ explicit LanguageDetectionNotificationObserver(
+ RenderViewHost* render_view_host) {
+ registrar_.Add(this, NotificationType::TAB_LANGUAGE_DETERMINED,
+ Source<RenderViewHost>(render_view_host));
+ ui_test_utils::RunMessageLoop();
+ }
+
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ language_ = *(Details<std::string>(details).ptr());
+ MessageLoopForUI::current()->Quit();
+ }
+
+ std::string language() const {
+ return language_;
+ }
+
+ private:
+ NotificationRegistrar registrar_;
+ std::string language_;
+
+ DISALLOW_COPY_AND_ASSIGN(LanguageDetectionNotificationObserver);
+};
+
class FindInPageNotificationObserver : public NotificationObserver {
public:
explicit FindInPageNotificationObserver(TabContents* parent_tab)
@@ -485,6 +512,11 @@ void WaitForFocusInBrowser(Browser* browser) {
browser);
}
+std::string WaitForLanguageDetection(TabContents* tab) {
+ LanguageDetectionNotificationObserver observer(tab->render_view_host());
+ return observer.language();
+}
+
int FindInPage(TabContents* tab_contents, const string16& search_string,
bool forward, bool match_case, int* ordinal) {
tab_contents->StartFinding(search_string, forward, match_case);
diff --git a/chrome/test/ui_test_utils.h b/chrome/test/ui_test_utils.h
index 89dc8fc..2c4cd95 100644
--- a/chrome/test/ui_test_utils.h
+++ b/chrome/test/ui_test_utils.h
@@ -115,6 +115,10 @@ void WaitForFocusChange(RenderViewHost* rvh);
// traversal).
void WaitForFocusInBrowser(Browser* browser);
+// Waits for the language of the page to have been detected and returns it.
+// This should be called right after a navigation notification was received.
+std::string WaitForLanguageDetection(TabContents* tab_contents);
+
// Performs a find in the page of the specified tab. Returns the number of
// matches found. |ordinal| is an optional parameter which is set to the index
// of the current match.