#include "chrome/browser/extensions/api/tabs/tabs_windows_api.h"
#include "chrome/browser/extensions/browser_extension_window_controller.h"
#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/file_select_helper.h"
#include "chrome/common/profiling.h"
#include "chrome/common/search_types.h"
#include "chrome/common/url_constants.h"
+#include "chrome/grit/chromium_strings.h"
+#include "chrome/grit/generated_resources.h"
+#include "chrome/grit/locale_settings.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_utils.h"
#include "components/google/core/browser/google_url_tracker.h"
#include "components/search/search.h"
#include "components/startup_metric_utils/startup_metric_utils.h"
+#include "components/web_modal/popup_manager.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h"
-#include "content/public/browser/devtools_manager.h"
+#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/download_item.h"
#include "content/public/browser/download_manager.h"
#include "content/public/browser/interstitial_page.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/background_info.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
-#include "grit/locale_settings.h"
-#include "grit/theme_resources.h"
#include "net/base/filename_util.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "net/cookies/cookie_monster.h"
#endif // OS_WIN
#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/drive/file_system_util.h"
+#include "chrome/browser/chromeos/fileapi/external_file_url_util.h"
#endif
#if defined(USE_ASH)
browser_(browser) {
}
- using content::WebContentsObserver::web_contents;
-
virtual void DidAttachInterstitialPage() OVERRIDE {
browser_->UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE);
}
command_controller_(new chrome::BrowserCommandController(this)),
window_has_shown_(false),
chrome_updater_factory_(this),
- weak_factory_(this),
translate_driver_observer_(
- new BrowserContentTranslateDriverObserver(this)) {
+ new BrowserContentTranslateDriverObserver(this)),
+ weak_factory_(this) {
// If this causes a crash then a window is being opened using a profile type
// that is disallowed by policy. The crash prevents the disabled window type
// from opening at all, but the path that triggered it should be fixed.
else
unload_controller_.reset(new chrome::UnloadController(this));
- if (!app_name_.empty())
- chrome::RegisterAppPrefs(app_name_, profile_);
tab_strip_model_->AddObserver(this);
toolbar_model_.reset(new ToolbarModelImpl(toolbar_model_delegate_.get()));
prefs::kDevToolsDisabled,
base::Bind(&Browser::OnDevToolsDisabledChanged, base::Unretained(this)));
profile_pref_registrar_.Add(
- prefs::kShowBookmarkBar,
+ bookmarks::prefs::kShowBookmarkBar,
base::Bind(&Browser::UpdateBookmarkBarState, base::Unretained(this),
BOOKMARK_BAR_STATE_CHANGE_PREF_CHANGE));
}
fullscreen_controller_.reset(new FullscreenController(this));
+
+ // Must be initialized after window_.
+ // Also: surprise! a modal dialog host is not necessary to host modal dialogs
+ // without a modal dialog host, so that value may be null.
+ popup_manager_.reset(new web_modal::PopupManager(
+ GetWebContentsModalDialogHost()));
}
Browser::~Browser() {
// |contents| can be NULL because GetWindowTitleForCurrentTab is called by the
// window during the window's creation (before tabs have been added).
if (contents) {
+ // Streamlined hosted apps use the host instead of the title.
+ if (is_app() && extensions::util::IsStreamlinedHostedAppsEnabled())
+ return base::UTF8ToUTF16(contents->GetURL().host());
+
title = contents->GetTitle();
FormatTitleForDisplay(&title);
}
///////////////////////////////////////////////////////////////////////////////
void Browser::UpdateUIForNavigationInTab(WebContents* contents,
- content::PageTransition transition,
+ ui::PageTransition transition,
bool user_initiated) {
tab_strip_model_->TabNavigating(contents, transition);
int index,
bool foreground) {
SetAsDelegate(contents, true);
+
+ if (popup_manager_)
+ popup_manager_->RegisterWith(contents);
+
SessionTabHelper* session_tab_helper =
SessionTabHelper::FromWebContents(contents);
session_tab_helper->SetWindowID(session_id());
content::Source<NavigationController>(&contents->GetController()),
content::NotificationService::NoDetails());
+ if (popup_manager_)
+ popup_manager_->UnregisterWith(contents);
+
// Sever the WebContents' connection back to us.
SetAsDelegate(contents, false);
}
session_service->SetSelectedTabInWindow(session_id(),
old_active_index - 1);
}
+
+ if (popup_manager_)
+ popup_manager_->UnregisterWith(contents);
+
TabDetachedAtImpl(contents, index, DETACH_TYPE_DETACH);
}
return is_type_popup();
}
-void Browser::UpdateTargetURL(WebContents* source, int32 page_id,
- const GURL& url) {
+void Browser::UpdateTargetURL(WebContents* source, const GURL& url) {
if (!GetStatusBubble())
return;
::RequestMediaAccessPermission(web_contents, profile_, request, callback);
}
+bool Browser::CheckMediaAccessPermission(content::WebContents* web_contents,
+ const GURL& security_origin,
+ content::MediaStreamType type) {
+ return ::CheckMediaAccessPermission(web_contents, security_origin, type);
+}
+
bool Browser::RequestPpapiBrokerPermission(
WebContents* web_contents,
const GURL& url,
// TODO(kmadhusu): Page transitions to privileged destinations should be
// marked as "LINK" instead of "AUTO_BOOKMARK"?
chrome::NavigateParams params(this, url,
- content::PAGE_TRANSITION_AUTO_BOOKMARK);
+ ui::PAGE_TRANSITION_AUTO_BOOKMARK);
params.referrer = content::Referrer();
params.source_contents = source_contents;
params.disposition = disposition;
GURL url = net::FilePathToFileURL(file_info.local_path);
#if defined(OS_CHROMEOS)
- drive::util::MaybeSetDriveURL(profile_, file_info.file_path, &url);
+ const GURL external_url =
+ chromeos::CreateExternalFileURLFromPath(profile_, file_info.file_path);
+ if (!external_url.is_empty())
+ url = external_url;
#endif
if (url.is_empty())
return;
OpenURL(OpenURLParams(
- url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED, false));
+ url, Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false));
}
///////////////////////////////////////////////////////////////////////////////
void Browser::OnDevToolsDisabledChanged() {
if (profile_->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled))
- content::DevToolsManager::GetInstance()->CloseAllClientHosts();
+ content::DevToolsAgentHost::DetachAllClients();
}
///////////////////////////////////////////////////////////////////////////////
if (contents == tab_strip_model_->GetActiveWebContents()) {
// Updates that only matter when the tab is selected go here.
- if (flags & content::INVALIDATE_TYPE_PAGE_ACTIONS) {
- LocationBar* location_bar = window()->GetLocationBar();
- if (location_bar)
- location_bar->UpdatePageActions();
- }
// Updating the URL happens synchronously in ScheduleUIUpdate.
if (flags & content::INVALIDATE_TYPE_LOAD && GetStatusBubble()) {
GetStatusBubble()->SetStatus(CoreTabHelper::FromWebContents(
CoreTabHelper::FromWebContents(web_contents)->set_delegate(delegate);
SearchEngineTabHelper::FromWebContents(web_contents)->set_delegate(delegate);
SearchTabHelper::FromWebContents(web_contents)->set_delegate(delegate);
- if (delegate)
+ translate::ContentTranslateDriver& content_translate_driver =
+ ChromeTranslateClient::FromWebContents(web_contents)->translate_driver();
+ if (delegate) {
ZoomController::FromWebContents(web_contents)->AddObserver(this);
- else
+ content_translate_driver.AddObserver(translate_driver_observer_.get());
+ } else {
ZoomController::FromWebContents(web_contents)->RemoveObserver(this);
- ChromeTranslateClient* chrome_translate_client =
- ChromeTranslateClient::FromWebContents(web_contents);
- chrome_translate_client->translate_driver().set_observer(
- delegate ? delegate->translate_driver_observer_.get() : NULL);
+ content_translate_driver.RemoveObserver(translate_driver_observer_.get());
+ }
}
void Browser::CloseFrame() {
return true;
if (is_app()) {
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableStreamlinedHostedApps)) {
- // If kEnableStreamlinedHostedApps is true, show the location bar for
- // bookmark apps.
+ if (extensions::util::IsStreamlinedHostedAppsEnabled() &&
+ host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) {
+ // If streamlined hosted apps are enabled, show the location bar for
+ // bookmark apps, except on ash which has the toolbar merged into the
+ // frame.
ExtensionService* service =
extensions::ExtensionSystem::Get(profile_)->extension_service();
const extensions::Extension* extension =
if (profile_->IsGuestSession()) {
state = BookmarkBar::HIDDEN;
} else if (browser_defaults::bookmarks_enabled &&
- profile_->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar) &&
+ profile_->GetPrefs()->GetBoolean(bookmarks::prefs::kShowBookmarkBar) &&
!ShouldHideUIForFullscreen()) {
state = BookmarkBar::SHOW;
} else {
contents->web_contents()->GetController().LoadURL(
target_url,
content::Referrer(),
- content::PAGE_TRANSITION_LINK,
+ ui::PAGE_TRANSITION_LINK,
std::string()); // No extra headers.
}