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

Side by Side Diff: chrome/browser/tab_contents.h

Issue 11318: Beginnings of a new InfoBar system. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/infobar_delegate.cc ('k') | chrome/browser/tab_contents.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_TAB_CONTENTS_H_ 5 #ifndef CHROME_BROWSER_TAB_CONTENTS_H_
6 #define CHROME_BROWSER_TAB_CONTENTS_H_ 6 #define CHROME_BROWSER_TAB_CONTENTS_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "chrome/browser/autocomplete/autocomplete_edit.h" 11 #include "chrome/browser/autocomplete/autocomplete_edit.h"
12 #include "chrome/browser/constrained_window.h" 12 #include "chrome/browser/constrained_window.h"
13 #include "chrome/browser/infobar_delegate.h"
13 #include "chrome/browser/navigation_controller.h" 14 #include "chrome/browser/navigation_controller.h"
14 #include "chrome/browser/page_navigator.h" 15 #include "chrome/browser/page_navigator.h"
15 #include "chrome/browser/tab_contents_type.h" 16 #include "chrome/browser/tab_contents_type.h"
16 #include "chrome/common/navigation_types.h" 17 #include "chrome/common/navigation_types.h"
17 18
18 namespace gfx { 19 namespace gfx {
19 class Rect; 20 class Rect;
20 class Size; 21 class Size;
21 } 22 }
22 namespace views { 23 namespace views {
(...skipping 23 matching lines...) Expand all
46 // Once they reside within a NavigationController, TabContents objects are 47 // Once they reside within a NavigationController, TabContents objects are
47 // owned by that NavigationController. When the active TabContents within that 48 // owned by that NavigationController. When the active TabContents within that
48 // NavigationController is closed, that TabContents destroys the 49 // NavigationController is closed, that TabContents destroys the
49 // NavigationController, which then destroys all of the TabContentses in it. 50 // NavigationController, which then destroys all of the TabContentses in it.
50 // 51 //
51 // NOTE: When the NavigationController is navigated to an URL corresponding to 52 // NOTE: When the NavigationController is navigated to an URL corresponding to
52 // a different type of TabContents (see the TabContents::TypeForURL method), 53 // a different type of TabContents (see the TabContents::TypeForURL method),
53 // the NavigationController makes the active TabContents inactive, notifies the 54 // the NavigationController makes the active TabContents inactive, notifies the
54 // TabContentsDelegate that the TabContents is being replaced, and then 55 // TabContentsDelegate that the TabContents is being replaced, and then
55 // activates the new TabContents. 56 // activates the new TabContents.
56 class TabContents : public PageNavigator { 57 class TabContents : public PageNavigator,
58 public NotificationObserver {
57 public: 59 public:
58 // Flags passed to the TabContentsDelegate.NavigationStateChanged to tell it 60 // Flags passed to the TabContentsDelegate.NavigationStateChanged to tell it
59 // what has changed. Combine them to update more than one thing. 61 // what has changed. Combine them to update more than one thing.
60 enum InvalidateTypes { 62 enum InvalidateTypes {
61 INVALIDATE_URL = 1, // The URL has changed. 63 INVALIDATE_URL = 1, // The URL has changed.
62 INVALIDATE_TITLE = 2, // The title has changed. 64 INVALIDATE_TITLE = 2, // The title has changed.
63 INVALIDATE_FAVICON = 4, // The favicon has changed. 65 INVALIDATE_FAVICON = 4, // The favicon has changed.
64 INVALIDATE_LOAD = 8, // The loading state has changed 66 INVALIDATE_LOAD = 8, // The loading state has changed
65 67
66 // Helper for forcing a refresh. 68 // Helper for forcing a refresh.
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 // return their RootView. Other TabContents (such as WebContents) should 377 // return their RootView. Other TabContents (such as WebContents) should
376 // return NULL. 378 // return NULL.
377 // This is used by the focus manager to figure out what to focus when the tab 379 // This is used by the focus manager to figure out what to focus when the tab
378 // is focused (when a tab with no view hierarchy is focused, the 380 // is focused (when a tab with no view hierarchy is focused, the
379 // TabContentsContainerView is focused) and how to process tab events. If 381 // TabContentsContainerView is focused) and how to process tab events. If
380 // this returns NULL, the TabContents is supposed to know how to process TAB 382 // this returns NULL, the TabContents is supposed to know how to process TAB
381 // key events and is just sent the key messages. If this returns a RootView, 383 // key events and is just sent the key messages. If this returns a RootView,
382 // the focus is passed to the RootView. 384 // the focus is passed to the RootView.
383 virtual views::RootView* GetContentsRootView() { return NULL; } 385 virtual views::RootView* GetContentsRootView() { return NULL; }
384 386
387 // Infobars ------------------------------------------------------------------
388
389 // Adds an InfoBar for the specified |delegate|.
390 void AddInfoBar(InfoBarDelegate* delegate);
391
392 // Removes the InfoBar for the specified |delegate|.
393 void RemoveInfoBar(InfoBarDelegate* delegate);
394
395 // Enumeration and access functions.
396 size_t infobar_delegate_count() const { return infobar_delegates_.size(); }
397 InfoBarDelegate* GetInfoBarDelegateAt(size_t index) {
398 return infobar_delegates_.at(index);
399 }
400
385 // Toolbars and such --------------------------------------------------------- 401 // Toolbars and such ---------------------------------------------------------
386 402
387 // Returns whether the bookmark bar should be visible. 403 // Returns whether the bookmark bar should be visible.
388 virtual bool IsBookmarkBarAlwaysVisible() { return false; } 404 virtual bool IsBookmarkBarAlwaysVisible() { return false; }
389 405
390 // Whether or not the shelf view is visible. 406 // Whether or not the shelf view is visible.
391 virtual void SetDownloadShelfVisible(bool visible); 407 virtual void SetDownloadShelfVisible(bool visible);
392 bool IsDownloadShelfVisible() { return shelf_visible_; } 408 bool IsDownloadShelfVisible() { return shelf_visible_; }
393 409
394 // Notify our delegate that some of our content has animated. 410 // Notify our delegate that some of our content has animated.
(...skipping 15 matching lines...) Expand all
410 // want to generalize this if we need to migrate some other state. 426 // want to generalize this if we need to migrate some other state.
411 static void MigrateShelfView(TabContents* from, TabContents* to); 427 static void MigrateShelfView(TabContents* from, TabContents* to);
412 428
413 // Called when a ConstrainedWindow we own is about to be closed. 429 // Called when a ConstrainedWindow we own is about to be closed.
414 void WillClose(ConstrainedWindow* window); 430 void WillClose(ConstrainedWindow* window);
415 431
416 // Called when a ConstrainedWindow we own is moved or resized. 432 // Called when a ConstrainedWindow we own is moved or resized.
417 void DidMoveOrResize(ConstrainedWindow* window); 433 void DidMoveOrResize(ConstrainedWindow* window);
418 434
419 protected: 435 protected:
436 // NotificationObserver implementation:
437 virtual void Observe(NotificationType type,
438 const NotificationSource& source,
439 const NotificationDetails& details);
440
420 friend class NavigationController; 441 friend class NavigationController;
421 // Used to access the child_windows_ (ConstrainedWindowList) for testing 442 // Used to access the child_windows_ (ConstrainedWindowList) for testing
422 // automation purposes. 443 // automation purposes.
423 friend class AutomationProvider; 444 friend class AutomationProvider;
424 445
425 explicit TabContents(TabContentsType type); 446 explicit TabContents(TabContentsType type);
426 447
427 // Some tab contents types need to override the type. 448 // Some tab contents types need to override the type.
428 void set_type(TabContentsType type) { type_ = type; } 449 void set_type(TabContentsType type) { type_ = type; }
429 450
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 484
464 typedef std::vector<ConstrainedWindow*> ConstrainedWindowList; 485 typedef std::vector<ConstrainedWindow*> ConstrainedWindowList;
465 ConstrainedWindowList child_windows_; 486 ConstrainedWindowList child_windows_;
466 487
467 // Whether we have a notification AND the notification owns popups windows. 488 // Whether we have a notification AND the notification owns popups windows.
468 // (We keep the notification object around even when it's not shown since it 489 // (We keep the notification object around even when it's not shown since it
469 // determines whether to show itself). 490 // determines whether to show itself).
470 bool ShowingBlockedPopupNotification() const; 491 bool ShowingBlockedPopupNotification() const;
471 492
472 private: 493 private:
494 // Expires InfoBars that need to be expired, according to the state carried
495 // in |details|, in response to a new NavigationEntry being committed (the
496 // user navigated to another page).
497 void ExpireInfoBars(
498 const NavigationController::LoadCommittedDetails& details);
499
473 // Data ---------------------------------------------------------------------- 500 // Data ----------------------------------------------------------------------
474 501
475 TabContentsType type_; 502 TabContentsType type_;
476 503
477 TabContentsDelegate* delegate_; 504 TabContentsDelegate* delegate_;
478 NavigationController* controller_; 505 NavigationController* controller_;
479 506
480 // Indicates whether we're currently loading a resource. 507 // Indicates whether we're currently loading a resource.
481 bool is_loading_; 508 bool is_loading_;
482 509
(...skipping 22 matching lines...) Expand all
505 int last_focused_view_storage_id_; 532 int last_focused_view_storage_id_;
506 533
507 // See capturing_contents() above. 534 // See capturing_contents() above.
508 bool capturing_contents_; 535 bool capturing_contents_;
509 536
510 // ConstrainedWindow with additional methods for managing blocked 537 // ConstrainedWindow with additional methods for managing blocked
511 // popups. This pointer alsog goes in |child_windows_| for ownership, 538 // popups. This pointer alsog goes in |child_windows_| for ownership,
512 // repositioning, etc. 539 // repositioning, etc.
513 BlockedPopupContainer* blocked_popups_; 540 BlockedPopupContainer* blocked_popups_;
514 541
542 // Delegates for InfoBars associated with this TabContents.
543 std::vector<InfoBarDelegate*> infobar_delegates_;
544
515 DISALLOW_COPY_AND_ASSIGN(TabContents); 545 DISALLOW_COPY_AND_ASSIGN(TabContents);
516 }; 546 };
517 547
518 #endif // CHROME_BROWSER_TAB_CONTENTS_H_ 548 #endif // CHROME_BROWSER_TAB_CONTENTS_H_
OLDNEW
« no previous file with comments | « chrome/browser/infobar_delegate.cc ('k') | chrome/browser/tab_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698