blob: 918912a141d1ba6e20d8ef056688b564b2cfe2c1 [file] [log] [blame]
// Copyright 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.
#ifndef COMPONENTS_TRANSLATE_CONTENT_BROWSER_BROWSER_CLD_DATA_PROVIDER_H_
#define COMPONENTS_TRANSLATE_CONTENT_BROWSER_BROWSER_CLD_DATA_PROVIDER_H_
#include <string>
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "ipc/ipc_listener.h"
namespace IPC {
class Message;
}
namespace translate {
// Browser-side interface responsible for providing CLD data.
// The implementation must be paired with a renderer-side implementation of
// the RendererCldDataProvider class:
// ../renderer/renderer_cld_data_provider.h
//
// The glue between them is typically a pair of request/response IPC messages
// using the "CldDataProviderMsgStart" IPCMessageStart enumerated constant from
// ipc_message_start.h
//
// In general, instances of this class should be obtained by using the
// BrowserCldDataProviderFactory::CreateBrowserCldProvider(...). For more
// information, see browser_cld_data_provider_factory.h.
class BrowserCldDataProvider : public IPC::Listener {
public:
BrowserCldDataProvider() {}
~BrowserCldDataProvider() override {}
// IPC::Listener implementation:
// If the specified message is a request for CLD data, invokes
// OnCldDataRequest() and returns true. In all other cases, this method does
// nothing. This method is defined as virtual in order to force the
// implementation to define the specific IPC message(s) that it handles.
// The default implementation does nothing and returns false.
bool OnMessageReceived(const IPC::Message&) override;
// Called when the browser process receives an appropriate message in
// OnMessageReceived, above. The implementation should attempt to locate
// the CLD data, cache any metadata required for accessing that data, and
// ultimately trigger a response by invoking SendCldDataResponse.
// The renderer process may poll for data, in which case this method may be
// repeatedly invoked. The implementation must be safe to call any number
// of times.
// The default implementation does nothing.
virtual void OnCldDataRequest() {}
// Invoked when OnCldDataRequest, above, results in a successful lookup or
// the data is already cached and ready to respond to. The implementation
// should take whatever action is appropriate for responding to the paired
// RendererCldDataProvider, typically by sending an IPC response.
// The default implementation does nothing.
virtual void SendCldDataResponse() {}
private:
DISALLOW_COPY_AND_ASSIGN(BrowserCldDataProvider);
};
} // namespace translate
#endif // COMPONENTS_TRANSLATE_CONTENT_BROWSER_BROWSER_CLD_DATA_PROVIDER_H_