12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)package org.chromium.chrome.browser.identity;
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.test.InstrumentationTestCase;
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.test.suitebuilder.annotation.SmallTest;
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.base.test.util.Feature;
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import javax.annotation.Nullable;
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public class UniqueIdentificationGeneratorFactoryTest extends InstrumentationTestCase {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @SmallTest
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @Feature({"ChromeToMobile", "Omaha", "Sync"})
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public void testSetAndGetGenerator() {
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGeneratorFactory.clearGeneratorMapForTest();
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGenerator gen = new TestGenerator();
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGeneratorFactory.registerGenerator("generator", gen, false);
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assertEquals(gen, UniqueIdentificationGeneratorFactory.getInstance("generator"));
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @SmallTest
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @Feature({"ChromeToMobile", "Omaha", "Sync"})
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public void testForceCanOverrideGenerator() {
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGeneratorFactory.clearGeneratorMapForTest();
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGenerator gen1 = new TestGenerator();
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGenerator gen2 = new TestGenerator();
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGenerator gen3 = new TestGenerator();
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGeneratorFactory.registerGenerator("generator", gen1, false);
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assertEquals(gen1, UniqueIdentificationGeneratorFactory.getInstance("generator"));
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGeneratorFactory.registerGenerator("generator", gen2, false);
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assertEquals(gen1, UniqueIdentificationGeneratorFactory.getInstance("generator"));
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGeneratorFactory.registerGenerator("generator", gen3, true);
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assertEquals(gen3, UniqueIdentificationGeneratorFactory.getInstance("generator"));
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @SmallTest
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @Feature({"ChromeToMobile", "Omaha", "Sync"})
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public void testGeneratorNotFoundThrows() {
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGeneratorFactory.clearGeneratorMapForTest();
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        UniqueIdentificationGenerator generator = null;
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        try {
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            generator = UniqueIdentificationGeneratorFactory.getInstance("generator");
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            fail("The generator does not exist, so factory should throw an error.");
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } catch (RuntimeException e) {
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            assertEquals(null, generator);
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private static class TestGenerator implements UniqueIdentificationGenerator {
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        @Override
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public String getUniqueId(@Nullable String salt) {
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return null;
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
60