summaryrefslogtreecommitdiffstats
path: root/chrome/common/render_messages.h
diff options
context:
space:
mode:
authorfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-13 21:52:32 +0000
committerfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-13 21:52:32 +0000
commit4604d1f4944206f24e864c71e29bc08b4d9500af (patch)
tree8dc2637b180b5c6e8a21b1984afb1a7bfa17c10b /chrome/common/render_messages.h
parenta04f125f5fe5bbc56a3feaac4121a29452becedf (diff)
downloadchromium_src-4604d1f4944206f24e864c71e29bc08b4d9500af.zip
chromium_src-4604d1f4944206f24e864c71e29bc08b4d9500af.tar.gz
chromium_src-4604d1f4944206f24e864c71e29bc08b4d9500af.tar.bz2
RSS feed support (part 1), 2nd attempt.
Part 1 is RSS feed auto-discovery. This will parse the web page header to find the feeds in the document and notify the browser to display the RSS icon in the toolbar. You can click on the icon, but it will just navigate to the first feed on the page, which (unless it has been designed to be browser friendly) will just dump XML as text on the user. For this reason I have disabled the code that makes the RSS icon appear and intend to enable it when we have a good landing page to display the XML. Review URL: http://codereview.chromium.org/46055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11672 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/render_messages.h')
-rw-r--r--chrome/common/render_messages.h74
1 files changed, 73 insertions, 1 deletions
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index 048a0a6..ded088f 100644
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -28,6 +28,7 @@
#include "webkit/glue/autofill_form.h"
#include "webkit/glue/cache_manager.h"
#include "webkit/glue/context_menu.h"
+#include "webkit/glue/feed.h"
#include "webkit/glue/form_data.h"
#include "webkit/glue/password_form.h"
#include "webkit/glue/password_form_dom_manager.h"
@@ -43,6 +44,17 @@
#include "skia/include/SkBitmap.h"
#endif
+struct ViewHostMsg_UpdateFeedList_Params {
+ // The page_id for this navigation, or -1 if it is a new navigation. Back,
+ // Forward, and Reload navigations should have a valid page_id. If the load
+ // succeeds, then this page_id will be reflected in the resulting
+ // ViewHostMsg_FrameNavigate message.
+ int32 page_id;
+
+ // The list of available feeds.
+ scoped_refptr<FeedList> feedlist;
+};
+
// Parameters structure for ViewMsg_Navigate, which has too many data
// parameters to be reasonably put in a predefined IPC message.
struct ViewMsg_Navigate_Params {
@@ -516,6 +528,67 @@ struct ParamTraits<WebInputEvent::Type> {
}
};
+// Traits for ViewHostMsg_UpdateFeedList_Params structure to pack/unpack.
+template <>
+struct ParamTraits<ViewHostMsg_UpdateFeedList_Params> {
+ typedef ViewHostMsg_UpdateFeedList_Params param_type;
+ static void Write(Message* msg, const param_type& param) {
+ WriteParam(msg, param.page_id);
+ WriteParam(msg, param.feedlist->list().size());
+ for (std::vector<FeedItem>::const_iterator iter =
+ param.feedlist->list().begin();
+ iter != param.feedlist->list().end(); iter++) {
+ WriteParam(msg, iter->title);
+ WriteParam(msg, iter->type);
+ WriteParam(msg, iter->url);
+ }
+ }
+ static bool Read(const Message* msg, void** iter, param_type* param) {
+ param->feedlist = new FeedList();
+ if (!ReadParam(msg, iter, &param->page_id))
+ return false;
+
+ size_t arraysize = 0;
+ if (!ReadParam(msg, iter, &arraysize))
+ return false;
+
+ if (arraysize > FeedList::kMaxFeeds) {
+ NOTREACHED() << L"Too many feeds sent by the renderer";
+ return false;
+ }
+
+ bool ret = true;
+ for (size_t i = 0; i < arraysize; i++) {
+ FeedItem feeditem;
+ ret = ReadParam(msg, iter, &feeditem.title) &&
+ ReadParam(msg, iter, &feeditem.type) &&
+ ReadParam(msg, iter, &feeditem.url);
+ if (!ret)
+ return ret;
+ param->feedlist->Add(feeditem);
+ }
+
+ return ret;
+ }
+ static void Log(const param_type& param, std::wstring* log) {
+ log->append(L"(");
+ LogParam(param.page_id, log);
+ log->append(L", {");
+ for (std::vector<FeedItem>::const_iterator iter =
+ param.feedlist->list().begin();
+ iter != param.feedlist->list().end(); iter++) {
+ log->append(L"[");
+ LogParam(iter->title, log);
+ log->append(L", ");
+ LogParam(iter->type, log);
+ log->append(L", ");
+ LogParam(iter->url, log);
+ log->append(L"]");
+ }
+ log->append(L"})");
+ }
+};
+
template <>
struct ParamTraits<AccessibilityInParams> {
typedef AccessibilityInParams param_type;
@@ -724,7 +797,6 @@ struct ParamTraits<AutofillForm> {
result = result && ReadParam(m, iter, &elements_size);
p->elements.resize(elements_size);
for (size_t i = 0; i < elements_size; i++) {
- std::wstring s;
result = result && ReadParam(m, iter, &(p->elements[i].name));
result = result && ReadParam(m, iter, &(p->elements[i].value));
}