| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 1880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1891 } | 1891 } |
| 1892 | 1892 |
| 1893 gfx::Size WebContentsImpl::GetPreferredSize() const { | 1893 gfx::Size WebContentsImpl::GetPreferredSize() const { |
| 1894 return preferred_size_; | 1894 return preferred_size_; |
| 1895 } | 1895 } |
| 1896 | 1896 |
| 1897 int WebContentsImpl::GetContentRestrictions() const { | 1897 int WebContentsImpl::GetContentRestrictions() const { |
| 1898 return content_restrictions_; | 1898 return content_restrictions_; |
| 1899 } | 1899 } |
| 1900 | 1900 |
| 1901 WebUI* WebContentsImpl::GetWebUIForCurrentState() { | |
| 1902 // When there is a pending navigation entry, we want to use the pending WebUI | |
| 1903 // that goes along with it to control the basic flags. For example, we want to | |
| 1904 // show the pending URL in the URL bar, so we want the display_url flag to | |
| 1905 // be from the pending entry. | |
| 1906 // | |
| 1907 // The confusion comes because there are multiple possibilities for the | |
| 1908 // initial load in a tab as a side effect of the way the RenderViewHostManager | |
| 1909 // works. | |
| 1910 // | |
| 1911 // - For the very first tab the load looks "normal". The new tab Web UI is | |
| 1912 // the pending one, and we want it to apply here. | |
| 1913 // | |
| 1914 // - For subsequent new tabs, they'll get a new SiteInstance which will then | |
| 1915 // get switched to the one previously associated with the new tab pages. | |
| 1916 // This switching will cause the manager to commit the RVH/WebUI. So we'll | |
| 1917 // have a committed Web UI in this case. | |
| 1918 // | |
| 1919 // This condition handles all of these cases: | |
| 1920 // | |
| 1921 // - First load in first tab: no committed nav entry + pending nav entry + | |
| 1922 // pending dom ui: | |
| 1923 // -> Use pending Web UI if any. | |
| 1924 // | |
| 1925 // - First load in second tab: no committed nav entry + pending nav entry + | |
| 1926 // no pending Web UI: | |
| 1927 // -> Use the committed Web UI if any. | |
| 1928 // | |
| 1929 // - Second navigation in any tab: committed nav entry + pending nav entry: | |
| 1930 // -> Use pending Web UI if any. | |
| 1931 // | |
| 1932 // - Normal state with no load: committed nav entry + no pending nav entry: | |
| 1933 // -> Use committed Web UI. | |
| 1934 if (controller_.GetPendingEntry() && | |
| 1935 (controller_.GetLastCommittedEntry() || | |
| 1936 render_manager_.pending_web_ui())) | |
| 1937 return render_manager_.pending_web_ui(); | |
| 1938 return render_manager_.web_ui(); | |
| 1939 } | |
| 1940 | |
| 1941 bool WebContentsImpl::GotResponseToLockMouseRequest(bool allowed) { | 1901 bool WebContentsImpl::GotResponseToLockMouseRequest(bool allowed) { |
| 1942 return GetRenderViewHost() ? | 1902 return GetRenderViewHost() ? |
| 1943 GetRenderViewHostImpl()->GotResponseToLockMouseRequest(allowed) : false; | 1903 GetRenderViewHostImpl()->GotResponseToLockMouseRequest(allowed) : false; |
| 1944 } | 1904 } |
| 1945 | 1905 |
| 1946 bool WebContentsImpl::HasOpener() const { | 1906 bool WebContentsImpl::HasOpener() const { |
| 1947 return opener_ != NULL; | 1907 return opener_ != NULL; |
| 1948 } | 1908 } |
| 1949 | 1909 |
| 1950 void WebContentsImpl::DidChooseColorInColorChooser(int color_chooser_id, | 1910 void WebContentsImpl::DidChooseColorInColorChooser(int color_chooser_id, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1964 bool is_favicon, | 1924 bool is_favicon, |
| 1965 int image_size, | 1925 int image_size, |
| 1966 const ImageDownloadCallback& callback) { | 1926 const ImageDownloadCallback& callback) { |
| 1967 RenderViewHost* host = GetRenderViewHost(); | 1927 RenderViewHost* host = GetRenderViewHost(); |
| 1968 int id = StartDownload(host, url, is_favicon, image_size); | 1928 int id = StartDownload(host, url, is_favicon, image_size); |
| 1969 image_download_map_[id] = callback; | 1929 image_download_map_[id] = callback; |
| 1970 return id; | 1930 return id; |
| 1971 } | 1931 } |
| 1972 | 1932 |
| 1973 bool WebContentsImpl::FocusLocationBarByDefault() { | 1933 bool WebContentsImpl::FocusLocationBarByDefault() { |
| 1974 WebUI* web_ui = GetWebUIForCurrentState(); | |
| 1975 if (web_ui) | |
| 1976 return web_ui->ShouldFocusLocationBarByDefault(); | |
| 1977 NavigationEntry* entry = controller_.GetActiveEntry(); | 1934 NavigationEntry* entry = controller_.GetActiveEntry(); |
| 1978 if (entry && entry->GetURL() == GURL(chrome::kAboutBlankURL)) | 1935 if (entry && entry->GetURL() == GURL(chrome::kAboutBlankURL)) |
| 1979 return true; | 1936 return true; |
| 1980 return delegate_ && delegate_->ShouldFocusLocationBarByDefault(this); | 1937 return delegate_ && delegate_->ShouldFocusLocationBarByDefault(this); |
| 1981 } | 1938 } |
| 1982 | 1939 |
| 1983 void WebContentsImpl::SetFocusToLocationBar(bool select_all) { | 1940 void WebContentsImpl::SetFocusToLocationBar(bool select_all) { |
| 1984 if (delegate_) | 1941 if (delegate_) |
| 1985 delegate_->SetFocusToLocationBar(select_all); | 1942 delegate_->SetFocusToLocationBar(select_all); |
| 1986 } | 1943 } |
| (...skipping 1451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3438 } | 3395 } |
| 3439 | 3396 |
| 3440 BrowserPluginGuestManager* | 3397 BrowserPluginGuestManager* |
| 3441 WebContentsImpl::GetBrowserPluginGuestManager() const { | 3398 WebContentsImpl::GetBrowserPluginGuestManager() const { |
| 3442 return static_cast<BrowserPluginGuestManager*>( | 3399 return static_cast<BrowserPluginGuestManager*>( |
| 3443 GetBrowserContext()->GetUserData( | 3400 GetBrowserContext()->GetUserData( |
| 3444 browser_plugin::kBrowserPluginGuestManagerKeyName)); | 3401 browser_plugin::kBrowserPluginGuestManagerKeyName)); |
| 3445 } | 3402 } |
| 3446 | 3403 |
| 3447 } // namespace content | 3404 } // namespace content |
| OLD | NEW |