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

Side by Side Diff: chrome/browser/browser.cc

Issue 10973: Test the feasibility of turning Chrome into a multi-process ActiveX control Base URL: http://src.chromium.org/svn/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/browser.h ('k') | chrome/browser/browser_init.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 #include <windows.h> 5 #include <windows.h>
6 #include <shellapi.h> 6 #include <shellapi.h>
7 7
8 #include "chrome/browser/browser.h" 8 #include "chrome/browser/browser.h"
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 : type_(type), 143 : type_(type),
144 profile_(profile), 144 profile_(profile),
145 window_(NULL), 145 window_(NULL),
146 tabstrip_model_(this, profile), 146 tabstrip_model_(this, profile),
147 controller_(this), 147 controller_(this),
148 toolbar_model_(this), 148 toolbar_model_(this),
149 chrome_updater_factory_(this), 149 chrome_updater_factory_(this),
150 is_attempting_to_close_browser_(false), 150 is_attempting_to_close_browser_(false),
151 override_maximized_(false), 151 override_maximized_(false),
152 method_factory_(this), 152 method_factory_(this),
153 idle_task_(new BrowserIdleTimer) { 153 idle_task_(new BrowserIdleTimer),
154 parent_hwnd_(NULL) {
154 tabstrip_model_.AddObserver(this); 155 tabstrip_model_.AddObserver(this);
155 156
156 NotificationService::current()->AddObserver( 157 NotificationService::current()->AddObserver(
157 this, NOTIFY_SSL_STATE_CHANGED, NotificationService::AllSources()); 158 this, NOTIFY_SSL_STATE_CHANGED, NotificationService::AllSources());
158 159
159 InitCommandState(); 160 InitCommandState();
160 BrowserList::AddBrowser(this); 161 BrowserList::AddBrowser(this);
161 162
162 encoding_auto_detect_.Init(prefs::kWebKitUsesUniversalDetector, 163 encoding_auto_detect_.Init(prefs::kWebKitUsesUniversalDetector,
163 profile_->GetPrefs(), NULL); 164 profile_->GetPrefs(), NULL);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 225
225 // static 226 // static
226 Browser* Browser::CreateForApp(const std::wstring& app_name, 227 Browser* Browser::CreateForApp(const std::wstring& app_name,
227 Profile* profile) { 228 Profile* profile) {
228 Browser* browser = new Browser(BrowserType::APPLICATION, profile); 229 Browser* browser = new Browser(BrowserType::APPLICATION, profile);
229 browser->app_name_ = app_name; 230 browser->app_name_ = app_name;
230 browser->CreateBrowserWindow(); 231 browser->CreateBrowserWindow();
231 return browser; 232 return browser;
232 } 233 }
233 234
235 // static
236 Browser* Browser::CreateForEmbedded(HWND parent_hwnd,
237 gfx::Rect& rect,
238 Profile* profile) {
239 Browser* browser = new Browser(BrowserType::EMBEDDED, profile);
240 browser->set_parent_hwnd(parent_hwnd);
241 browser->set_override_bounds(rect);
242 browser->CreateBrowserWindow();
243 return browser;
244 }
245
234 void Browser::CreateBrowserWindow() { 246 void Browser::CreateBrowserWindow() {
235 DCHECK(!window_); 247 DCHECK(!window_);
236 window_ = BrowserWindow::CreateBrowserWindow(this); 248 window_ = BrowserWindow::CreateBrowserWindow(this);
237 249
238 // Show the First Run information bubble if we've been told to. 250 // Show the First Run information bubble if we've been told to.
239 PrefService* local_state = g_browser_process->local_state(); 251 PrefService* local_state = g_browser_process->local_state();
240 if (local_state->IsPrefRegistered(prefs::kShouldShowFirstRunBubble) && 252 if (local_state->IsPrefRegistered(prefs::kShouldShowFirstRunBubble) &&
241 local_state->GetBoolean(prefs::kShouldShowFirstRunBubble)) { 253 local_state->GetBoolean(prefs::kShouldShowFirstRunBubble)) {
242 // Reset the preference so we don't show the bubble for subsequent windows. 254 // Reset the preference so we don't show the bubble for subsequent windows.
243 local_state->ClearPref(prefs::kShouldShowFirstRunBubble); 255 local_state->ClearPref(prefs::kShouldShowFirstRunBubble);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 std::wstring Browser::GetWindowPlacementKey() const { 319 std::wstring Browser::GetWindowPlacementKey() const {
308 std::wstring name(prefs::kBrowserWindowPlacement); 320 std::wstring name(prefs::kBrowserWindowPlacement);
309 if (!app_name_.empty()) { 321 if (!app_name_.empty()) {
310 name.append(L"_"); 322 name.append(L"_");
311 name.append(app_name_); 323 name.append(app_name_);
312 } 324 }
313 return name; 325 return name;
314 } 326 }
315 327
316 bool Browser::ShouldSaveWindowPlacement() const { 328 bool Browser::ShouldSaveWindowPlacement() const {
317 // We don't save window position for popups. 329 // We don't save window position for popups for embedded windows.
318 return type() != BrowserType::BROWSER; 330 return type() != BrowserType::BROWSER && type() != BrowserType::EMBEDDED;
319 } 331 }
320 332
321 void Browser::SaveWindowPlacement(const gfx::Rect& bounds, bool maximized) { 333 void Browser::SaveWindowPlacement(const gfx::Rect& bounds, bool maximized) {
322 // Save to the session storage service, used when reloading a past session. 334 // Save to the session storage service, used when reloading a past session.
323 // Note that we don't want to be the ones who cause lazy initialization of 335 // Note that we don't want to be the ones who cause lazy initialization of
324 // the session service. This function gets called during initial window 336 // the session service. This function gets called during initial window
325 // showing, and we don't want to bring in the session service this early. 337 // showing, and we don't want to bring in the session service this early.
326 if (profile()->HasSessionService()) { 338 if (profile()->HasSessionService()) {
327 SessionService* session_service = profile()->GetSessionService(); 339 SessionService* session_service = profile()->GetSessionService();
328 if (session_service) 340 if (session_service)
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 702
691 const TabRestoreService::HistoricalTab& tab = tabs.front(); 703 const TabRestoreService::HistoricalTab& tab = tabs.front();
692 AddRestoredTab(tab.navigations, tab_count(), tab.current_navigation_index, 704 AddRestoredTab(tab.navigations, tab_count(), tab.current_navigation_index,
693 true); 705 true);
694 service->RemoveHistoricalTabById(tab.id); 706 service->RemoveHistoricalTabById(tab.id);
695 } 707 }
696 708
697 void Browser::ConvertPopupToTabbedBrowser() { 709 void Browser::ConvertPopupToTabbedBrowser() {
698 UserMetrics::RecordAction(L"ShowAsTab", profile_); 710 UserMetrics::RecordAction(L"ShowAsTab", profile_);
699 711
700 if (type() != BrowserType::BROWSER) { 712 if (type() != BrowserType::BROWSER && type() != BrowserType::EMBEDDED) {
701 NOTREACHED(); 713 NOTREACHED();
702 return; 714 return;
703 } 715 }
704 716
705 int tab_strip_index = tabstrip_model_.selected_index(); 717 int tab_strip_index = tabstrip_model_.selected_index();
706 TabContents* contents = tabstrip_model_.DetachTabContentsAt(tab_strip_index); 718 TabContents* contents = tabstrip_model_.DetachTabContentsAt(tab_strip_index);
707 Browser* browser = Browser::Create(profile_); 719 Browser* browser = Browser::Create(profile_);
708 browser->tabstrip_model()->AppendTabContents(contents, true); 720 browser->tabstrip_model()->AppendTabContents(contents, true);
709 browser->window()->Show(); 721 browser->window()->Show();
710 } 722 }
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
1269 // the right index (if tab 5 is selected and we right-click tab 1 we want 1281 // the right index (if tab 5 is selected and we right-click tab 1 we want
1270 // the new tab to appear in index position 2, not 6). 1282 // the new tab to appear in index position 2, not 6).
1271 if (tabstrip_model_.selected_index() != index) 1283 if (tabstrip_model_.selected_index() != index)
1272 tabstrip_model_.SelectTabContentsAt(index, true); 1284 tabstrip_model_.SelectTabContentsAt(index, true);
1273 tabstrip_model_.AddTabContents(new_contents, index + 1, 1285 tabstrip_model_.AddTabContents(new_contents, index + 1,
1274 PageTransition::LINK, true); 1286 PageTransition::LINK, true);
1275 } else { 1287 } else {
1276 Browser* browser = NULL; 1288 Browser* browser = NULL;
1277 if (type_ == BrowserType::APPLICATION) { 1289 if (type_ == BrowserType::APPLICATION) {
1278 browser = Browser::CreateForApp(app_name_, profile_); 1290 browser = Browser::CreateForApp(app_name_, profile_);
1279 } else if (type_ == BrowserType::BROWSER) { 1291 } else if (type_ == BrowserType::BROWSER || type_ == BrowserType::EMBEDDED) {
1280 browser = Browser::CreateForPopup(profile_); 1292 browser = Browser::CreateForPopup(profile_);
1281 } 1293 }
1282 1294
1283 // We need to show the browser now. Otherwise ContainerWin assumes the 1295 // We need to show the browser now. Otherwise ContainerWin assumes the
1284 // TabContents is invisible and won't size it. 1296 // TabContents is invisible and won't size it.
1285 browser->window()->Show(); 1297 browser->window()->Show();
1286 1298
1287 // The page transition below is only for the purpose of inserting the tab. 1299 // The page transition below is only for the purpose of inserting the tab.
1288 HWND parent_hwnd = reinterpret_cast<HWND>(window_->GetNativeHandle()); 1300 HWND parent_hwnd = reinterpret_cast<HWND>(window_->GetNativeHandle());
1289 new_contents = browser->AddTabWithNavigationController( 1301 new_contents = browser->AddTabWithNavigationController(
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 1673
1662 int index = tabstrip_model_.GetIndexOfTabContents(source); 1674 int index = tabstrip_model_.GetIndexOfTabContents(source);
1663 if (index == TabStripModel::kNoTab) { 1675 if (index == TabStripModel::kNoTab) {
1664 NOTREACHED() << "CloseContents called for tab not in our strip"; 1676 NOTREACHED() << "CloseContents called for tab not in our strip";
1665 return; 1677 return;
1666 } 1678 }
1667 tabstrip_model_.CloseTabContentsAt(index); 1679 tabstrip_model_.CloseTabContentsAt(index);
1668 } 1680 }
1669 1681
1670 void Browser::MoveContents(TabContents* source, const gfx::Rect& pos) { 1682 void Browser::MoveContents(TabContents* source, const gfx::Rect& pos) {
1671 if (type() != BrowserType::BROWSER) { 1683 if (type() != BrowserType::BROWSER && type() != BrowserType::EMBEDDED) {
1672 NOTREACHED() << "moving invalid browser type"; 1684 NOTREACHED() << "moving invalid browser type";
1673 return; 1685 return;
1674 } 1686 }
1675 window_->SetBounds(pos); 1687 window_->SetBounds(pos);
1676 } 1688 }
1677 1689
1678 bool Browser::IsPopup(TabContents* source) { 1690 bool Browser::IsPopup(TabContents* source) {
1679 // A non-tabbed BROWSER is an unconstrained popup. 1691 // A non-tabbed BROWSER is an unconstrained popup.
1680 return (type() == BrowserType::BROWSER); 1692 return (type() == BrowserType::BROWSER);
1681 } 1693 }
1682 1694
1695 bool Browser::IsEmbedded(TabContents* source) {
1696 return (type() == BrowserType::EMBEDDED);
1697 }
1698
1683 void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) { 1699 void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) {
1684 if (source == GetSelectedTabContents() || source == NULL) { 1700 if (source == GetSelectedTabContents() || source == NULL) {
1685 // This will refresh the shelf if needed. 1701 // This will refresh the shelf if needed.
1686 window_->SelectedTabToolbarSizeChanged(is_animating); 1702 window_->SelectedTabToolbarSizeChanged(is_animating);
1687 } 1703 }
1688 } 1704 }
1689 1705
1690 void Browser::URLStarredChanged(TabContents* source, bool starred) { 1706 void Browser::URLStarredChanged(TabContents* source, bool starred) {
1691 if (source == GetSelectedTabContents()) 1707 if (source == GetSelectedTabContents())
1692 SetStarredButtonToggled(starred); 1708 SetStarredButtonToggled(starred);
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after
2345 2361
2346 // We need to register the window position pref. 2362 // We need to register the window position pref.
2347 std::wstring window_pref(prefs::kBrowserWindowPlacement); 2363 std::wstring window_pref(prefs::kBrowserWindowPlacement);
2348 window_pref.append(L"_"); 2364 window_pref.append(L"_");
2349 window_pref.append(app_name); 2365 window_pref.append(app_name);
2350 PrefService* prefs = g_browser_process->local_state(); 2366 PrefService* prefs = g_browser_process->local_state();
2351 DCHECK(prefs); 2367 DCHECK(prefs);
2352 2368
2353 prefs->RegisterDictionaryPref(window_pref.c_str()); 2369 prefs->RegisterDictionaryPref(window_pref.c_str());
2354 } 2370 }
OLDNEW
« no previous file with comments | « chrome/browser/browser.h ('k') | chrome/browser/browser_init.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698