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

Side by Side Diff: third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp

Issue 2080623002: Revert "Remove OwnPtr from Blink." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010-2011 Google Inc. All rights reserved. 2 * Copyright (C) 2010-2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 #include "web/InspectorEmulationAgent.h" 83 #include "web/InspectorEmulationAgent.h"
84 #include "web/InspectorOverlay.h" 84 #include "web/InspectorOverlay.h"
85 #include "web/InspectorRenderingAgent.h" 85 #include "web/InspectorRenderingAgent.h"
86 #include "web/WebFrameWidgetImpl.h" 86 #include "web/WebFrameWidgetImpl.h"
87 #include "web/WebInputEventConversion.h" 87 #include "web/WebInputEventConversion.h"
88 #include "web/WebLocalFrameImpl.h" 88 #include "web/WebLocalFrameImpl.h"
89 #include "web/WebSettingsImpl.h" 89 #include "web/WebSettingsImpl.h"
90 #include "web/WebViewImpl.h" 90 #include "web/WebViewImpl.h"
91 #include "wtf/MathExtras.h" 91 #include "wtf/MathExtras.h"
92 #include "wtf/Noncopyable.h" 92 #include "wtf/Noncopyable.h"
93 #include "wtf/PtrUtil.h"
94 #include "wtf/text/WTFString.h" 93 #include "wtf/text/WTFString.h"
95 #include <memory>
96 94
97 namespace blink { 95 namespace blink {
98 96
99 namespace { 97 namespace {
100 98
101 bool isMainFrame(WebLocalFrameImpl* frame) 99 bool isMainFrame(WebLocalFrameImpl* frame)
102 { 100 {
103 // TODO(dgozman): sometimes view->mainFrameImpl() does return null, even tho ugh |frame| is meant to be main frame. 101 // TODO(dgozman): sometimes view->mainFrameImpl() does return null, even tho ugh |frame| is meant to be main frame.
104 // See http://crbug.com/526162. 102 // See http://crbug.com/526162.
105 return frame->viewImpl() && !frame->parent(); 103 return frame->viewImpl() && !frame->parent();
106 } 104 }
107 105
108 } 106 }
109 107
110 class ClientMessageLoopAdapter : public MainThreadDebugger::ClientMessageLoop { 108 class ClientMessageLoopAdapter : public MainThreadDebugger::ClientMessageLoop {
111 public: 109 public:
112 ~ClientMessageLoopAdapter() override 110 ~ClientMessageLoopAdapter() override
113 { 111 {
114 s_instance = nullptr; 112 s_instance = nullptr;
115 } 113 }
116 114
117 static void ensureMainThreadDebuggerCreated(WebDevToolsAgentClient* client) 115 static void ensureMainThreadDebuggerCreated(WebDevToolsAgentClient* client)
118 { 116 {
119 if (s_instance) 117 if (s_instance)
120 return; 118 return;
121 std::unique_ptr<ClientMessageLoopAdapter> instance = wrapUnique(new Clie ntMessageLoopAdapter(wrapUnique(client->createClientMessageLoop()))); 119 OwnPtr<ClientMessageLoopAdapter> instance = adoptPtr(new ClientMessageLo opAdapter(adoptPtr(client->createClientMessageLoop())));
122 s_instance = instance.get(); 120 s_instance = instance.get();
123 MainThreadDebugger::instance()->setClientMessageLoop(std::move(instance) ); 121 MainThreadDebugger::instance()->setClientMessageLoop(std::move(instance) );
124 } 122 }
125 123
126 static void webViewImplClosed(WebViewImpl* view) 124 static void webViewImplClosed(WebViewImpl* view)
127 { 125 {
128 if (s_instance) 126 if (s_instance)
129 s_instance->m_frozenViews.remove(view); 127 s_instance->m_frozenViews.remove(view);
130 } 128 }
131 129
(...skipping 15 matching lines...) Expand all
147 if (s_instance) 145 if (s_instance)
148 s_instance->runForCreateWindow(frame); 146 s_instance->runForCreateWindow(frame);
149 } 147 }
150 148
151 static bool resumeForCreateWindow() 149 static bool resumeForCreateWindow()
152 { 150 {
153 return s_instance ? s_instance->quitForCreateWindow() : false; 151 return s_instance ? s_instance->quitForCreateWindow() : false;
154 } 152 }
155 153
156 private: 154 private:
157 ClientMessageLoopAdapter(std::unique_ptr<WebDevToolsAgentClient::WebKitClien tMessageLoop> messageLoop) 155 ClientMessageLoopAdapter(PassOwnPtr<WebDevToolsAgentClient::WebKitClientMess ageLoop> messageLoop)
158 : m_runningForDebugBreak(false) 156 : m_runningForDebugBreak(false)
159 , m_runningForCreateWindow(false) 157 , m_runningForCreateWindow(false)
160 , m_messageLoop(std::move(messageLoop)) 158 , m_messageLoop(std::move(messageLoop))
161 { 159 {
162 DCHECK(m_messageLoop.get()); 160 DCHECK(m_messageLoop.get());
163 } 161 }
164 162
165 void run(LocalFrame* frame) override 163 void run(LocalFrame* frame) override
166 { 164 {
167 if (m_runningForDebugBreak) 165 if (m_runningForDebugBreak)
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 m_runningForCreateWindow = false; 260 m_runningForCreateWindow = false;
263 if (!m_runningForDebugBreak) 261 if (!m_runningForDebugBreak)
264 m_messageLoop->quitNow(); 262 m_messageLoop->quitNow();
265 return true; 263 return true;
266 } 264 }
267 return false; 265 return false;
268 } 266 }
269 267
270 bool m_runningForDebugBreak; 268 bool m_runningForDebugBreak;
271 bool m_runningForCreateWindow; 269 bool m_runningForCreateWindow;
272 std::unique_ptr<WebDevToolsAgentClient::WebKitClientMessageLoop> m_messageLo op; 270 OwnPtr<WebDevToolsAgentClient::WebKitClientMessageLoop> m_messageLoop;
273 typedef HashSet<WebViewImpl*> FrozenViewsSet; 271 typedef HashSet<WebViewImpl*> FrozenViewsSet;
274 FrozenViewsSet m_frozenViews; 272 FrozenViewsSet m_frozenViews;
275 WebFrameWidgetsSet m_frozenWidgets; 273 WebFrameWidgetsSet m_frozenWidgets;
276 static ClientMessageLoopAdapter* s_instance; 274 static ClientMessageLoopAdapter* s_instance;
277 }; 275 };
278 276
279 ClientMessageLoopAdapter* ClientMessageLoopAdapter::s_instance = nullptr; 277 ClientMessageLoopAdapter* ClientMessageLoopAdapter::s_instance = nullptr;
280 278
281 // static 279 // static
282 WebDevToolsAgentImpl* WebDevToolsAgentImpl::create(WebLocalFrameImpl* frame, Web DevToolsAgentClient* client) 280 WebDevToolsAgentImpl* WebDevToolsAgentImpl::create(WebLocalFrameImpl* frame, Web DevToolsAgentClient* client)
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 } 639 }
642 640
643 void WebDevToolsAgentImpl::didProcessTask() 641 void WebDevToolsAgentImpl::didProcessTask()
644 { 642 {
645 if (!attached()) 643 if (!attached())
646 return; 644 return;
647 ThreadDebugger::idleStarted(V8PerIsolateData::mainThreadIsolate()); 645 ThreadDebugger::idleStarted(V8PerIsolateData::mainThreadIsolate());
648 flushProtocolNotifications(); 646 flushProtocolNotifications();
649 } 647 }
650 648
651 void WebDevToolsAgentImpl::runDebuggerTask(int sessionId, std::unique_ptr<WebDev ToolsAgent::MessageDescriptor> descriptor) 649 void WebDevToolsAgentImpl::runDebuggerTask(int sessionId, PassOwnPtr<WebDevTools Agent::MessageDescriptor> descriptor)
652 { 650 {
653 WebDevToolsAgent* webagent = descriptor->agent(); 651 WebDevToolsAgent* webagent = descriptor->agent();
654 if (!webagent) 652 if (!webagent)
655 return; 653 return;
656 654
657 WebDevToolsAgentImpl* agentImpl = static_cast<WebDevToolsAgentImpl*>(webagen t); 655 WebDevToolsAgentImpl* agentImpl = static_cast<WebDevToolsAgentImpl*>(webagen t);
658 if (agentImpl->attached()) 656 if (agentImpl->attached())
659 agentImpl->dispatchMessageFromFrontend(sessionId, descriptor->method(), descriptor->message()); 657 agentImpl->dispatchMessageFromFrontend(sessionId, descriptor->method(), descriptor->message());
660 } 658 }
661 659
662 void WebDevToolsAgent::interruptAndDispatch(int sessionId, MessageDescriptor* ra wDescriptor) 660 void WebDevToolsAgent::interruptAndDispatch(int sessionId, MessageDescriptor* ra wDescriptor)
663 { 661 {
664 // rawDescriptor can't be a std::unique_ptr because interruptAndDispatch is a WebKit API function. 662 // rawDescriptor can't be a PassOwnPtr because interruptAndDispatch is a Web Kit API function.
665 MainThreadDebugger::interruptMainThreadAndRun(threadSafeBind(WebDevToolsAgen tImpl::runDebuggerTask, sessionId, passed(wrapUnique(rawDescriptor)))); 663 MainThreadDebugger::interruptMainThreadAndRun(threadSafeBind(WebDevToolsAgen tImpl::runDebuggerTask, sessionId, passed(adoptPtr(rawDescriptor))));
666 } 664 }
667 665
668 bool WebDevToolsAgent::shouldInterruptForMethod(const WebString& method) 666 bool WebDevToolsAgent::shouldInterruptForMethod(const WebString& method)
669 { 667 {
670 return method == "Debugger.pause" 668 return method == "Debugger.pause"
671 || method == "Debugger.setBreakpoint" 669 || method == "Debugger.setBreakpoint"
672 || method == "Debugger.setBreakpointByUrl" 670 || method == "Debugger.setBreakpointByUrl"
673 || method == "Debugger.removeBreakpoint" 671 || method == "Debugger.removeBreakpoint"
674 || method == "Debugger.setBreakpointsActive"; 672 || method == "Debugger.setBreakpointsActive";
675 } 673 }
676 674
677 } // namespace blink 675 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebDevToolsAgentImpl.h ('k') | third_party/WebKit/Source/web/WebElementTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698