| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-2016 Eyeo GmbH |    3  * Copyright (C) 2006-2016 Eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   67     ScopedV8Isolate& operator=(const ScopedV8Isolate&); |   67     ScopedV8Isolate& operator=(const ScopedV8Isolate&); | 
|   68  |   68  | 
|   69     v8::Isolate* isolate; |   69     v8::Isolate* isolate; | 
|   70   }; |   70   }; | 
|   71  |   71  | 
|   72   /** |   72   /** | 
|   73    * Shared smart pointer to ScopedV8Isolate instance; |   73    * Shared smart pointer to ScopedV8Isolate instance; | 
|   74    */ |   74    */ | 
|   75   typedef std::shared_ptr<ScopedV8Isolate> ScopedV8IsolatePtr; |   75   typedef std::shared_ptr<ScopedV8Isolate> ScopedV8IsolatePtr; | 
|   76  |   76  | 
|   77   struct ImmediateSingleUseThreadType {}; ///< Marker class for scheduling polic
     y |  | 
|   78   extern const ImmediateSingleUseThreadType ImmediateSingleUseThread; ///< Dummy
      constant for scheduling policy |  | 
|   79  |  | 
|   80   /** |   77   /** | 
|   81    * JavaScript engine used by `FilterEngine`, wraps v8. |   78    * JavaScript engine used by `FilterEngine`, wraps v8. | 
|   82    */ |   79    */ | 
|   83   class JsEngine : public std::enable_shared_from_this<JsEngine> |   80   class JsEngine : public std::enable_shared_from_this<JsEngine> | 
|   84   { |   81   { | 
|   85   public: |   82   public: | 
|   86     /** |   83     /** | 
|   87      * Event callback function. |   84      * Event callback function. | 
|   88      */ |   85      */ | 
|   89     typedef std::function<void(JsValueList& params)> EventCallback; |   86     typedef std::function<void(JsValueList& params)> EventCallback; | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  127      * Evaluates a JavaScript expression. |  124      * Evaluates a JavaScript expression. | 
|  128      * @param source JavaScript expression to evaluate. |  125      * @param source JavaScript expression to evaluate. | 
|  129      * @param filename Optional file name for the expression, used in error |  126      * @param filename Optional file name for the expression, used in error | 
|  130      *        messages. |  127      *        messages. | 
|  131      * @return Result of the evaluated expression. |  128      * @return Result of the evaluated expression. | 
|  132      */ |  129      */ | 
|  133     JsValuePtr Evaluate(const std::string& source, |  130     JsValuePtr Evaluate(const std::string& source, | 
|  134         const std::string& filename = ""); |  131         const std::string& filename = ""); | 
|  135  |  132  | 
|  136     /** |  133     /** | 
|  137      * Schedule a task with these policies: |  | 
|  138      * - timing policy: start execution immediately. |  | 
|  139      * - threading policy: run the task in a single-use thread. |  | 
|  140      * |  | 
|  141      * @param task |  | 
|  142      *   Task to execute. All v8 handles should refer to the present engine. |  | 
|  143      * @param ImmediateSingleUseThreadType |  | 
|  144      *   The schedule policy--create a new thread and discard it afterwards. |  | 
|  145      */ |  | 
|  146     void Schedule(std::function<void()> task, ImmediateSingleUseThreadType); |  | 
|  147  |  | 
|  148     /** |  | 
|  149      * Block until there are no more tasks running in the scheduler. |  | 
|  150      * |  | 
|  151      * Note: this function does not prevent new tasks from being scheduled. |  | 
|  152      */ |  | 
|  153     void WaitForQuietScheduler(); |  | 
|  154  |  | 
|  155     /** |  | 
|  156      * Initiates a garbage collection. |  134      * Initiates a garbage collection. | 
|  157      */ |  135      */ | 
|  158     void Gc(); |  136     void Gc(); | 
|  159  |  137  | 
|  160     //@{ |  138     //@{ | 
|  161     /** |  139     /** | 
|  162      * Creates a new JavaScript value. |  140      * Creates a new JavaScript value. | 
|  163      * @param val Value to convert. |  141      * @param val Value to convert. | 
|  164      * @return New `JsValue` instance. |  142      * @return New `JsValue` instance. | 
|  165      */ |  143      */ | 
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  282     JsValuePtr GetGlobalObject(); |  260     JsValuePtr GetGlobalObject(); | 
|  283  |  261  | 
|  284     /// Isolate must be disposed only after disposing of all objects which are |  262     /// Isolate must be disposed only after disposing of all objects which are | 
|  285     /// using it. |  263     /// using it. | 
|  286     ScopedV8IsolatePtr isolate; |  264     ScopedV8IsolatePtr isolate; | 
|  287  |  265  | 
|  288     FileSystemPtr fileSystem; |  266     FileSystemPtr fileSystem; | 
|  289     WebRequestPtr webRequest; |  267     WebRequestPtr webRequest; | 
|  290     LogSystemPtr logSystem; |  268     LogSystemPtr logSystem; | 
|  291     EventMap eventCallbacks; |  269     EventMap eventCallbacks; | 
|  292  |  | 
|  293     // Forward declaration for PImpl idiom |  | 
|  294     class SchedulerImpl; |  | 
|  295     /** |  | 
|  296      * Scheduler for tasks executed under the current engine. |  | 
|  297      * |  | 
|  298      * \par Invariant |  | 
|  299      *   `bool(scheduler)` is always true |  | 
|  300      */ |  | 
|  301     std::unique_ptr<SchedulerImpl> scheduler; |  | 
|  302   }; |  270   }; | 
|  303 } |  271 } | 
|  304  |  272  | 
|  305 #endif |  273 #endif | 
| OLD | NEW |