Index: chrome/renderer/chrome_content_renderer_client.cc |
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc |
index 776e35cc714f040e6edc398bd87b488c0d7bea37..692c89a69bd2f71c718d77dca2f65f60db6d7b17 100644 |
--- a/chrome/renderer/chrome_content_renderer_client.cc |
+++ b/chrome/renderer/chrome_content_renderer_client.cc |
@@ -10,6 +10,7 @@ |
#include "base/logging.h" |
#include "base/metrics/histogram.h" |
#include "base/path_service.h" |
+#include "base/string_tokenizer.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
#include "chrome/common/child_process_logging.h" |
@@ -103,6 +104,10 @@ using content::RenderThread; |
namespace { |
+const char* kPredefinedAllowedSocketOrigins[] = { |
+ "okddffdblfhhnmhodogpojmfkjmhinfp" // SSH Client |
+}; |
+ |
static void AppendParams(const std::vector<string16>& additional_names, |
const std::vector<string16>& additional_values, |
WebVector<WebString>* existing_names, |
@@ -136,6 +141,18 @@ namespace chrome { |
ChromeContentRendererClient::ChromeContentRendererClient() |
: spellcheck_provider_(NULL) { |
+ for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) |
+ allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); |
+ |
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
+ std::string allowed_list = |
+ command_line.GetSwitchValueASCII(switches::kAllowNaClSocketAPI); |
+ if (!allowed_list.empty()) { |
+ StringTokenizer t(allowed_list, ","); |
+ while (t.GetNext()) { |
+ allowed_socket_origins_.insert(t.token()); |
+ } |
+ } |
} |
ChromeContentRendererClient::~ChromeContentRendererClient() { |
@@ -795,4 +812,9 @@ void ChromeContentRendererClient::RegisterPPAPIInterfaceFactories( |
factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); |
} |
+bool ChromeContentRendererClient::AllowSocketAPI(const GURL& url) { |
+ return allowed_socket_origins_.find(url.host()) != |
+ allowed_socket_origins_.end(); |
+} |
+ |
} // namespace chrome |