1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_VISITEDLINK_RENDERER_VISITEDLINK_SLAVE_H_ 6 #define COMPONENTS_VISITEDLINK_RENDERER_VISITEDLINK_SLAVE_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/memory/shared_memory.h" 10 #include "components/visitedlink/common/visitedlink_common.h" 11 #include "content/public/renderer/render_process_observer.h" 12 13 namespace visitedlink { 14 15 // Reads the link coloring database provided by the master. There can be any 16 // number of slaves reading the same database. 17 class VisitedLinkSlave : public VisitedLinkCommon, 18 public content::RenderProcessObserver { 19 public: 20 VisitedLinkSlave(); 21 virtual ~VisitedLinkSlave(); 22 23 // RenderProcessObserver implementation. 24 virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; 25 26 // Message handlers. 27 void OnUpdateVisitedLinks(base::SharedMemoryHandle table); 28 void OnAddVisitedLinks(const VisitedLinkSlave::Fingerprints& fingerprints); 29 void OnResetVisitedLinks(); 30 31 private: 32 void FreeTable(); 33 34 // shared memory consists of a SharedHeader followed by the table 35 base::SharedMemory* shared_memory_; 36 37 DISALLOW_COPY_AND_ASSIGN(VisitedLinkSlave); 38 }; 39 40 } // namespace visitedlink 41 42 #endif // COMPONENTS_VISITEDLINK_RENDERER_VISITEDLINK_SLAVE_H_ 43