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

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

Issue 8071013: Finish moving plugin probing out of process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 2 months 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 <string> 5 #include <string>
6 6
7 #include "base/bind.h"
7 #include "base/message_loop.h" 8 #include "base/message_loop.h"
8 #include "chrome/browser/chrome_plugin_service_filter.h" 9 #include "chrome/browser/chrome_plugin_service_filter.h"
9 #include "chrome/browser/chromeos/gview_request_interceptor.h" 10 #include "chrome/browser/chromeos/gview_request_interceptor.h"
10 #include "chrome/browser/plugin_prefs.h" 11 #include "chrome/browser/plugin_prefs.h"
11 #include "chrome/common/chrome_paths.h" 12 #include "chrome/common/chrome_paths.h"
12 #include "chrome/test/base/testing_pref_service.h" 13 #include "chrome/test/base/testing_pref_service.h"
13 #include "content/browser/mock_resource_context.h" 14 #include "content/browser/mock_resource_context.h"
14 #include "content/browser/plugin_service.h" 15 #include "content/browser/plugin_service.h"
15 #include "content/browser/renderer_host/dummy_resource_handler.h" 16 #include "content/browser/renderer_host/dummy_resource_handler.h"
16 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" 17 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 : public net::URLRequestJobFactory::ProtocolHandler { 61 : public net::URLRequestJobFactory::ProtocolHandler {
61 public: 62 public:
62 GViewRequestProtocolFactory() {} 63 GViewRequestProtocolFactory() {}
63 virtual ~GViewRequestProtocolFactory() {} 64 virtual ~GViewRequestProtocolFactory() {}
64 65
65 virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const { 66 virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const {
66 return new GViewURLRequestTestJob(request); 67 return new GViewURLRequestTestJob(request);
67 } 68 }
68 }; 69 };
69 70
71 void QuitMessageLoop(const std::vector<webkit::WebPluginInfo>&) {
72 MessageLoop::current()->Quit();
73 }
74
70 class GViewRequestInterceptorTest : public testing::Test { 75 class GViewRequestInterceptorTest : public testing::Test {
71 public: 76 public:
72 GViewRequestInterceptorTest() 77 GViewRequestInterceptorTest()
73 : ui_thread_(BrowserThread::UI, &message_loop_), 78 : ui_thread_(BrowserThread::UI, &message_loop_),
74 file_thread_(BrowserThread::FILE, &message_loop_), 79 file_thread_(BrowserThread::FILE, &message_loop_),
75 io_thread_(BrowserThread::IO, &message_loop_) {} 80 io_thread_(BrowserThread::IO, &message_loop_) {}
76 81
77 virtual void SetUp() { 82 virtual void SetUp() {
78 content::ResourceContext* resource_context = 83 content::ResourceContext* resource_context =
79 content::MockResourceContext::GetInstance(); 84 content::MockResourceContext::GetInstance();
(...skipping 22 matching lines...) Expand all
102 content::MockResourceContext::GetInstance(); 107 content::MockResourceContext::GetInstance();
103 net::URLRequestContext* request_context = 108 net::URLRequestContext* request_context =
104 resource_context->request_context(); 109 resource_context->request_context();
105 request_context->set_job_factory(old_factory_); 110 request_context->set_job_factory(old_factory_);
106 ChromePluginServiceFilter* filter = 111 ChromePluginServiceFilter* filter =
107 ChromePluginServiceFilter::GetInstance(); 112 ChromePluginServiceFilter::GetInstance();
108 filter->UnregisterResourceContext(resource_context); 113 filter->UnregisterResourceContext(resource_context);
109 PluginService::GetInstance()->set_filter(NULL); 114 PluginService::GetInstance()->set_filter(NULL);
110 } 115 }
111 116
117 // GetPluginInfoByPath() will only use stale information. Because plugin
118 // refresh is asynchronous, spin a MessageLoop until the callback is run,
119 // after which, the test will continue.
112 void RegisterPDFPlugin() { 120 void RegisterPDFPlugin() {
113 webkit::WebPluginInfo info; 121 webkit::WebPluginInfo info;
114 info.path = pdf_path_; 122 info.path = pdf_path_;
115 webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin(info); 123 webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin(info);
116 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); 124
125 PluginService::GetInstance()->RefreshPluginList();
126 PluginService::GetInstance()->GetPlugins(base::Bind(&QuitMessageLoop));
127 MessageLoop::current()->Run();
117 } 128 }
118 129
119 void UnregisterPDFPlugin() { 130 void UnregisterPDFPlugin() {
120 webkit::npapi::PluginList::Singleton()->UnregisterInternalPlugin(pdf_path_); 131 webkit::npapi::PluginList::Singleton()->UnregisterInternalPlugin(pdf_path_);
121 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); 132
133 PluginService::GetInstance()->RefreshPluginList();
134 PluginService::GetInstance()->GetPlugins(base::Bind(&QuitMessageLoop));
135 MessageLoop::current()->Run();
122 } 136 }
123 137
124 void SetPDFPluginLoadedState(bool want_loaded) { 138 void SetPDFPluginLoadedState(bool want_loaded) {
125 webkit::WebPluginInfo info; 139 webkit::WebPluginInfo info;
126 bool is_loaded = 140 bool is_loaded = PluginService::GetInstance()->GetPluginInfoByPath(
127 webkit::npapi::PluginList::Singleton()->GetPluginInfoByPath( 141 pdf_path_, &info);
128 pdf_path_, &info);
129 if (is_loaded && !want_loaded) { 142 if (is_loaded && !want_loaded) {
130 UnregisterPDFPlugin(); 143 UnregisterPDFPlugin();
131 is_loaded = webkit::npapi::PluginList::Singleton()->GetPluginInfoByPath( 144 is_loaded = PluginService::GetInstance()->GetPluginInfoByPath(
132 pdf_path_, &info); 145 pdf_path_, &info);
133 } else if (!is_loaded && want_loaded) { 146 } else if (!is_loaded && want_loaded) {
134 // This "loads" the plug-in even if it's not present on the 147 // This "loads" the plug-in even if it's not present on the
135 // system - which is OK since we don't actually use it, just 148 // system - which is OK since we don't actually use it, just
136 // need it to be "enabled" for the test. 149 // need it to be "enabled" for the test.
137 RegisterPDFPlugin(); 150 RegisterPDFPlugin();
138 is_loaded = webkit::npapi::PluginList::Singleton()->GetPluginInfoByPath( 151 is_loaded = PluginService::GetInstance()->GetPluginInfoByPath(
139 pdf_path_, &info); 152 pdf_path_, &info);
140 } 153 }
141 EXPECT_EQ(want_loaded, is_loaded); 154 EXPECT_EQ(want_loaded, is_loaded);
142 } 155 }
143 156
144 void SetupRequest(net::URLRequest* request) { 157 void SetupRequest(net::URLRequest* request) {
145 content::ResourceContext* context = 158 content::ResourceContext* context =
146 content::MockResourceContext::GetInstance(); 159 content::MockResourceContext::GetInstance();
147 ResourceDispatcherHostRequestInfo* info = 160 ResourceDispatcherHostRequestInfo* info =
148 new ResourceDispatcherHostRequestInfo(handler_, 161 new ResourceDispatcherHostRequestInfo(handler_,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 request.Start(); 254 request.Start();
242 MessageLoop::current()->Run(); 255 MessageLoop::current()->Run();
243 EXPECT_EQ(1, test_delegate_.received_redirect_count()); 256 EXPECT_EQ(1, test_delegate_.received_redirect_count());
244 EXPECT_EQ(GURL("http://docs.google.com/gview?url=http%3A//foo.com/file.ppt"), 257 EXPECT_EQ(GURL("http://docs.google.com/gview?url=http%3A//foo.com/file.ppt"),
245 request.url()); 258 request.url());
246 } 259 }
247 260
248 } // namespace 261 } // namespace
249 262
250 } // namespace chromeos 263 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698