diff --git a/chromeos-dbus-bindings/proxy_generator.cc b/chromeos-dbus-bindings/proxy_generator.cc
index 7f41eee..1ac7139 100644
--- a/chromeos-dbus-bindings/proxy_generator.cc
+++ b/chromeos-dbus-bindings/proxy_generator.cc
@@ -214,6 +214,7 @@
   AddProperties(interface, true, text);
   text->AddBlankLine();
   text->AddLine("virtual const dbus::ObjectPath& GetObjectPath() const = 0;");
+  text->AddLine("virtual dbus::ObjectProxy* GetObjectProxy() const = 0;");
   if (!interface.properties.empty()) {
     if (config.object_manager.name.empty())
       AddInitializeProperties(proxy_name, true, text);
@@ -363,13 +364,24 @@
   }
   text->AddLine(
       "MOCK_CONST_METHOD0(GetObjectPath, const dbus::ObjectPath&());");
-  if (!config.object_manager.name.empty() && !interface.properties.empty()) {
-    text->AddLineAndPushOffsetTo(
-        "MOCK_METHOD1(SetPropertyChangedCallback,", 1, '(');
-    text->AddLine(StringPrintf(
-        "void(const base::Callback<void(%sInterface*, const std::string&)>&));",
-        proxy_name.c_str()));
-    text->PopOffset();
+  text->AddLine(
+      "MOCK_CONST_METHOD0(GetObjectProxy, dbus::ObjectProxy*());");
+  if (!interface.properties.empty()) {
+    if (config.object_manager.name.empty()) {
+      text->AddLineAndPushOffsetTo(
+          "MOCK_METHOD1(InitializeProperties,", 1, '(');
+      text->AddLine(StringPrintf(
+          "void(const base::Callback<void(%sInterface*, "
+          "const std::string&)>&));", proxy_name.c_str()));
+      text->PopOffset();
+    } else {
+      text->AddLineAndPushOffsetTo(
+          "MOCK_METHOD1(SetPropertyChangedCallback,", 1, '(');
+      text->AddLine(StringPrintf("void(const base::Callback<void(%sInterface*, "
+                                 "const std::string&)>&));",
+                                 proxy_name.c_str()));
+      text->PopOffset();
+    }
   }
 
   text->PopOffset();
@@ -456,8 +468,9 @@
 // static
 void ProxyGenerator::AddGetObjectProxy(IndentedText* text) {
   text->AddBlankLine();
-  text->AddLine("dbus::ObjectProxy* GetObjectProxy() const { "
-                "return dbus_object_proxy_; }");
+  text->AddLine("dbus::ObjectProxy* GetObjectProxy() const override {");
+  text->AddLineWithOffset("return dbus_object_proxy_;", kBlockOffset);
+  text->AddLine("}");
 }
 
 // static
diff --git a/chromeos-dbus-bindings/proxy_generator_mock_unittest.cc b/chromeos-dbus-bindings/proxy_generator_mock_unittest.cc
index c71d1b0..d23710b 100644
--- a/chromeos-dbus-bindings/proxy_generator_mock_unittest.cc
+++ b/chromeos-dbus-bindings/proxy_generator_mock_unittest.cc
@@ -124,6 +124,7 @@
                                               uint8_t)>& /*signal_callback*/,
                     dbus::ObjectProxy::OnConnectedCallback /*on_connected_callback*/));
   MOCK_CONST_METHOD0(GetObjectPath, const dbus::ObjectPath&());
+  MOCK_CONST_METHOD0(GetObjectProxy, dbus::ObjectProxy*());
 
  private:
   DISALLOW_COPY_AND_ASSIGN(TestInterfaceProxyMock);
@@ -152,6 +153,7 @@
   MOCK_CONST_METHOD0(name, const std::string&());
   MOCK_METHOD2(set_name, void(const std::string&, const base::Callback<bool>&));
   MOCK_CONST_METHOD0(GetObjectPath, const dbus::ObjectPath&());
+  MOCK_CONST_METHOD0(GetObjectProxy, dbus::ObjectProxy*());
   MOCK_METHOD1(SetPropertyChangedCallback,
                void(const base::Callback<void(TestInterface2ProxyInterface*, const std::string&)>&));
 
diff --git a/chromeos-dbus-bindings/proxy_generator_unittest.cc b/chromeos-dbus-bindings/proxy_generator_unittest.cc
index 8e3c0f0..1b60ba4 100644
--- a/chromeos-dbus-bindings/proxy_generator_unittest.cc
+++ b/chromeos-dbus-bindings/proxy_generator_unittest.cc
@@ -119,6 +119,7 @@
       dbus::ObjectProxy::OnConnectedCallback on_connected_callback) = 0;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 };
 
 }  // namespace chromium
@@ -173,7 +174,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
   bool Elements(
       const std::string& in_space_walk,
@@ -329,6 +332,7 @@
       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 };
 
 }  // namespace chromium
@@ -362,7 +366,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
   bool GetPersonInfo(
       std::string* out_name,
@@ -440,6 +446,7 @@
       dbus::ObjectProxy::OnConnectedCallback on_connected_callback) = 0;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 };
 
 }  // namespace chromium
@@ -479,7 +486,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
  private:
   scoped_refptr<dbus::Bus> bus_;
@@ -502,6 +511,7 @@
   virtual ~TestInterface2ProxyInterface() = default;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 };
 
 }  // namespace chromium
@@ -533,7 +543,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
  private:
   scoped_refptr<dbus::Bus> bus_;
@@ -596,6 +608,7 @@
                         const base::Callback<void(bool)>& callback) = 0;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 
   virtual void SetPropertyChangedCallback(
       const base::Callback<void(Itf1ProxyInterface*, const std::string&)>& callback) = 0;
@@ -661,7 +674,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
   void SetPropertyChangedCallback(
       const base::Callback<void(Itf1ProxyInterface*, const std::string&)>& callback) override {
@@ -713,6 +728,7 @@
   virtual ~Itf2ProxyInterface() = default;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 };
 
 }  // namespace chromium
@@ -760,7 +776,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
  private:
   scoped_refptr<dbus::Bus> bus_;
@@ -990,6 +1008,7 @@
                         const base::Callback<void(bool)>& callback) = 0;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 
   virtual void InitializeProperties(
       const base::Callback<void(TestProxyInterface*, const std::string&)>& callback) = 0;
@@ -1039,7 +1058,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
   void InitializeProperties(
       const base::Callback<void(TestProxyInterface*, const std::string&)>& callback) override {
@@ -1120,6 +1141,7 @@
       dbus::ObjectProxy::OnConnectedCallback on_connected_callback) = 0;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 };
 
 }  // namespace chromium
@@ -1173,7 +1195,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
  private:
   scoped_refptr<dbus::Bus> bus_;
@@ -1196,6 +1220,7 @@
   virtual ~Itf2ProxyInterface() = default;
 
   virtual const dbus::ObjectPath& GetObjectPath() const = 0;
+  virtual dbus::ObjectProxy* GetObjectProxy() const = 0;
 };
 
 }  // namespace chromium
@@ -1241,7 +1266,9 @@
     return object_path_;
   }
 
-  dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
+  dbus::ObjectProxy* GetObjectProxy() const override {
+    return dbus_object_proxy_;
+  }
 
  private:
   scoped_refptr<dbus::Bus> bus_;
