Fix for crash when attaching a frame in WebUI renderer.

It crashes when trying to install property on "chrome" object in Javascript.
Before the patch, the code assumes the "chrome" either does not exist
or is an object. Apparently, it holds "undefined" value in WebUI pages.

BUG=

Review URL: https://codereview.chromium.org/611483002

Cr-Commit-Position: refs/heads/master@{#297621}
diff --git a/content/renderer/chrome_object_extensions_utils.cc b/content/renderer/chrome_object_extensions_utils.cc
new file mode 100644
index 0000000..b9c3cde
--- /dev/null
+++ b/content/renderer/chrome_object_extensions_utils.cc
@@ -0,0 +1,26 @@
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/renderer/chrome_object_extensions_utils.h"
+
+#include "gin/converter.h"
+#include "v8/include/v8.h"
+
+namespace content {
+
+v8::Handle<v8::Object> GetOrCreateChromeObject(
+    v8::Isolate* isolate, v8::Handle<v8::Object> global) {
+  v8::Handle<v8::Object> chrome;
+  v8::Handle<v8::Value> chrome_value =
+      global->Get(gin::StringToV8(isolate, "chrome"));
+  if (chrome_value.IsEmpty() || !chrome_value->IsObject()) {
+    chrome = v8::Object::New(isolate);
+    global->Set(gin::StringToSymbol(isolate, "chrome"), chrome);
+  } else {
+    chrome = chrome_value->ToObject();
+  }
+  return chrome;
+}
+
+} // namespace content