X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fui%2Fbrowser.cc;h=5edd456decff5c44ac950358d96dfb3229157fbd;hb=3545e9f2671f595d2a2f3ee75ca0393b01e35ef6;hp=cc6df278c0d6341c8cc60a71f4c57283be4db07e;hpb=7d210d4c7e9ba36e635eabc5b5780495f8a63292;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/ui/browser.cc b/src/chrome/browser/ui/browser.cc index cc6df27..5edd456 100644 --- a/src/chrome/browser/ui/browser.cc +++ b/src/chrome/browser/ui/browser.cc @@ -54,6 +54,7 @@ #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" @@ -149,13 +150,17 @@ #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" @@ -180,10 +185,6 @@ #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" @@ -204,7 +205,7 @@ #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) @@ -309,8 +310,6 @@ class Browser::InterstitialObserver : public content::WebContentsObserver { browser_(browser) { } - using content::WebContentsObserver::web_contents; - virtual void DidAttachInterstitialPage() OVERRIDE { browser_->UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE); } @@ -352,9 +351,9 @@ Browser::Browser(const CreateParams& params) 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. @@ -368,8 +367,6 @@ Browser::Browser(const CreateParams& params) 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())); @@ -402,7 +399,7 @@ Browser::Browser(const CreateParams& params) 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)); @@ -448,6 +445,12 @@ Browser::Browser(const CreateParams& params) } 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() { @@ -569,6 +572,10 @@ base::string16 Browser::GetWindowTitleForCurrentTab() const { // |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); } @@ -854,7 +861,7 @@ void Browser::UpdateDownloadShelfVisibility(bool visible) { /////////////////////////////////////////////////////////////////////////////// void Browser::UpdateUIForNavigationInTab(WebContents* contents, - content::PageTransition transition, + ui::PageTransition transition, bool user_initiated) { tab_strip_model_->TabNavigating(contents, transition); @@ -896,6 +903,10 @@ void Browser::TabInsertedAt(WebContents* contents, 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()); @@ -937,6 +948,9 @@ void Browser::TabClosingAt(TabStripModel* tab_strip_model, content::Source(&contents->GetController()), content::NotificationService::NoDetails()); + if (popup_manager_) + popup_manager_->UnregisterWith(contents); + // Sever the WebContents' connection back to us. SetAsDelegate(contents, false); } @@ -952,6 +966,10 @@ void Browser::TabDetachedAt(WebContents* contents, int index) { session_service->SetSelectedTabInWindow(session_id(), old_active_index - 1); } + + if (popup_manager_) + popup_manager_->UnregisterWith(contents); + TabDetachedAtImpl(contents, index, DETACH_TYPE_DETACH); } @@ -1410,8 +1428,7 @@ bool Browser::IsPopupOrPanel(const WebContents* source) const { 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; @@ -1741,6 +1758,12 @@ void Browser::RequestMediaAccessPermission( ::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, @@ -1812,7 +1835,7 @@ void Browser::NavigateOnThumbnailClick(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; @@ -1900,14 +1923,17 @@ void Browser::FileSelectedWithExtraInfo(const ui::SelectedFileInfo& file_info, 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)); } /////////////////////////////////////////////////////////////////////////////// @@ -2010,7 +2036,7 @@ void Browser::Observe(int type, void Browser::OnDevToolsDisabledChanged() { if (profile_->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled)) - content::DevToolsManager::GetInstance()->CloseAllClientHosts(); + content::DevToolsAgentHost::DetachAllClients(); } /////////////////////////////////////////////////////////////////////////////// @@ -2104,11 +2130,6 @@ void Browser::ProcessPendingUIUpdates() { 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( @@ -2228,14 +2249,15 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { 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() { @@ -2286,10 +2308,11 @@ bool Browser::ShouldShowLocationBar() const { 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 = @@ -2339,7 +2362,7 @@ void Browser::UpdateBookmarkBarState(BookmarkBarStateChangeReason reason) { 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 { @@ -2457,7 +2480,7 @@ bool Browser::MaybeCreateBackgroundContents( contents->web_contents()->GetController().LoadURL( target_url, content::Referrer(), - content::PAGE_TRANSITION_LINK, + ui::PAGE_TRANSITION_LINK, std::string()); // No extra headers. }