1a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_apitest.h"
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/api/system_memory/memory_info_provider.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing core_api::system_memory::MemoryInfo;
12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockMemoryInfoProviderImpl : public MemoryInfoProvider {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockMemoryInfoProviderImpl() {}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual bool QueryInfo() OVERRIDE {
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    info_.capacity = 4096;
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    info_.available_capacity = 1024;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return true;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~MockMemoryInfoProviderImpl() {}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26a3f7b4e666c476898878fa745f637129375cd889Ben Murdochclass SystemMemoryApiTest: public ExtensionApiTest {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
28a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  SystemMemoryApiTest() {}
29a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual ~SystemMemoryApiTest() {}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ExtensionApiTest::SetUpInProcessBrowserTestFixture();
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    message_loop_.reset(new base::MessageLoopForUI);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<base::MessageLoop> message_loop_;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40a3f7b4e666c476898878fa745f637129375cd889Ben MurdochIN_PROC_BROWSER_TEST_F(SystemMemoryApiTest, Memory) {
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<MemoryInfoProvider> provider = new MockMemoryInfoProviderImpl();
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The provider is owned by the single MemoryInfoProvider instance.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MemoryInfoProvider::InitializeForTesting(provider);
44a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  ASSERT_TRUE(RunExtensionTest("system/memory")) << message_;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extensions
48