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

Unified Diff: chrome/browser/tab_contents/tab_contents_view_mac.mm

Issue 8477042: Move Sad Tab implementation out of the TabContentsViews. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: changes for jochen and jam Created 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/tab_contents/tab_contents_view_mac.mm
diff --git a/chrome/browser/tab_contents/tab_contents_view_mac.mm b/chrome/browser/tab_contents/tab_contents_view_mac.mm
index 6f71e3a9bb9a3b2161020757ed37b461effe759d..ba507b43798dea14c36b4bc2da7ffdf24f57a1cd 100644
--- a/chrome/browser/tab_contents/tab_contents_view_mac.mm
+++ b/chrome/browser/tab_contents/tab_contents_view_mac.mm
@@ -8,12 +8,10 @@
#include <string>
-#include "chrome/browser/browser_shutdown.h"
#import "chrome/browser/renderer_host/chrome_render_widget_host_view_mac_delegate.h"
#include "chrome/browser/tab_contents/render_view_context_menu_mac.h"
#include "chrome/browser/tab_contents/web_drag_bookmark_handler_mac.h"
#import "chrome/browser/ui/cocoa/focus_tracker.h"
-#import "chrome/browser/ui/cocoa/tab_contents/sad_tab_controller.h"
#import "chrome/browser/ui/cocoa/view_id_util.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/renderer_host/render_view_host_factory.h"
@@ -27,9 +25,6 @@
#import "content/common/chrome_application_mac.h"
#import "content/common/mac/scoped_sending_event.h"
#include "content/common/view_messages.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
#include "skia/ext/skia_utils_mac.h"
#import "third_party/mozilla/NSPasteboard+Utils.h"
@@ -71,9 +66,8 @@ TabContentsView* CreateTabContentsView(TabContents* tab_contents) {
TabContentsViewMac::TabContentsViewMac(TabContents* tab_contents)
: tab_contents_(tab_contents),
- preferred_width_(0) {
- registrar_.Add(this, content::NOTIFICATION_TAB_CONTENTS_CONNECTED,
- content::Source<TabContents>(tab_contents));
+ preferred_width_(0),
+ overlaid_view_(nil) {
}
TabContentsViewMac::~TabContentsViewMac() {
@@ -120,6 +114,8 @@ RenderWidgetHostView* TabContentsViewMac::CreateViewForWidget(
NSView* view_view = view->native_view();
[view_view setFrame:[cocoa_view_.get() bounds]];
[view_view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+ // Add the new view below all other views; this also keeps it below any
+ // overlay view installed.
[cocoa_view_.get() addSubview:view_view
positioned:NSWindowBelow
relativeTo:nil];
@@ -188,21 +184,6 @@ void TabContentsViewMac::SetPageTitle(const string16& title) {
void TabContentsViewMac::OnTabCrashed(base::TerminationStatus /* status */,
int /* error_code */) {
- // Only show the sad tab if we're not in browser shutdown, so that TabContents
- // objects that are not in a browser (e.g., HTML dialogs) and thus are
- // visible do not flash a sad tab page.
- if (browser_shutdown::GetShutdownType() != browser_shutdown::NOT_VALID)
- return;
-
- if (!sad_tab_.get()) {
- DCHECK(tab_contents_);
- if (tab_contents_) {
- SadTabController* sad_tab =
- [[SadTabController alloc] initWithTabContents:tab_contents_
- superview:cocoa_view_];
- sad_tab_.reset(sad_tab);
- }
- }
}
void TabContentsViewMac::SizeContents(const gfx::Size& size) {
@@ -397,21 +378,22 @@ void TabContentsViewMac::GetViewBounds(gfx::Rect* out) const {
NOTIMPLEMENTED();
}
-void TabContentsViewMac::CloseTab() {
- tab_contents_->Close(tab_contents_->render_view_host());
+void TabContentsViewMac::InstallOverlayView(gfx::NativeView view) {
+ DCHECK(!overlaid_view_);
+ overlaid_view_ = view;
+ [view setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
+ [cocoa_view_.get() addSubview:view];
+ [view setFrame:[cocoa_view_.get() bounds]];
}
-void TabContentsViewMac::Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- switch (type) {
- case content::NOTIFICATION_TAB_CONTENTS_CONNECTED: {
- sad_tab_.reset();
- break;
- }
- default:
- NOTREACHED() << "Got a notification we didn't register for.";
- }
+void TabContentsViewMac::RemoveOverlayView() {
+ DCHECK(overlaid_view_);
+ [overlaid_view_ removeFromSuperview];
+ overlaid_view_ = nil;
+}
+
+void TabContentsViewMac::CloseTab() {
+ tab_contents_->Close(tab_contents_->render_view_host());
}
@implementation TabContentsViewCocoa
« no previous file with comments | « chrome/browser/tab_contents/tab_contents_view_mac.h ('k') | chrome/browser/ui/cocoa/browser_window_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698