 +  // True if this is a secure page which displayed insecure content.
 +  virtual int IronframeStatus() const = 0;
 +
++  // True if this is a secure page which displayed insecure content.
++  virtual std::string IronframeOrigin() const = 0;
++
    // True if this is a secure page which displayed insecure content.
    virtual bool DisplayedInsecureContent() const = 0;
  
 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
-index 1386b37..66381dd 100644
+index 1386b37..1e11bb9 100644
 --- a/content/renderer/render_frame_impl.cc
 +++ b/content/renderer/render_frame_impl.cc
-@@ -4199,6 +4199,13 @@ void RenderFrameImpl::didLoadResourceFromMemoryCache(
+@@ -4199,6 +4199,17 @@ void RenderFrameImpl::didLoadResourceFromMemoryCache(
        response.mimeType().utf8(), WebURLRequestToResourceType(request)));
  }
  
++void RenderFrameImpl::ironframeOrigin(const blink::WebCString& origin) {
++    Send(new FrameHostMsg_IronframeOrigin(routing_id_, origin));
++}
++
 +void RenderFrameImpl::validIronframe() {
 +  Send(new FrameHostMsg_ValidIronframe(routing_id_));
 +}

   RecordAction(base::UserMetricsAction("SSL.DisplayedInsecureContent"));
   displayed_insecure_content_ = true;
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 91226f8..be8b9ef 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -291,6 +291,7 @@ class CONTENT_EXPORT WebContentsImpl
   uint64_t GetUploadSize() const override;
   uint64_t GetUploadPosition() const override;
   const std::string& GetEncoding() const override;
+  int IronframeStatus() const override;
   bool DisplayedInsecureContent() const override;
   void IncrementCapturerCount(const gfx::Size& capture_size) override;
   void DecrementCapturerCount() override;
@@ -909,6 +910,8 @@ class CONTENT_EXPORT WebContentsImpl
                                         const std::string& http_request,
                                         const std::string& mime_type,
                                         ResourceType resource_type);
+  void OnValidIronframe();
+  void OnInvalidIronframe();
   void OnDidDisplayInsecureContent();
   void OnDidRunInsecureContent(const GURL& security_origin,
                                const GURL& target_url);
@@ -1199,6 +1202,9 @@ class CONTENT_EXPORT WebContentsImpl
   // The canonicalized character encoding.
   std::string canonical_encoding_;
 
+  //   0 - no ironframe, 1 - valid ironframe, 2 - invalid ironframe
+  int  ironframe_status_;
+  
   // True if this is a secure page which displayed insecure content.
   bool displayed_insecure_content_;
 
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
index 27f9af7..2d9308b 100644
--- a/content/common/frame_messages.h
+++ b/content/common/frame_messages.h
@@ -1464,6 +1464,10 @@ IPC_MESSAGE_ROUTED0(FrameHostMsg_DispatchLoad)
 IPC_MESSAGE_ROUTED1(FrameHostMsg_RouteMessageEvent,
                     FrameMsg_PostMessage_Params)
 
+
+IPC_MESSAGE_ROUTED0(FrameHostMsg_ValidIronframe)
+IPC_MESSAGE_ROUTED0(FrameHostMsg_InvalidIronframe)
+

+          //security_level = security_state::SecurityStateModel::SECURE;
+          if (ironframe_status == 1) {
+              security_level = security_state::SecurityStateModel::SECURE;
+              location_icon_view_->SetLabel(base::ASCIIToUTF16(GetToolbarModel()->GetIronframeOrigin()));
+          } else if (ironframe_status == 2) {
+              security_level = security_state::SecurityStateModel::SECURITY_ERROR;
+          }
