| Index: third_party/WebKit/Source/core/page/Page.cpp | 
| diff --git a/third_party/WebKit/Source/core/page/Page.cpp b/third_party/WebKit/Source/core/page/Page.cpp | 
| index 6dc4b2180bc29db3eaaf4c604531a8cad016befb..f4992eac2723f8a0a80d53b6961334b7729972a4 100644 | 
| --- a/third_party/WebKit/Source/core/page/Page.cpp | 
| +++ b/third_party/WebKit/Source/core/page/Page.cpp | 
| @@ -116,6 +116,7 @@ Page::Page(PageClients& page_clients) | 
| overscroll_controller_( | 
| OverscrollController::Create(GetVisualViewport(), GetChromeClient())), | 
| main_frame_(nullptr), | 
| +      plugin_data_(nullptr), | 
| editor_client_(page_clients.editor_client), | 
| spell_checker_client_(page_clients.spell_checker_client), | 
| use_counter_(page_clients.chrome_client && | 
| @@ -290,14 +291,18 @@ void Page::RefreshPlugins() { | 
| for (const Page* page : AllPages()) { | 
| // Clear out the page's plugin data. | 
| if (page->plugin_data_) | 
| -      page->plugin_data_ = nullptr; | 
| +      page->plugin_data_->ResetPluginData(); | 
| } | 
| } | 
|  | 
| -PluginData* Page::GetPluginData(SecurityOrigin* main_frame_origin) const { | 
| -  if (!plugin_data_ || | 
| +PluginData* Page::GetPluginData(SecurityOrigin* main_frame_origin) { | 
| +  if (!plugin_data_) | 
| +    plugin_data_ = PluginData::Create(); | 
| + | 
| +  if (!plugin_data_->Origin() || | 
| !main_frame_origin->IsSameSchemeHostPort(plugin_data_->Origin())) | 
| -    plugin_data_ = PluginData::Create(main_frame_origin); | 
| +    plugin_data_->UpdatePluginList(main_frame_origin); | 
| + | 
| return plugin_data_.Get(); | 
| } | 
|  | 
| @@ -628,6 +633,7 @@ DEFINE_TRACE(Page) { | 
| visitor->Trace(visual_viewport_); | 
| visitor->Trace(overscroll_controller_); | 
| visitor->Trace(main_frame_); | 
| +  visitor->Trace(plugin_data_); | 
| visitor->Trace(validation_message_client_); | 
| visitor->Trace(use_counter_); | 
| Supplementable<Page>::Trace(visitor); | 
|  |