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

Side by Side Diff: content/browser/tab_contents/tab_contents.cc

Issue 8549022: Define DevTools content API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments addressed Created 9 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/tab_contents/tab_contents.h" 5 #include "content/browser/tab_contents/tab_contents.h"
6 6
7 #include <cmath> 7 #include <cmath>
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"
11 #include "base/metrics/stats_counters.h" 11 #include "base/metrics/stats_counters.h"
12 #include "base/string16.h" 12 #include "base/string16.h"
13 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "base/time.h" 14 #include "base/time.h"
15 #include "base/utf_string_conversions.h" 15 #include "base/utf_string_conversions.h"
16 #include "content/browser/browser_context.h" 16 #include "content/browser/browser_context.h"
17 #include "content/browser/child_process_security_policy.h" 17 #include "content/browser/child_process_security_policy.h"
18 #include "content/browser/debugger/devtools_manager.h" 18 #include "content/browser/debugger/devtools_manager_impl.h"
19 #include "content/browser/download/download_manager.h" 19 #include "content/browser/download/download_manager.h"
20 #include "content/browser/download/download_stats.h" 20 #include "content/browser/download/download_stats.h"
21 #include "content/browser/host_zoom_map.h" 21 #include "content/browser/host_zoom_map.h"
22 #include "content/browser/in_process_webkit/session_storage_namespace.h" 22 #include "content/browser/in_process_webkit/session_storage_namespace.h"
23 #include "content/browser/load_from_memory_cache_details.h" 23 #include "content/browser/load_from_memory_cache_details.h"
24 #include "content/browser/load_notification_details.h" 24 #include "content/browser/load_notification_details.h"
25 #include "content/browser/renderer_host/render_process_host_impl.h" 25 #include "content/browser/renderer_host/render_process_host_impl.h"
26 #include "content/browser/renderer_host/render_view_host.h" 26 #include "content/browser/renderer_host/render_view_host.h"
27 #include "content/browser/renderer_host/render_widget_host_view.h" 27 #include "content/browser/renderer_host/render_widget_host_view.h"
28 #include "content/browser/renderer_host/resource_dispatcher_host.h" 28 #include "content/browser/renderer_host/resource_dispatcher_host.h"
29 #include "content/browser/renderer_host/resource_request_details.h" 29 #include "content/browser/renderer_host/resource_request_details.h"
30 #include "content/browser/site_instance.h" 30 #include "content/browser/site_instance.h"
31 #include "content/browser/tab_contents/interstitial_page.h" 31 #include "content/browser/tab_contents/interstitial_page.h"
32 #include "content/browser/tab_contents/navigation_details.h" 32 #include "content/browser/tab_contents/navigation_details.h"
33 #include "content/browser/tab_contents/navigation_entry.h" 33 #include "content/browser/tab_contents/navigation_entry.h"
34 #include "content/browser/tab_contents/provisional_load_details.h" 34 #include "content/browser/tab_contents/provisional_load_details.h"
35 #include "content/browser/tab_contents/tab_contents_delegate.h" 35 #include "content/browser/tab_contents/tab_contents_delegate.h"
36 #include "content/browser/tab_contents/tab_contents_observer.h" 36 #include "content/browser/tab_contents/tab_contents_observer.h"
37 #include "content/browser/tab_contents/tab_contents_view.h" 37 #include "content/browser/tab_contents/tab_contents_view.h"
38 #include "content/browser/tab_contents/title_updated_details.h" 38 #include "content/browser/tab_contents/title_updated_details.h"
39 #include "content/browser/user_metrics.h" 39 #include "content/browser/user_metrics.h"
40 #include "content/browser/webui/web_ui_factory.h" 40 #include "content/browser/webui/web_ui_factory.h"
41 #include "content/common/intents_messages.h" 41 #include "content/common/intents_messages.h"
42 #include "content/common/view_messages.h" 42 #include "content/common/view_messages.h"
43 #include "content/public/browser/content_browser_client.h" 43 #include "content/public/browser/content_browser_client.h"
44 #include "content/public/browser/devtools/devtools_agent_host_registry.h"
44 #include "content/public/browser/navigation_types.h" 45 #include "content/public/browser/navigation_types.h"
45 #include "content/public/browser/notification_service.h" 46 #include "content/public/browser/notification_service.h"
46 #include "content/public/common/bindings_policy.h" 47 #include "content/public/common/bindings_policy.h"
47 #include "content/public/common/content_constants.h" 48 #include "content/public/common/content_constants.h"
48 #include "content/public/common/content_restriction.h" 49 #include "content/public/common/content_restriction.h"
49 #include "content/public/common/url_constants.h" 50 #include "content/public/common/url_constants.h"
50 #include "net/base/net_util.h" 51 #include "net/base/net_util.h"
51 #include "net/url_request/url_request_context_getter.h" 52 #include "net/url_request/url_request_context_getter.h"
52 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 53 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
53 #include "ui/gfx/codec/png_codec.h" 54 #include "ui/gfx/codec/png_codec.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 // - Once the onunload handler is finished, a SwapOut_ACK message is sent to 94 // - Once the onunload handler is finished, a SwapOut_ACK message is sent to
94 // the ResourceDispatcherHost, who unpauses the response. Data is then sent 95 // the ResourceDispatcherHost, who unpauses the response. Data is then sent
95 // to the pending RVH. 96 // to the pending RVH.
96 // - The pending renderer sends a FrameNavigate message that invokes the 97 // - The pending renderer sends a FrameNavigate message that invokes the
97 // DidNavigate method. This replaces the current RVH with the 98 // DidNavigate method. This replaces the current RVH with the
98 // pending RVH. 99 // pending RVH.
99 // - The previous renderer is kept swapped out in RenderViewHostManager in case 100 // - The previous renderer is kept swapped out in RenderViewHostManager in case
100 // the user goes back. The process only stays live if another tab is using 101 // the user goes back. The process only stays live if another tab is using
101 // it, but if so, the existing frame relationships will be maintained. 102 // it, but if so, the existing frame relationships will be maintained.
102 103
104 using content::DevToolsAgentHost;
105 using content::DevToolsAgentHostRegistry;
106 using content::DevToolsManagerImpl;
107
103 namespace { 108 namespace {
104 109
105 // Amount of time we wait between when a key event is received and the renderer 110 // Amount of time we wait between when a key event is received and the renderer
106 // is queried for its state and pushed to the NavigationEntry. 111 // is queried for its state and pushed to the NavigationEntry.
107 const int kQueryStateDelay = 5000; 112 const int kQueryStateDelay = 5000;
108 113
109 const int kSyncWaitDelay = 40; 114 const int kSyncWaitDelay = 40;
110 115
111 static const char kDotGoogleDotCom[] = ".google.com"; 116 static const char kDotGoogleDotCom[] = ".google.com";
112 117
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 bool is_allowed_in_web_ui_renderer = content::GetContentClient()-> 606 bool is_allowed_in_web_ui_renderer = content::GetContentClient()->
602 browser()->GetWebUIFactory()->IsURLAcceptableForWebUI(browser_context(), 607 browser()->GetWebUIFactory()->IsURLAcceptableForWebUI(browser_context(),
603 entry.url()); 608 entry.url());
604 #if defined(OS_CHROMEOS) 609 #if defined(OS_CHROMEOS)
605 is_allowed_in_web_ui_renderer |= entry.url().SchemeIs(chrome::kDataScheme); 610 is_allowed_in_web_ui_renderer |= entry.url().SchemeIs(chrome::kDataScheme);
606 #endif 611 #endif
607 CHECK(!(enabled_bindings & content::BINDINGS_POLICY_WEB_UI) || 612 CHECK(!(enabled_bindings & content::BINDINGS_POLICY_WEB_UI) ||
608 is_allowed_in_web_ui_renderer); 613 is_allowed_in_web_ui_renderer);
609 614
610 // Tell DevTools agent that it is attached prior to the navigation. 615 // Tell DevTools agent that it is attached prior to the navigation.
611 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); 616 DevToolsManagerImpl::GetInstance()->OnNavigatingToPendingEntry(
612 if (devtools_manager) { // NULL in unit tests. 617 render_view_host(),
613 devtools_manager->OnNavigatingToPendingEntry(render_view_host(), 618 dest_render_view_host,
614 dest_render_view_host, 619 entry.url());
615 entry.url());
616 }
617 620
618 // Used for page load time metrics. 621 // Used for page load time metrics.
619 current_load_start_ = base::TimeTicks::Now(); 622 current_load_start_ = base::TimeTicks::Now();
620 623
621 // Navigate in the desired RenderViewHost. 624 // Navigate in the desired RenderViewHost.
622 ViewMsg_Navigate_Params navigate_params; 625 ViewMsg_Navigate_Params navigate_params;
623 MakeNavigateParams(entry, controller_, delegate_, reload_type, 626 MakeNavigateParams(entry, controller_, delegate_, reload_type,
624 &navigate_params); 627 &navigate_params);
625 dest_render_view_host->Navigate(navigate_params); 628 dest_render_view_host->Navigate(navigate_params);
626 629
(...skipping 1243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1870 1873
1871 void TabContents::RendererUnresponsive(RenderViewHost* rvh, 1874 void TabContents::RendererUnresponsive(RenderViewHost* rvh,
1872 bool is_during_unload) { 1875 bool is_during_unload) {
1873 // Don't show hung renderer dialog for a swapped out RVH. 1876 // Don't show hung renderer dialog for a swapped out RVH.
1874 if (rvh != render_view_host()) 1877 if (rvh != render_view_host())
1875 return; 1878 return;
1876 1879
1877 // Ignore renderer unresponsive event if debugger is attached to the tab 1880 // Ignore renderer unresponsive event if debugger is attached to the tab
1878 // since the event may be a result of the renderer sitting on a breakpoint. 1881 // since the event may be a result of the renderer sitting on a breakpoint.
1879 // See http://crbug.com/65458 1882 // See http://crbug.com/65458
1880 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); 1883 DevToolsAgentHost* agent =
1881 if (devtools_manager && 1884 content::DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh);
1882 devtools_manager->GetDevToolsClientHostFor(rvh) != NULL) 1885 if (agent &&
1886 DevToolsManagerImpl::GetInstance()->GetDevToolsClientHostFor(agent))
1883 return; 1887 return;
1884 1888
1885 if (is_during_unload) { 1889 if (is_during_unload) {
1886 // Hang occurred while firing the beforeunload/unload handler. 1890 // Hang occurred while firing the beforeunload/unload handler.
1887 // Pretend the handler fired so tab closing continues as if it had. 1891 // Pretend the handler fired so tab closing continues as if it had.
1888 rvh->set_sudden_termination_allowed(true); 1892 rvh->set_sudden_termination_allowed(true);
1889 1893
1890 if (!render_manager_.ShouldCloseTabOnUnresponsiveRenderer()) 1894 if (!render_manager_.ShouldCloseTabOnUnresponsiveRenderer())
1891 return; 1895 return;
1892 1896
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
2030 2034
2031 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { 2035 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) {
2032 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); 2036 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh);
2033 rwh_view->SetSize(view()->GetContainerSize()); 2037 rwh_view->SetSize(view()->GetContainerSize());
2034 } 2038 }
2035 2039
2036 bool TabContents::GotResponseToLockMouseRequest(bool allowed) { 2040 bool TabContents::GotResponseToLockMouseRequest(bool allowed) {
2037 return render_view_host() ? 2041 return render_view_host() ?
2038 render_view_host()->GotResponseToLockMouseRequest(allowed) : false; 2042 render_view_host()->GotResponseToLockMouseRequest(allowed) : false;
2039 } 2043 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698