| 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 | 
|   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|   12  * GNU General Public License for more details. |   12  * GNU General Public License for more details. | 
|   13  * |   13  * | 
|   14  * You should have received a copy of the GNU General Public License |   14  * You should have received a copy of the GNU General Public License | 
|   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. |   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
|   16  */ |   16  */ | 
|   17  |   17  | 
|   18 #ifndef ADBLOCK_PLUS_JS_VALUE_H |   18 #ifndef ADBLOCK_PLUS_JS_VALUE_H | 
|   19 #define ADBLOCK_PLUS_JS_VALUE_H |   19 #define ADBLOCK_PLUS_JS_VALUE_H | 
|   20  |   20  | 
|   21 #include <stdint.h> |   21 #include <stdint.h> | 
|   22 #include <string> |   22 #include <string> | 
|   23 #include <vector> |   23 #include <vector> | 
|   24 #include <memory> |   24 #include <memory> | 
|   25 #include "V8ValueHolder.h" |  | 
|   26  |   25  | 
|   27 namespace v8 |   26 namespace v8 | 
|   28 { |   27 { | 
|   29   class Value; |   28   class Value; | 
|   30   template<class T> class Handle; |   29   template<class T> class Handle; | 
|   31   template<class T> class Local; |   30   template<class T> class Local; | 
 |   31   template<class T> class Persistent; | 
|   32 } |   32 } | 
|   33  |   33  | 
|   34 namespace AdblockPlus |   34 namespace AdblockPlus | 
|   35 { |   35 { | 
|   36   class JsValue; |   36   class JsValue; | 
|   37   class JsEngine; |   37   class JsEngine; | 
|   38  |   38  | 
|   39   typedef std::shared_ptr<JsEngine> JsEnginePtr; |   39   typedef std::shared_ptr<JsEngine> JsEnginePtr; | 
|   40  |   40  | 
|   41   /** |   41   /** | 
|   42    * Shared smart pointer to a `JsValue` instance. |   42    * Shared smart pointer to a `JsValue` instance. | 
|   43    */ |   43    */ | 
|   44   typedef std::shared_ptr<JsValue> JsValuePtr; |   44   typedef std::shared_ptr<JsValue> JsValuePtr; | 
|   45  |   45  | 
|   46   /** |   46   /** | 
|   47    * List of JavaScript values. |   47    * List of JavaScript values. | 
|   48    */ |   48    */ | 
|   49   typedef std::vector<AdblockPlus::JsValuePtr> JsValueList; |   49   typedef std::vector<AdblockPlus::JsValuePtr> JsValueList; | 
|   50  |   50  | 
|   51   /** |   51   /** | 
|   52    * Wrapper for JavaScript values. |   52    * Wrapper for JavaScript values. | 
|   53    * See `JsEngine` for creating `JsValue` objects. |   53    * See `JsEngine` for creating `JsValue` objects. | 
|   54    */ |   54    */ | 
|   55   class JsValue |   55   class JsValue | 
|   56   { |   56   { | 
|   57     friend class JsEngine; |   57     friend class JsEngine; | 
|   58   public: |   58   public: | 
 |   59     JsValue(JsValue&& src); | 
|   59     virtual ~JsValue(); |   60     virtual ~JsValue(); | 
|   60  |   61  | 
|   61     bool IsUndefined() const; |   62     bool IsUndefined() const; | 
|   62     bool IsNull() const; |   63     bool IsNull() const; | 
|   63     bool IsString() const; |   64     bool IsString() const; | 
|   64     bool IsNumber() const; |   65     bool IsNumber() const; | 
|   65     bool IsBool() const; |   66     bool IsBool() const; | 
|   66     bool IsObject() const; |   67     bool IsObject() const; | 
|   67     bool IsArray() const; |   68     bool IsArray() const; | 
|   68     bool IsFunction() const; |   69     bool IsFunction() const; | 
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  118      * Invokes the value as a function (see `IsFunction()`). |  119      * Invokes the value as a function (see `IsFunction()`). | 
|  119      * @param params Optional list of parameters. |  120      * @param params Optional list of parameters. | 
|  120      * @param thisPtr Optional `this` value. |  121      * @param thisPtr Optional `this` value. | 
|  121      * @return Value returned by the function. |  122      * @return Value returned by the function. | 
|  122      */ |  123      */ | 
|  123     JsValuePtr Call(const JsValueList& params = JsValueList(), |  124     JsValuePtr Call(const JsValueList& params = JsValueList(), | 
|  124         AdblockPlus::JsValuePtr thisPtr = AdblockPlus::JsValuePtr()) const; |  125         AdblockPlus::JsValuePtr thisPtr = AdblockPlus::JsValuePtr()) const; | 
|  125  |  126  | 
|  126     v8::Local<v8::Value> UnwrapValue() const; |  127     v8::Local<v8::Value> UnwrapValue() const; | 
|  127   protected: |  128   protected: | 
|  128     JsValue(JsValuePtr value); |  | 
|  129     JsEnginePtr jsEngine; |  129     JsEnginePtr jsEngine; | 
|  130   private: |  130   private: | 
|  131     JsValue(JsEnginePtr jsEngine, v8::Handle<v8::Value> value); |  131     JsValue(JsEnginePtr jsEngine, v8::Handle<v8::Value> value); | 
|  132     void SetProperty(const std::string& name, v8::Handle<v8::Value> val); |  132     void SetProperty(const std::string& name, v8::Handle<v8::Value> val); | 
|  133     V8ValueHolder<v8::Value> value; |  133     std::unique_ptr<v8::Persistent<v8::Value>> value; | 
|  134   }; |  134   }; | 
|  135 } |  135 } | 
|  136  |  136  | 
|  137 #endif |  137 #endif | 
| OLD | NEW |