From f5c8a1596de89f2f3010186b03cc2378d23254ae Mon Sep 17 00:00:00 2001
From: "finnur@chromium.org"
 <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue, 29 Sep 2009 23:12:35 +0000
Subject: The RSS extension now renders the RSS HTML preview inside an IFRAME.

BUG=None
TEST=See browser tests.

Review URL: http://codereview.chromium.org/242055

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27562 0039d316-1c4b-4281-b951-d872f2087c98
---
 .../extensions/extension_browsertests_misc.cc      | 28 ++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

(limited to 'chrome/browser')

diff --git a/chrome/browser/extensions/extension_browsertests_misc.cc b/chrome/browser/extensions/extension_browsertests_misc.cc
index 153d0a1..5d4ecdc 100644
--- a/chrome/browser/extensions/extension_browsertests_misc.cc
+++ b/chrome/browser/extensions/extension_browsertests_misc.cc
@@ -295,16 +295,20 @@ void GetParsedFeedData(Browser* browser, std::string* feed_title,
                        std::string* item_title, std::string* item_desc,
                        std::string* error) {
   ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString(
-      browser->GetSelectedTabContents()->render_view_host(), L"",
+      browser->GetSelectedTabContents()->render_view_host(),
+      L"",  // Title is on the main page, all the rest is in the IFRAME.
       jscript_feed_title, feed_title));
   ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString(
-      browser->GetSelectedTabContents()->render_view_host(), L"",
+      browser->GetSelectedTabContents()->render_view_host(),
+      L"//html/body/div/iframe[1]",
       jscript_anchor, item_title));
   ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString(
-      browser->GetSelectedTabContents()->render_view_host(), L"",
+      browser->GetSelectedTabContents()->render_view_host(),
+      L"//html/body/div/iframe[1]",
       jscript_desc, item_desc));
   ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString(
-      browser->GetSelectedTabContents()->render_view_host(), L"",
+      browser->GetSelectedTabContents()->render_view_host(),
+      L"//html/body/div/iframe[1]",
       jscript_error, error));
 }
 
@@ -329,6 +333,13 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeed) {
   EXPECT_STREQ("This is a summary.", item_desc.c_str());
   EXPECT_STREQ("No error", error.c_str());
 
+  ui_test_utils::NavigateToURL(browser(), GetFeedUrl("feed3.xml"));
+  GetParsedFeedData(browser(), &feed_title, &item_title, &item_desc, &error);
+  EXPECT_STREQ("Feed for 'Google Code buglist rss feed'", feed_title.c_str());
+  EXPECT_STREQ("My dear title", item_title.c_str());
+  EXPECT_STREQ("My dear content", item_desc.c_str());
+  EXPECT_STREQ("No error", error.c_str());
+
   // Try a feed that doesn't exist.
   ui_test_utils::NavigateToURL(browser(), GetFeedUrl("feed_nonexistant.xml"));
   GetParsedFeedData(browser(), &feed_title, &item_title, &item_desc, &error);
@@ -352,6 +363,15 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeed) {
   EXPECT_STREQ("element 'anchor_0' not found", item_title.c_str());
   EXPECT_STREQ("element 'desc_0' not found", item_desc.c_str());
   EXPECT_STREQ("Not a valid feed", error.c_str());
+
+  // Try a feed with a link with an onclick handler (before r27440 this would
+  // trigger a NOTREACHED).
+  ui_test_utils::NavigateToURL(browser(), GetFeedUrl("feed_script.xml"));
+  GetParsedFeedData(browser(), &feed_title, &item_title, &item_desc, &error);
+  EXPECT_STREQ("Feed for 'MyFeedTitle'", feed_title.c_str());
+  EXPECT_STREQ("Title 1", item_title.c_str());
+  EXPECT_STREQ("Desc VIDEO", item_desc.c_str());
+  EXPECT_STREQ("No error", error.c_str());
 }
 
 #if defined(OS_WIN)  // TODO(port) - enable.
-- 
cgit v1.1