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

Side by Side Diff: chrome/browser/extensions/api/debugger/debugger_api.cc

Issue 442303002: DevTools: migrate DevTools APIs to use WebContents instead of RenderViewHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review comments addressed. Created 6 years, 4 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) 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 // Implements the Chrome Extensions Debugger API. 5 // Implements the Chrome Extensions Debugger API.
6 6
7 #include "chrome/browser/extensions/api/debugger/debugger_api.h" 7 #include "chrome/browser/extensions/api/debugger/debugger_api.h"
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 } 155 }
156 156
157 157
158 // ExtensionDevToolsInfoBarDelegate ------------------------------------------- 158 // ExtensionDevToolsInfoBarDelegate -------------------------------------------
159 159
160 class ExtensionDevToolsInfoBarDelegate : public ConfirmInfoBarDelegate { 160 class ExtensionDevToolsInfoBarDelegate : public ConfirmInfoBarDelegate {
161 public: 161 public:
162 // Creates an extension dev tools infobar and delegate and adds the infobar to 162 // Creates an extension dev tools infobar and delegate and adds the infobar to
163 // the InfoBarService associated with |rvh|. Returns the infobar if it was 163 // the InfoBarService associated with |rvh|. Returns the infobar if it was
164 // successfully added. 164 // successfully added.
165 static infobars::InfoBar* Create(RenderViewHost* rvh, 165 static infobars::InfoBar* Create(WebContents* web_contents,
166 const std::string& client_name); 166 const std::string& client_name);
167 167
168 void set_client_host(ExtensionDevToolsClientHost* client_host) { 168 void set_client_host(ExtensionDevToolsClientHost* client_host) {
169 client_host_ = client_host; 169 client_host_ = client_host;
170 } 170 }
171 171
172 private: 172 private:
173 explicit ExtensionDevToolsInfoBarDelegate(const std::string& client_name); 173 explicit ExtensionDevToolsInfoBarDelegate(const std::string& client_name);
174 virtual ~ExtensionDevToolsInfoBarDelegate(); 174 virtual ~ExtensionDevToolsInfoBarDelegate();
175 175
176 // ConfirmInfoBarDelegate: 176 // ConfirmInfoBarDelegate:
177 virtual void InfoBarDismissed() OVERRIDE; 177 virtual void InfoBarDismissed() OVERRIDE;
178 virtual Type GetInfoBarType() const OVERRIDE; 178 virtual Type GetInfoBarType() const OVERRIDE;
179 virtual bool ShouldExpireInternal( 179 virtual bool ShouldExpireInternal(
180 const NavigationDetails& details) const OVERRIDE; 180 const NavigationDetails& details) const OVERRIDE;
181 virtual base::string16 GetMessageText() const OVERRIDE; 181 virtual base::string16 GetMessageText() const OVERRIDE;
182 virtual int GetButtons() const OVERRIDE; 182 virtual int GetButtons() const OVERRIDE;
183 virtual bool Cancel() OVERRIDE; 183 virtual bool Cancel() OVERRIDE;
184 184
185 std::string client_name_; 185 std::string client_name_;
186 ExtensionDevToolsClientHost* client_host_; 186 ExtensionDevToolsClientHost* client_host_;
187 187
188 DISALLOW_COPY_AND_ASSIGN(ExtensionDevToolsInfoBarDelegate); 188 DISALLOW_COPY_AND_ASSIGN(ExtensionDevToolsInfoBarDelegate);
189 }; 189 };
190 190
191 // static 191 // static
192 infobars::InfoBar* ExtensionDevToolsInfoBarDelegate::Create( 192 infobars::InfoBar* ExtensionDevToolsInfoBarDelegate::Create(
193 RenderViewHost* rvh, 193 WebContents* web_contents,
194 const std::string& client_name) { 194 const std::string& client_name) {
195 if (!rvh)
196 return NULL;
197
198 WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
199 if (!web_contents) 195 if (!web_contents)
200 return NULL; 196 return NULL;
201 197
202 InfoBarService* infobar_service = 198 InfoBarService* infobar_service =
203 InfoBarService::FromWebContents(web_contents); 199 InfoBarService::FromWebContents(web_contents);
204 if (!infobar_service) 200 if (!infobar_service)
205 return NULL; 201 return NULL;
206 202
207 return infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar( 203 return infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar(
208 scoped_ptr<ConfirmInfoBarDelegate>( 204 scoped_ptr<ConfirmInfoBarDelegate>(
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 content::NotificationService::AllSources()); 334 content::NotificationService::AllSources());
339 335
340 // Attach to debugger and tell it we are ready. 336 // Attach to debugger and tell it we are ready.
341 DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( 337 DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(
342 agent_host_.get(), this); 338 agent_host_.get(), this);
343 339
344 if (infobar_) { 340 if (infobar_) {
345 static_cast<ExtensionDevToolsInfoBarDelegate*>( 341 static_cast<ExtensionDevToolsInfoBarDelegate*>(
346 infobar_->delegate())->set_client_host(this); 342 infobar_->delegate())->set_client_host(this);
347 registrar_.Add( 343 registrar_.Add(
348 this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, 344 this,
349 content::Source<InfoBarService>(InfoBarService::FromWebContents( 345 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
350 WebContents::FromRenderViewHost( 346 content::Source<InfoBarService>(
351 agent_host_->GetRenderViewHost())))); 347 InfoBarService::FromWebContents(agent_host_->GetWebContents())));
352 } 348 }
353 } 349 }
354 350
355 ExtensionDevToolsClientHost::~ExtensionDevToolsClientHost() { 351 ExtensionDevToolsClientHost::~ExtensionDevToolsClientHost() {
356 // Ensure calling RemoveInfoBar() below won't result in Observe() trying to 352 // Ensure calling RemoveInfoBar() below won't result in Observe() trying to
357 // Close() us. 353 // Close() us.
358 registrar_.RemoveAll(); 354 registrar_.RemoveAll();
359 355
360 if (infobar_) { 356 if (infobar_) {
361 static_cast<ExtensionDevToolsInfoBarDelegate*>( 357 static_cast<ExtensionDevToolsInfoBarDelegate*>(
362 infobar_->delegate())->set_client_host(NULL); 358 infobar_->delegate())->set_client_host(NULL);
363 InfoBarService* infobar_service = InfoBarService::FromWebContents( 359 InfoBarService* infobar_service =
364 WebContents::FromRenderViewHost(agent_host_->GetRenderViewHost())); 360 InfoBarService::FromWebContents(agent_host_->GetWebContents());
365 infobar_service->RemoveInfoBar(infobar_); 361 infobar_service->RemoveInfoBar(infobar_);
366 } 362 }
367 AttachedClientHosts::GetInstance()->Remove(this); 363 AttachedClientHosts::GetInstance()->Remove(this);
368 } 364 }
369 365
370 // DevToolsClientHost interface 366 // DevToolsClientHost interface
371 void ExtensionDevToolsClientHost::InspectedContentsClosing() { 367 void ExtensionDevToolsClientHost::InspectedContentsClosing() {
372 SendDetachedEvent(); 368 SendDetachedEvent();
373 delete this; 369 delete this;
374 } 370 }
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 ExtensionSystem::Get(GetProfile()) 524 ExtensionSystem::Get(GetProfile())
529 ->process_manager() 525 ->process_manager()
530 ->GetBackgroundHostForExtension(*debuggee_.extension_id); 526 ->GetBackgroundHostForExtension(*debuggee_.extension_id);
531 if (extension_host) { 527 if (extension_host) {
532 if (PermissionsData::IsRestrictedUrl(extension_host->GetURL(), 528 if (PermissionsData::IsRestrictedUrl(extension_host->GetURL(),
533 extension_host->GetURL(), 529 extension_host->GetURL(),
534 extension(), 530 extension(),
535 &error_)) { 531 &error_)) {
536 return false; 532 return false;
537 } 533 }
538 agent_host_ = DevToolsAgentHost::GetOrCreateFor( 534 agent_host_ =
539 extension_host->render_view_host()); 535 DevToolsAgentHost::GetOrCreateFor(extension_host->host_contents());
540 } 536 }
541 } else if (debuggee_.target_id) { 537 } else if (debuggee_.target_id) {
542 agent_host_ = DevToolsAgentHost::GetForId(*debuggee_.target_id); 538 agent_host_ = DevToolsAgentHost::GetForId(*debuggee_.target_id);
543 } else { 539 } else {
544 error_ = keys::kInvalidTargetError; 540 error_ = keys::kInvalidTargetError;
545 return false; 541 return false;
546 } 542 }
547 543
548 if (!agent_host_.get()) { 544 if (!agent_host_.get()) {
549 FormatErrorMessage(keys::kNoTargetError); 545 FormatErrorMessage(keys::kNoTargetError);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 FormatErrorMessage(keys::kAlreadyAttachedError); 591 FormatErrorMessage(keys::kAlreadyAttachedError);
596 return false; 592 return false;
597 } 593 }
598 594
599 infobars::InfoBar* infobar = NULL; 595 infobars::InfoBar* infobar = NULL;
600 if (!CommandLine::ForCurrentProcess()-> 596 if (!CommandLine::ForCurrentProcess()->
601 HasSwitch(::switches::kSilentDebuggerExtensionAPI)) { 597 HasSwitch(::switches::kSilentDebuggerExtensionAPI)) {
602 // Do not attach to the target if for any reason the infobar cannot be shown 598 // Do not attach to the target if for any reason the infobar cannot be shown
603 // for this WebContents instance. 599 // for this WebContents instance.
604 infobar = ExtensionDevToolsInfoBarDelegate::Create( 600 infobar = ExtensionDevToolsInfoBarDelegate::Create(
605 agent_host_->GetRenderViewHost(), extension()->name()); 601 agent_host_->GetWebContents(), extension()->name());
606 if (!infobar) { 602 if (!infobar) {
607 error_ = ErrorUtils::FormatErrorMessage( 603 error_ = ErrorUtils::FormatErrorMessage(
608 keys::kSilentDebuggingRequired, 604 keys::kSilentDebuggingRequired,
609 ::switches::kSilentDebuggerExtensionAPI); 605 ::switches::kSilentDebuggerExtensionAPI);
610 return false; 606 return false;
611 } 607 }
612 } 608 }
613 609
614 new ExtensionDevToolsClientHost(GetProfile(), 610 new ExtensionDevToolsClientHost(GetProfile(),
615 agent_host_.get(), 611 agent_host_.get(),
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 const std::vector<DevToolsTargetImpl*>& target_list) { 741 const std::vector<DevToolsTargetImpl*>& target_list) {
746 scoped_ptr<base::ListValue> result(new base::ListValue()); 742 scoped_ptr<base::ListValue> result(new base::ListValue());
747 for (size_t i = 0; i < target_list.size(); ++i) 743 for (size_t i = 0; i < target_list.size(); ++i)
748 result->Append(SerializeTarget(*target_list[i])); 744 result->Append(SerializeTarget(*target_list[i]));
749 STLDeleteContainerPointers(target_list.begin(), target_list.end()); 745 STLDeleteContainerPointers(target_list.begin(), target_list.end());
750 SetResult(result.release()); 746 SetResult(result.release());
751 SendResponse(true); 747 SendResponse(true);
752 } 748 }
753 749
754 } // namespace extensions 750 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698