| OLD | NEW | 
|    1 // Copyright 2014 The Chromium Authors. All rights reserved. |    1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #ifndef EXTENSIONS_RENDERER_SCRIPT_CONTEXT_H_ |    5 #ifndef EXTENSIONS_RENDERER_SCRIPT_CONTEXT_H_ | 
|    6 #define EXTENSIONS_RENDERER_SCRIPT_CONTEXT_H_ |    6 #define EXTENSIONS_RENDERER_SCRIPT_CONTEXT_H_ | 
|    7  |    7  | 
|    8 #include <memory> |    8 #include <memory> | 
|    9 #include <string> |    9 #include <string> | 
|   10 #include <utility> |   10 #include <utility> | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|   26 namespace blink { |   26 namespace blink { | 
|   27 class WebFrame; |   27 class WebFrame; | 
|   28 class WebLocalFrame; |   28 class WebLocalFrame; | 
|   29 } |   29 } | 
|   30  |   30  | 
|   31 namespace content { |   31 namespace content { | 
|   32 class RenderFrame; |   32 class RenderFrame; | 
|   33 } |   33 } | 
|   34  |   34  | 
|   35 namespace extensions { |   35 namespace extensions { | 
 |   36 enum class CheckAliasStatus; | 
|   36 class Extension; |   37 class Extension; | 
|   37  |   38  | 
|   38 // Extensions wrapper for a v8::Context. |   39 // Extensions wrapper for a v8::Context. | 
|   39 // |   40 // | 
|   40 // v8::Contexts can be constructed on any thread, and must only be accessed or |   41 // v8::Contexts can be constructed on any thread, and must only be accessed or | 
|   41 // destroyed that thread. |   42 // destroyed that thread. | 
|   42 // |   43 // | 
|   43 // Note that ScriptContexts bound to worker threads will not have the full |   44 // Note that ScriptContexts bound to worker threads will not have the full | 
|   44 // functionality as those bound to the main RenderThread. |   45 // functionality as those bound to the main RenderThread. | 
|   45 class ScriptContext : public RequestSender::Source { |   46 class ScriptContext : public RequestSender::Source { | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  119   // USE THIS METHOD RATHER THAN v8::Function::Call WHEREVER POSSIBLE. |  120   // USE THIS METHOD RATHER THAN v8::Function::Call WHEREVER POSSIBLE. | 
|  120   // TODO(devlin): Remove the above variants in favor of this. |  121   // TODO(devlin): Remove the above variants in favor of this. | 
|  121   void SafeCallFunction(const v8::Local<v8::Function>& function, |  122   void SafeCallFunction(const v8::Local<v8::Function>& function, | 
|  122                         int argc, |  123                         int argc, | 
|  123                         v8::Local<v8::Value> argv[]); |  124                         v8::Local<v8::Value> argv[]); | 
|  124  |  125  | 
|  125   void DispatchEvent(const char* event_name, v8::Local<v8::Array> args) const; |  126   void DispatchEvent(const char* event_name, v8::Local<v8::Array> args) const; | 
|  126  |  127  | 
|  127   // Returns the availability of the API |api_name|. |  128   // Returns the availability of the API |api_name|. | 
|  128   Feature::Availability GetAvailability(const std::string& api_name); |  129   Feature::Availability GetAvailability(const std::string& api_name); | 
 |  130   // Returns the availability of the API |api_name|. | 
 |  131   // |check_alias| Whether API that has an alias that is available should be | 
 |  132   // considered available (even if the API itself is not available). | 
 |  133   Feature::Availability GetAvailability(const std::string& api_name, | 
 |  134                                         CheckAliasStatus check_alias); | 
|  129  |  135  | 
|  130   // Returns a string description of the type of context this is. |  136   // Returns a string description of the type of context this is. | 
|  131   std::string GetContextTypeDescription() const; |  137   std::string GetContextTypeDescription() const; | 
|  132  |  138  | 
|  133   // Returns a string description of the effective type of context this is. |  139   // Returns a string description of the effective type of context this is. | 
|  134   std::string GetEffectiveContextTypeDescription() const; |  140   std::string GetEffectiveContextTypeDescription() const; | 
|  135  |  141  | 
|  136   v8::Isolate* isolate() const { return isolate_; } |  142   v8::Isolate* isolate() const { return isolate_; } | 
|  137  |  143  | 
|  138   // Get the URL of this context's web frame. |  144   // Get the URL of this context's web frame. | 
|  139   // |  145   // | 
|  140   // TODO(kalman): Remove this and replace with a GetOrigin() call which reads |  146   // TODO(kalman): Remove this and replace with a GetOrigin() call which reads | 
|  141   // of WebDocument::getSecurityOrigin(): |  147   // of WebDocument::getSecurityOrigin(): | 
|  142   //  - The URL can change (e.g. pushState) but the origin cannot. Luckily it |  148   //  - The URL can change (e.g. pushState) but the origin cannot. Luckily it | 
|  143   //    appears as though callers don't make security decisions based on the |  149   //    appears as though callers don't make security decisions based on the | 
|  144   //    result of url() so it's not a problem... yet. |  150   //    result of url() so it's not a problem... yet. | 
|  145   //  - Origin is the correct check to be making. |  151   //  - Origin is the correct check to be making. | 
|  146   //  - It might let us remove the about:blank resolving? |  152   //  - It might let us remove the about:blank resolving? | 
|  147   const GURL& url() const { return url_; } |  153   const GURL& url() const { return url_; } | 
|  148  |  154  | 
|  149   // Sets the URL of this ScriptContext. Usually this will automatically be set |  155   // Sets the URL of this ScriptContext. Usually this will automatically be set | 
|  150   // on construction, unless this isn't constructed with enough information to |  156   // on construction, unless this isn't constructed with enough information to | 
|  151   // determine the URL (e.g. frame was null). |  157   // determine the URL (e.g. frame was null). | 
|  152   // TODO(kalman): Make this a constructor parameter (as an origin). |  158   // TODO(kalman): Make this a constructor parameter (as an origin). | 
|  153   void set_url(const GURL& url) { url_ = url; } |  159   void set_url(const GURL& url) { url_ = url; } | 
|  154  |  160  | 
|  155   // Returns whether the API |api| or any part of the API could be |  161   // Returns whether the API |api| or any part of the API could be available in | 
|  156   // available in this context without taking into account the context's |  162   // this context without taking into account the context's extension. | 
|  157   // extension. |  163   // |check_alias| Whether the API should be considered available if it has an | 
|  158   bool IsAnyFeatureAvailableToContext(const extensions::Feature& api); |  164   // alias that is available. | 
 |  165   bool IsAnyFeatureAvailableToContext(const extensions::Feature& api, | 
 |  166                                       CheckAliasStatus check_alias); | 
|  159  |  167  | 
|  160   // Utility to get the URL we will match against for a frame. If the frame has |  168   // Utility to get the URL we will match against for a frame. If the frame has | 
|  161   // committed, this is the commited URL. Otherwise it is the provisional URL. |  169   // committed, this is the commited URL. Otherwise it is the provisional URL. | 
|  162   // The returned URL may be invalid. |  170   // The returned URL may be invalid. | 
|  163   static GURL GetDataSourceURLForFrame(const blink::WebFrame* frame); |  171   static GURL GetDataSourceURLForFrame(const blink::WebFrame* frame); | 
|  164  |  172  | 
|  165   // Similar to GetDataSourceURLForFrame, but only returns the data source URL |  173   // Similar to GetDataSourceURLForFrame, but only returns the data source URL | 
|  166   // if the frame's document url is empty and the frame has a security origin |  174   // if the frame's document url is empty and the frame has a security origin | 
|  167   // that allows access to the data source url. |  175   // that allows access to the data source url. | 
|  168   // TODO(asargent/devlin) - there may be places that should switch to using |  176   // TODO(asargent/devlin) - there may be places that should switch to using | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  262   std::unique_ptr<Runner> runner_; |  270   std::unique_ptr<Runner> runner_; | 
|  263  |  271  | 
|  264   base::ThreadChecker thread_checker_; |  272   base::ThreadChecker thread_checker_; | 
|  265  |  273  | 
|  266   DISALLOW_COPY_AND_ASSIGN(ScriptContext); |  274   DISALLOW_COPY_AND_ASSIGN(ScriptContext); | 
|  267 }; |  275 }; | 
|  268  |  276  | 
|  269 }  // namespace extensions |  277 }  // namespace extensions | 
|  270  |  278  | 
|  271 #endif  // EXTENSIONS_RENDERER_SCRIPT_CONTEXT_H_ |  279 #endif  // EXTENSIONS_RENDERER_SCRIPT_CONTEXT_H_ | 
| OLD | NEW |