summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-06 20:32:34 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-06 20:32:34 +0000
commitda90ffdff909ac442444c6d7b8ec9a2a15d8f01a (patch)
treeaf443280d67276ae0fe4e8cf007e23c7d2db6894 /chrome
parentceac4d2624abac6f223f99e4a3a6147723b3b1e3 (diff)
downloadchromium_src-da90ffdff909ac442444c6d7b8ec9a2a15d8f01a.zip
chromium_src-da90ffdff909ac442444c6d7b8ec9a2a15d8f01a.tar.gz
chromium_src-da90ffdff909ac442444c6d7b8ec9a2a15d8f01a.tar.bz2
Create a stub LocationBar object on Mac to communicate between the bar and the Browser.
Review URL: http://codereview.chromium.org/20136 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9334 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/browser_window_cocoa.mm24
-rw-r--r--chrome/browser/browser_window_controller.h4
-rw-r--r--chrome/browser/browser_window_controller.mm5
-rw-r--r--chrome/browser/cocoa/tab_contents_controller.h5
-rw-r--r--chrome/browser/cocoa/tab_contents_controller.mm44
-rw-r--r--chrome/browser/cocoa/tab_strip_controller.h4
-rw-r--r--chrome/browser/cocoa/tab_strip_controller.mm8
-rw-r--r--chrome/browser/location_bar.h3
8 files changed, 93 insertions, 4 deletions
diff --git a/chrome/browser/browser_window_cocoa.mm b/chrome/browser/browser_window_cocoa.mm
index d178f02..b78b913 100644
--- a/chrome/browser/browser_window_cocoa.mm
+++ b/chrome/browser/browser_window_cocoa.mm
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/gfx/rect.h"
+#include "base/logging.h"
#include "chrome/browser/browser_window_cocoa.h"
#include "chrome/browser/browser_window_controller.h"
@@ -56,15 +57,19 @@ StatusBubble* BrowserWindowCocoa::GetStatusBubble() {
}
void BrowserWindowCocoa::SelectedTabToolbarSizeChanged(bool is_animating) {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::UpdateTitleBar() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::UpdateLoadingAnimations(bool should_animate) {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::SetStarredState(bool is_starred) {
+ NOTIMPLEMENTED();
}
gfx::Rect BrowserWindowCocoa::GetNormalBounds() const {
@@ -82,63 +87,80 @@ bool BrowserWindowCocoa::IsMaximized() {
}
LocationBar* BrowserWindowCocoa::GetLocationBar() const {
- return NULL;
+ return [controller_ locationBar];
}
void BrowserWindowCocoa::UpdateStopGoState(bool is_loading) {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::UpdateToolbar(TabContents* contents,
bool should_restore_state) {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::FocusToolbar() {
+ NOTIMPLEMENTED();
}
bool BrowserWindowCocoa::IsBookmarkBarVisible() const {
+ NOTIMPLEMENTED();
return true;
}
void BrowserWindowCocoa::ToggleBookmarkBar() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowAboutChromeDialog() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowBookmarkManager() {
+ NOTIMPLEMENTED();
}
bool BrowserWindowCocoa::IsBookmarkBubbleVisible() const {
+ NOTIMPLEMENTED();
return false;
}
void BrowserWindowCocoa::ShowBookmarkBubble(const GURL& url,
bool already_bookmarked) {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowReportBugDialog() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowClearBrowsingDataDialog() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowImportDialog() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowSearchEnginesDialog() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowPasswordManager() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowSelectProfileDialog() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowNewProfileDialog() {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::ShowHTMLDialog(HtmlDialogContentsDelegate* delegate,
void* parent_window) {
+ NOTIMPLEMENTED();
}
void BrowserWindowCocoa::DestroyBrowser() {
diff --git a/chrome/browser/browser_window_controller.h b/chrome/browser/browser_window_controller.h
index 7db33db..290b1b4 100644
--- a/chrome/browser/browser_window_controller.h
+++ b/chrome/browser/browser_window_controller.h
@@ -22,7 +22,6 @@ class BrowserWindow;
Browser* browser_;
BrowserWindow* windowShim_;
TabStripController* tabStripController_;
- TabContentsController* contentsController_;
IBOutlet NSBox* contentBox_;
IBOutlet TabStripView* tabStripView_;
@@ -43,6 +42,9 @@ class BrowserWindow;
// Access the C++ bridge between the NSWindow and the rest of Chromium
- (BrowserWindow*)browserWindow;
+// Get the C++ bridge object representing the location bar for the current tab.
+- (LocationBar*)locationBar;
+
@end
#endif // CHROME_BROWSER_BROWSER_WINDOW_CONTROLLER_H_
diff --git a/chrome/browser/browser_window_controller.mm b/chrome/browser/browser_window_controller.mm
index dce4c3b..e5b2d2c 100644
--- a/chrome/browser/browser_window_controller.mm
+++ b/chrome/browser/browser_window_controller.mm
@@ -27,7 +27,6 @@
delete browser_;
delete windowShim_;
[tabStripController_ release];
- [contentsController_ release];
[super dealloc];
}
@@ -108,4 +107,8 @@
browser_->ExecuteCommand(tag);
}
+- (LocationBar*)locationBar {
+ return [tabStripController_ locationBar];
+}
+
@end
diff --git a/chrome/browser/cocoa/tab_contents_controller.h b/chrome/browser/cocoa/tab_contents_controller.h
index d2cee1f..51878a1 100644
--- a/chrome/browser/cocoa/tab_contents_controller.h
+++ b/chrome/browser/cocoa/tab_contents_controller.h
@@ -8,6 +8,7 @@
#include <Cocoa/Cocoa.h>
class CommandUpdater;
+class LocationBar;
class TabContents;
class TabContentsCommandObserver;
class TabStripModel;
@@ -27,6 +28,7 @@ class TabStripModel;
@private
CommandUpdater* commands_; // weak, may be nil
TabContentsCommandObserver* observer_; // nil if |commands_| is nil
+ LocationBar* locationBarBrige_;
IBOutlet NSButton* backButton_;
IBOutlet NSButton* forwardButton_;
IBOutlet NSButton* reloadStopButton_;
@@ -45,6 +47,9 @@ class TabStripModel;
// Take this view (toolbar and web contents) full screen
- (IBAction)fullScreen:(id)sender;
+// Get the C++ bridge object representing the location bar for this tab.
+- (LocationBar*)locationBar;
+
@end
#endif // CHROME_BROWSER_COCOA_TAB_COTNENTS_CONTROLLER_H_
diff --git a/chrome/browser/cocoa/tab_contents_controller.mm b/chrome/browser/cocoa/tab_contents_controller.mm
index f31047a..bd1407a 100644
--- a/chrome/browser/cocoa/tab_contents_controller.mm
+++ b/chrome/browser/cocoa/tab_contents_controller.mm
@@ -6,6 +6,7 @@
#import "chrome/app/chrome_dll_resource.h"
#import "chrome/browser/command_updater.h"
+#import "chrome/browser/location_bar.h"
@interface TabContentsController(CommandUpdates)
- (void)enabledStateChangedForCommand:(NSInteger)command enabled:(BOOL)enabled;
@@ -23,10 +24,30 @@ class TabContentsCommandObserver : public CommandUpdater::CommandObserver {
void EnabledStateChangedForCommand(int command, bool enabled);
private:
- TabContentsController* controller_; // weak, owns us
+ TabContentsController* controller_; // weak, owns me
CommandUpdater* commands_; // weak
};
+// TODO(pinkerton): implement these
+class LocationBarBridge : public LocationBar {
+ public:
+ LocationBarBridge(TabContentsController* controller);
+
+ // Overridden from LocationBar
+ virtual void ShowFirstRunBubble() { NOTIMPLEMENTED(); }
+ virtual std::wstring GetInputString() const { NOTIMPLEMENTED(); return L""; }
+ virtual WindowOpenDisposition GetWindowOpenDisposition() const
+ { NOTIMPLEMENTED(); return NEW_FOREGROUND_TAB; }
+ virtual PageTransition::Type GetPageTransition() const
+ { NOTIMPLEMENTED(); return 0; }
+ virtual void AcceptInput() { NOTIMPLEMENTED(); }
+ virtual void FocusLocation() { NOTIMPLEMENTED(); }
+ virtual void FocusSearch() { NOTIMPLEMENTED(); }
+ virtual void SaveStateToContents(TabContents* contents) { NOTIMPLEMENTED(); }
+
+ private:
+ TabContentsController* controller_; // weak, owns me
+};
@implementation TabContentsController
@@ -38,6 +59,7 @@ class TabContentsCommandObserver : public CommandUpdater::CommandObserver {
commands_ = commands;
if (commands_)
observer_ = new TabContentsCommandObserver(self, commands);
+ locationBarBrige_ = new LocationBarBridge(self);
}
return self;
}
@@ -46,13 +68,27 @@ class TabContentsCommandObserver : public CommandUpdater::CommandObserver {
// make sure our contents have been removed from the window
[[self view] removeFromSuperview];
delete observer_;
+ delete locationBarBrige_;
[super dealloc];
}
- (void)awakeFromNib {
+ // Provide a starting point since we won't get notifications if the state
+ // doesn't change between tabs.
+ [backButton_ setEnabled:commands_->IsCommandEnabled(IDC_BACK) ? YES : NO];
+ [forwardButton_
+ setEnabled:commands_->IsCommandEnabled(IDC_FORWARD) ? YES : NO];
+ [reloadStopButton_
+ setEnabled:commands_->IsCommandEnabled(IDC_RELOAD) ? YES : NO];
+ [starButton_ setEnabled:commands_->IsCommandEnabled(IDC_STAR) ? YES : NO];
+
[locationBar_ setStringValue:@"http://dev.chromium.org"];
}
+- (LocationBar*)locationBar {
+ return locationBarBrige_;
+}
+
// Returns YES if the tab represented by this controller is the front-most.
- (BOOL)isCurrentTab {
// We're the current tab if we're in the view hierarchy, otherwise some other
@@ -126,3 +162,9 @@ void TabContentsCommandObserver::EnabledStateChangedForCommand(int command,
[controller_ enabledStateChangedForCommand:command
enabled:enabled ? YES : NO];
}
+
+//--------------------------------------------------------------------------
+
+LocationBarBridge::LocationBarBridge(TabContentsController* controller)
+ : controller_(controller) {
+}
diff --git a/chrome/browser/cocoa/tab_strip_controller.h b/chrome/browser/cocoa/tab_strip_controller.h
index 2330bd5..6c181f2 100644
--- a/chrome/browser/cocoa/tab_strip_controller.h
+++ b/chrome/browser/cocoa/tab_strip_controller.h
@@ -8,6 +8,7 @@
#import <Cocoa/Cocoa.h>
class CommandUpdater;
+class LocationBar;
@class TabStripView;
class TabStripBridge;
class TabStripModel;
@@ -41,6 +42,9 @@ class TabStripModel;
model:(TabStripModel*)model
commands:(CommandUpdater*)commands;
+// Get the C++ bridge object representing the location bar for the current tab.
+- (LocationBar*)locationBar;
+
@end
#endif // CHROME_BROWSER_COCOA_TAB_STRIP_CONTROLLER_H_
diff --git a/chrome/browser/cocoa/tab_strip_controller.mm b/chrome/browser/cocoa/tab_strip_controller.mm
index 2ba72e2..926e2b9d 100644
--- a/chrome/browser/cocoa/tab_strip_controller.mm
+++ b/chrome/browser/cocoa/tab_strip_controller.mm
@@ -273,6 +273,14 @@ class TabStripBridge : public TabStripModelObserver {
[curr setFrame:newFrame];
}
}
+
+- (LocationBar*)locationBar {
+ TabContents* selectedContents = model_->GetSelectedTabContents();
+ TabContentsController* selectedController =
+ [self controllerWithContents:selectedContents];
+ return [selectedController locationBar];
+}
+
@end
//--------------------------------------------------------------------------
diff --git a/chrome/browser/location_bar.h b/chrome/browser/location_bar.h
index 0e6bc83..0ffc4d6 100644
--- a/chrome/browser/location_bar.h
+++ b/chrome/browser/location_bar.h
@@ -5,6 +5,9 @@
#ifndef CHROME_BROWSER_LOCATION_BAR_H_
#define CHROME_BROWSER_LOCATION_BAR_H_
+#include "chrome/common/page_transition_types.h"
+#include "webkit/glue/window_open_disposition.h"
+
////////////////////////////////////////////////////////////////////////////////
// LocationBar
// An interface providing access to the Location Bar component of the browser