| // Copyright 2017 The Cobalt Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #include <memory> |
| |
| #include "base/logging.h" |
| #include "cobalt/script/global_environment.h" |
| #include "cobalt/script/script_debugger.h" |
| #include "cobalt/script/source_code.h" |
| |
| namespace cobalt { |
| namespace script { |
| |
| class StubScriptDebugger : public ScriptDebugger { |
| public: |
| StubScriptDebugger(GlobalEnvironment* global_environment, Delegate* delegate) |
| : global_environment_(global_environment), delegate_(delegate) {} |
| ~StubScriptDebugger() override {} |
| |
| void Attach(const std::string& state) override {} |
| std::string Detach() override { return std::string(); } |
| |
| bool EvaluateDebuggerScript(const std::string& js_code, |
| std::string* out_result_utf8) override { |
| // The stub just evaluates debugger scripts as if they are part of the page. |
| scoped_refptr<script::SourceCode> source_code = |
| script::SourceCode::CreateSourceCode( |
| js_code, base::SourceLocation("[object StubScriptDebugger]", 1, 1)); |
| return global_environment_->EvaluateScript(source_code, out_result_utf8); |
| } |
| |
| std::set<std::string> SupportedProtocolDomains() override { |
| return std::set<std::string>(); |
| } |
| |
| bool DispatchProtocolMessage(const std::string& method, |
| const std::string& message) override { |
| NOTIMPLEMENTED(); |
| return false; |
| } |
| |
| std::string CreateRemoteObject(const ValueHandleHolder& object, |
| const std::string& group) override { |
| NOTIMPLEMENTED(); |
| return "{}"; |
| } |
| |
| const script::ValueHandleHolder* LookupRemoteObjectId( |
| const std::string& object_id) override { |
| NOTIMPLEMENTED(); |
| return nullptr; |
| } |
| |
| void StartTracing(const std::vector<std::string>& categories, |
| TraceDelegate* trace_delegate) { |
| NOTIMPLEMENTED(); |
| } |
| void StopTracing() override { NOTIMPLEMENTED(); } |
| |
| PauseOnExceptionsState SetPauseOnExceptions( |
| PauseOnExceptionsState state) override { |
| return kNone; |
| } |
| |
| // The AsyncTask functions will be called regardless whether there's a |
| // functioning debugger, so don't call NOTIMPLEMENTED() to avoid log spam. |
| void AsyncTaskScheduled(const void* task, const std::string& name, |
| bool recurring) override {} |
| void AsyncTaskStarted(const void* task) override {} |
| void AsyncTaskFinished(const void* task) override {} |
| void AsyncTaskCanceled(const void* task) override {} |
| void AllAsyncTasksCanceled() override {} |
| |
| private: |
| GlobalEnvironment* global_environment_; |
| Delegate* delegate_; |
| }; |
| |
| // Static factory method declared in public interface. |
| std::unique_ptr<ScriptDebugger> ScriptDebugger::CreateDebugger( |
| GlobalEnvironment* global_environment, Delegate* delegate) { |
| return std::unique_ptr<ScriptDebugger>( |
| new StubScriptDebugger(global_environment, delegate)); |
| } |
| |
| } // namespace script |
| } // namespace cobalt |