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

Unified Diff: content/browser/tab_contents/tab_contents_observer.h

Issue 6794035: Move dispatching and sending of the last extension specific messages out of TabContents and Rende... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 9 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: content/browser/tab_contents/tab_contents_observer.h
===================================================================
--- content/browser/tab_contents/tab_contents_observer.h (revision 80315)
+++ content/browser/tab_contents/tab_contents_observer.h (working copy)
@@ -12,8 +12,29 @@
// An observer API implemented by classes which are interested in various page
// load events from TabContents. They also get a chance to filter IPC messages.
-class TabContentsObserver : public IPC::Channel::Listener {
+class TabContentsObserver : public IPC::Channel::Listener,
+ public IPC::Message::Sender {
public:
+ // Use this as a member variable in a class that uses the emptry constructor
Matt Perry 2011/04/05 19:18:33 nit: empty
jam 2011/04/05 19:25:38 Done.
+ // version of this interface.
+ class Registrar {
+ public:
+ explicit Registrar(TabContentsObserver* observer);
+ ~Registrar();
+
+ // Call this to start observing a tab. Passing in NULL resets it.
+ // This can only be used to watch one tab at a time. If you call this and
+ // you're already observing another tab, the old tab won't be observed
+ // afterwards.
+ void Observe(TabContents* tab);
+
+ private:
+ TabContentsObserver* observer_;
+ TabContents* tab_;
+
+ DISALLOW_COPY_AND_ASSIGN(Registrar);
+ };
+
virtual void NavigateToPendingEntry();
virtual void DidNavigateMainFramePostCommit(
@@ -45,7 +66,15 @@
#endif
protected:
+ // Use this constructor when the object is tied to a single TabContents for
+ // its entire lifetime.
explicit TabContentsObserver(TabContents* tab_contents);
+
+ // Use this constructor when the object wants to observe a TabContents for
+ // part of its lifetime. It can use a TabContentsRegistrar member variable
+ // to start and stop observing.
+ TabContentsObserver();
+
virtual ~TabContentsObserver();
// Invoked when the TabContents is being destroyed. Gives subclasses a chance
@@ -62,6 +91,11 @@
TabContents* tab_contents() const { return tab_contents_; }
int routing_id() const { return routing_id_; }
+ protected:
+ friend class Registrar;
+
+ void SetTabContents(TabContents* tab_contents);
+
private:
friend class TabContents;

Powered by Google App Engine
This is Rietveld 408576698