using System.IO; using CefSharp; using TweetLib.Core.Browser; namespace TweetDuck.Browser.Adapters{ sealed class CefScriptExecutor : IScriptExecutor{ private readonly IWebBrowser browser; public CefScriptExecutor(IWebBrowser browser){ this.browser = browser; } public void RunFunction(string name, params object[] args){ browser.ExecuteScriptAsync(name, args); } public void RunScript(string identifier, string script){ using IFrame frame = browser.GetMainFrame(); RunScript(frame, script, identifier); } public bool RunFile(string file){ using IFrame frame = browser.GetMainFrame(); return RunFile(frame, file); } // Helpers public static void RunScript(IFrame frame, string script, string identifier){ if (script != null){ frame.ExecuteJavaScriptAsync(script, identifier, 1); } } public static bool RunFile(IFrame frame, string file){ string script = Program.Resources.Load(file); RunScript(frame, script, "root:" + Path.GetFileNameWithoutExtension(file)); return script != null; } } }